# 如何开发 k8s operator ## 准备 ```sh # https://github.com/kubernetes-sigs/kubebuilder/releases/tag/v4.5.1 curl -L -o kubebuilder "https://go.kubebuilder.io/dl/latest/$(go env GOOS)/$(go env GOARCH)" chmod +x kubebuilder && sudo mv kubebuilder /usr/local/bin/ ``` ```sh kubebuilder version Version: main.version{KubeBuilderVersion:"4.5.1", KubernetesVendor:"1.32.1", GitCommit:"0ace7a8753c52b35014e43edc2a0b0454b78e769", BuildDate:"2025-02-21T20:16:18Z", GoOs:"darwin", GoArch:"arm64"} ``` ## CRD开发(API) 1. 编辑CRD ```sh make manifests make generate ``` 2. 安装 ```sh make install ``` 3. 编辑样例 ```yaml apiVersion: devops.go17/v1beta1 kind: AccessBinding metadata: labels: app.kubernetes.io/name: operator app.kubernetes.io/managed-by: kustomize name: accessbinding-sample spec: namespace: 'default' deployment: 'nginx-test' ``` 4. 验证 ```sh kubectl apply -f config/samples/devops_v1beta1_accessbinding.yaml kubectl get AccessBinding kubectl delete AccessBinding accessbinding-sample ``` ## Controller开发