云服务器内容精选

  • 定义API 在设计的CR spec中,包含size、image、storage属性,因此需要修改api/v1/hwfka_types.go中HwfkaSpec和HwfkaStatus部分,为应用定义参数和状态属性。 package v1import (corev1 "k8s.io/api/core/v1""k8s.io/apimachinery/pkg/api/resource"metav1 "k8s.io/apimachinery/pkg/apis/meta/v1")// HwfkaSpec defines the desired state of Hwfkatype HwfkaSpec struct {// INSERT ADDITIONAL SPEC FIELDS - desired state of cluster// Important: Run "make" to regenerate code after modifying this file// +kubebuilder:validation:Minimum=1// +kubebuilder:validation:Maximum=3// +kubebuilder:validation:ExclusiveMaximum=false // 包含最大值Size int32 `json:"size"` // Hwfka 应用包含的 broker 数量Image string `json:"image"` // Hwfka 镜像地址Storage *StorageSpec `json:"storage"` // Hwfka 数据存储相关配置}type StorageSpec struct {Class string `json:"class"`AccessModes corev1.PersistentVolumeAccessMode `json:"accessModes"`Size resource.Quantity `json:"size"`// 华为公有云 EVS 场景需额外指定 diskType, region, zoneDiskType string `json:"diskType,omitempty"` // omitempty 表示可以为空Region string `json:"region,omitempty"`Zone string `json:"zone,omitempty"`}// HwfkaStatus defines the observed state of Hwfkatype HwfkaStatus struct {// INSERT ADDITIONAL STATUS FIELD - define observed state of cluster// Important: Run "make" to regenerate code after modifying this filePhase string `json:"phase,omitempty"` // Hwfka 实例安装状态Server string `json:"server,omitempty"` // Hwfka 访问地址} 使用Kubebuilder,可通过在API结构的属性上定义Markers,自动生成CRD中的spec.validation.openAPIV3Schema,即基于OpenAPI的校验规则,以便校验用户创建的CR中字段值的合法性。如上述设置size属性的最小值和最大值: // +kubebuilder:validation:Minimum=1// +kubebuilder:validation:Maximum=3 详细使用方法参见:CRD Validation。每次修改API定义后,需要执行命令自动重新生成代码和CRD: $ make generate$ make manifests 父主题: 实现Operator