问题描述
在client-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
按照以下种类“卡夫卡” ...
我对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
创建一个结构。
我希望这可以解决您的问题。