在客户端go中创建types.go时遇到问题。
kind: Kafka
metadata:
name: my-cluster
namespace: sample-system
spec:
kafka:
version: 2.5.0
replicas: 3
listeners:
plain:
authentiation:
type: scram-sha-512
tls:
authentiation:
type: tls
根据下面的Kind";卡夫卡">。。。
我有Kafka Kind的模式如下
// Kafka is the Schema for the kafkas API
type Kafka struct {
metav1.TypeMeta `json:",inline"`
metav1.ObjectMeta `json:"metadata,omitempty"`
Spec KafkaSpec `json:"spec,omitempty"`
Status KafkaStatus `json:"status,omitempty"`
}
而当我需要定义Spec.kafka类型时
// KafkaSpec defines the desired state of KafkaBundle
type KafkaSpec struct {
// INSERT ADDITIONAL SPEC FIELDS - desired state of cluster
// Important: Run "make" to regenerate code after modifying this file
Kafka *Kafka `json:"kafka"`
// Foo is an example field of Kafka. Edit Kafka_types.go to remove/update
Foo string `json:"foo,omitempty"`
}
我面临两个kafka结构类型的问题。这是错误的。
您的结构Kafka
有一个依赖结构KafkaSpec
,而结构KafkaSpec
依赖于结构Kafka
。如果你研究结构,你会创建一个循环依赖,这可能是一个问题。我建议遵循以下结构,
主结构Kafka
// Kafka is the Schema for the kafkas API
type Kafka struct {
metav1.TypeMeta `json:",inline"`
metav1.ObjectMeta `json:"metadata,omitempty"`
Spec KafkaSpec `json:"spec,omitempty"`
Status KafkaStatus `json:"status,omitempty"`
}
构造Spec
,它是Kafka
的子级。
// Spec defines the desired state of KafkaBundle
type Spec struct {
// INSERT ADDITIONAL SPEC FIELDS - desired state of cluster
// Important: Run "make" to regenerate code after modifying this file
Kafka *KafkaSpec `json:"kafka"`
// Foo is an example field of Kafka. Edit Kafka_types.go to remove/update
Foo string `json:"foo,omitempty"`
}
结构KafkaSpec
是结构Spec
的子级
type KafkaSpec struct {
Replicas int `json:"replicas"`
Listeners *Listners
}
类似地,为Plain
和Authentication
创建一个结构。
我希望这能解决你的问题。