go17/skills/operator/README.md

50 lines
1.0 KiB
Markdown
Raw Permalink Normal View History

2025-03-23 18:07:50 +08:00
# 如何开发 k8s operator
2025-03-30 10:08:43 +08:00
## 准备
2025-03-23 18:07:50 +08:00
```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"}
2025-03-30 10:08:43 +08:00
```
## 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开发