如何开发 k8s operator
准备
# 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/
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)
- 编辑CRD
make manifests
make generate
- 安装
make install
- 编辑样例
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'
- 验证
kubectl apply -f config/samples/devops_v1beta1_accessbinding.yaml
kubectl get AccessBinding
kubectl delete AccessBinding accessbinding-sample
Controller开发