+ 基础操作 ```shell mkdir redis-operator && cd redis-operator operator-sdk init --domain ifbiu.com --plugins=helm operator-sdk create api --group app --version v1 --kind Redis --helm-chart-repo http://charts.bitnami.com/bitnami --helm-chart redis # 如果没有redis目录,用helm pull去拉一个 cd helm-charts/redis/ && helm dependencies build # 重新执行 create api operator-sdk create api --group app --version v1 --kind Redis --helm-chart-repo http://charts.bitnami.com/bitnami --helm-chart ./helm-charts/redis # 打包并上传到docker hub make docker-build docker-push IMG="ifbiu/redis-operator:v0.0.1" # 部署到crd make deploy IMG="ifbiu/redis-operator:v0.0.1" # 部署生成的manifest kubectl apply -f config/samples/app_v1_redis.yaml # 加权限,加完重启pod kubectl create clusterrolebinding redis-operator-cluster-admin --serviceaccout=redis-operator-system:redis-operator-controller-manager --clusterrole=cluster-admin # 卸载 make uninstall ``` + 安装olm ```shell operator-sdk olm install ``` + 执行`make bundle` ```txt /opt/go/go1.24.0/bin/operator-sdk generate kustomize manifests -q Display name for the operator (required): > redis-operator Description for the operator (required): > redis-operator Providers name for the operator (required): > redis-operator Any relevant URL for the provider name (optional): > Comma-separated list of keywords for your operator (required): > redis,operator Comma-separated list of maintainers and their emails (e.g. 'name1:email1, name2:email2') (required): > candide;biuvip@163.com cd config/manager && /home/candide/Code/k8s/redis-operator/bin/kustomize edit set image controller=controller:latest /home/candide/Code/k8s/redis-operator/bin/kustomize build config/manifests | /opt/go/go1.24.0/bin/operator-sdk generate bundle -q --overwrite --version 0.0.1 WARN[0000] ClusterServiceVersion validation: [CSVFileNotValid] (redis-operator.v0.0.1) csv.Spec.minKubeVersion is not informed. It is recommended you provide this information. Otherwise, it would mean that your operator project can be distributed and installed in any cluster version available, which is not necessarily the case for all projects. INFO[0000] Creating bundle.Dockerfile INFO[0000] Creating bundle/metadata/annotations.yaml INFO[0000] Bundle metadata generated successfully /opt/go/go1.24.0/bin/operator-sdk bundle validate ./bundle WARN[0000] Warning: Value : (redis-operator.v0.0.1) csv.Spec.minKubeVersion is not informed. It is recommended you provide this information. Otherwise, it would mean that your operator project can be distributed and installed in any cluster version available, which is not necessarily the case for all projects. INFO[0000] All validation tests have completed successfully ``` ```shell # 打包与提交 make bundle-build bundle-push # 验证 operator-sdk bundle validate $BUNDLE_IMG # 安装到集群 operator-sdk run bundle $BUNDLE_IMG ```