新闻详情

新闻详情

首页 / 资讯中心 / 详情

Operator SDK v1.6.0 升级指南:从组件配置、安全加固到 Catalog 构建的全量迁移清单

发布时间:2026/9/29 7:46:55来源:尧图网络
Operator SDK v1.6.0 升级指南:从组件配置、安全加固到 Catalog 构建的全量迁移清单
云原生后端开发工具微服务【免费下载链接】operator-sdkSDK for building Kubernetes applications. Provides high level APIs, useful abstractions, and project scaffolding.项目地址https://gitcode.com/gh_mirrors/op/operator-sdk点击查看免费下载本文基于 operator-sdk 仓库官方升级文档 v1.6.0.md面向使用ansible/v1、helm/v1、go/v2、go/v3及manifests/v2插件布局的既有 Operator 项目逐项讲解从 v1.5.x 升级到 v1.6.0 时需要手工完成的 12 类改动组件化配置、领导选举、指标与健康探针、安全上下文、ServiceAccount、Prometheus 指标端点、Catalog 构建目标等。读完本文你将获得一份可直接照做的迁移清单并能结合仓库内的 helm 样例工程 与 helm-operator 运行时代码验证每一项改动的真实落地形态。迁移前须知适用范围与升级背景v1.6.0 的升级改动主要针对非 Go 插件ansible/v1、helm/v1以及go/v2、go/v3、manifests/v2的通用配置。这些改动的共同动因是与 kubebuilder/controller-runtime 生态对齐把一批已弃用的命令行参数如--enable-leader-election、--metrics-addr替换为官方推荐写法--leader-elect、--metrics-bind-address提升 Operator 在共享命名空间下部署的安全性独立 ServiceAccount、securityContext加固为 Operator 开发者补齐自建 Catalog 镜像的 Makefile 工具链opm、catalog-build、catalog-push。在仓库当前的 helm 样例工程 中可以看到这些改动的最终形态可作为升级后的对照基准。一、可选为 ansible-operator / helm-operator 配置组件配置Component Config从 v1.6.0 起ansible/v1与helm/v1项目支持通过 Kubernetes Component Config 机制为 operator 提供配置。仓库内部实现internal/helm/flags/flag.go中的注释明确指出controller-runtime 已弃用 ComponentConfig 包该能力仅用于兼容既有项目未来版本会随 controller-runtime 升级而移除。如需启用需要改动 4 个文件① 新建config/default/manager_config_patch.yaml内容参考 helm 样例工程的度量补丁写法见 config/default在 manager 容器上挂载配置spec: template: spec: containers: - name: manager args: - --configcontroller_manager_config.yaml volumeMounts: - name: manager-config mountPath: /controller_manager_config.yaml subPath: controller_manager_config.yaml volumes: - name: manager-config configMap: name: manager-config② 新建config/manager/controller_manager_config.yaml写入组件配置内容如health.healthProbeBindAddress、leaderElection、metrics.bindAddress等 controller-runtime 支持的字段。③ 更新config/default/kustomization.yaml的resources列表追加补丁文件resources: ... - manager_config_patch.yaml④ 更新config/manager/kustomization.yaml加入configMapGenerator由 kustomize 从配置文件生成名为manager-config的 ConfigMapgeneratorOptions: disableNameSuffixHash: true configMapGenerator: - files: - controller_manager_config.yaml name: manager-config apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization images: - name: controller newName: quay.io/example/memcached-operator newTag: v0.0.1注意disableNameSuffixHash: true是关键——它保证生成的 ConfigMap 名称不含哈希后缀与 manager Deployment 中引用的manager-config名称精确匹配。二、为领导选举补充 RBAC 规则ansible/v1、helm/v1controller-runtime 在 v1.6.0 对应的版本中领导选举资源已从 ConfigMap 演进为Leasecoordination.k8s.io/v1。因此需要在config/rbac/leader_election_role.yaml中为coordination.k8s.io组和leases资源补充权限rules: - apiGroups: - - coordination.k8s.io resources: - configmaps - leases升级后的完整样例可直接参考 helm 样例的 leader_election_role.yaml它同时包含组的configmaps、events与coordination.k8s.io组的leases并对configmaps/leases授予get/list/watch/create/update/patch/delete全套 verbs。三、更新 Ansible Collections 版本ansible/v1若你的项目使用 Ansible 插件布局需要更新requirements.yml中的两个集合版本集合升级目标版本community.kubernetes1.2.1operator_sdk.util0.2.0collections: - name: community.kubernetes version: 1.2.1 - name: operator_sdk.util version: 0.2.0四、替换弃用的领导选举与指标地址参数helm/v1v1.6.0 将 helm-operator 运行时的两个命令行参数更名弃用参数推荐参数--enable-leader-election--leader-elect--metrics-addr--metrics-bind-address仓库中 helm-operator 的运行时代码internal/cmd/helm-operator/run/cmd.go为迁移提供了明确的兼容与校验逻辑同时传入新旧两个参数--leader-elect与--enable-leader-election会直接报错并退出提示only one of ... may be set同时传入--metrics-addr与--metrics-bind-address同样会被拒绝。也就是说升级时必须只保留新参数不能新旧并存。这些新参数对应的代码位置在 config/manager/manager.yamlargs: - --leader-elect - --leader-election-idmemcached-operator - --health-probe-bind-address:8081五、显式设置健康探针绑定地址helm/v1 与 ansible/v1v1.6.0 之前manager 的--health-probe-bind-address可能未显式声明健康检查端口随 controller-runtime 默认值漂移容易与 metrics 端口冲突。升级要求helm/v1在config/default/manager_auth_proxy_patch.yaml的 manager 容器 args 中加入--health-probe-bind-address:8081spec: template: spec: containers: - name: manager args: - --health-probe-bind-address:8081 ...ansible/v1同样加入该参数但端口为:6789spec: template: spec: containers: - name: manager args: - --health-probe-bind-address:6789 ...设置后livenessProbe/readinessProbe的探针端口必须与之一致。参考 helm 样例 manager.yaml探针分别访问/healthz与/readyz端口均为8081。六、为 manager Deployment 增加 securityContextansible/v1、helm/v1为满足 Kubernetes 安全加固要求在config/manager/manager.yaml中为 Pod 与 manager 容器分别设置安全上下文spec: ... template: ... spec: securityContext: runAsNonRoot: true containers: - name: manager securityContext: allowPrivilegeEscalation: false当前 helm 样例的 manager.yaml 已在此基础上进一步加固Pod 级设置了runAsNonRoot: true与seccompProfile: RuntimeDefault容器级设置了allowPrivilegeEscalation: false并 drop 全部 capabilitiescapabilities.drop: [ALL]完全符合 Kubernetes restricted Pod Security Standard。七、从 CSV 中移除 cert-manager 卷manifests/v2OLM 尚不支持 cert-manager 自动签发证书因此manifests/v2项目需要在config/manifests/kustomization.yaml中通过 JSON Patch 移除 manager Deployment 里的证书 volume 与 volumeMount把证书管理交给 OLM#patchesJson6902: #- target: # group: apps # version: v1 # kind: Deployment # name: controller-manager # namespace: system # patch: |- # # Remove the manager containers cert volumeMount, since OLM will create and mount a set of certs. # # Update the indices in this path if adding or removing containers/volumeMounts in the managers Deployment. # - op: remove # path: /spec/template/spec/containers/1/volumeMounts/0 # # Remove the cert volume, since OLM will create and mount a set of certs. # # Update the indices in this path if adding or removing volumes in the managers Deployment. # - op: remove # path: /spec/template/spec/volumes/0若项目未使用 webhook保持上述块整体注释即可若项目使用了 webhook取消注释并应用该 patch。注意 patch 中的下标containers/1、volumes/0与 manager Deployment 的容器/卷顺序强相关增删容器或卷时必须同步调整索引。八、为 Prometheus ServiceMonitor 指标端点配置 scheme 与 TLSgo/v2、go/v3、ansible/v1、helm/v1v1.6.0 修复了一个隐蔽问题/metrics端点虽然声明了https端口但因未配置tlsConfig实际并未以 HTTPS 提供服务。由于 kube-rbac-proxy 以 sidecar 形式保护该端点使用 Pod 内默认挂载的 ServiceAccount Token 即可正确完成认证。修改config/prometheus/monitor.yaml# config/prometheus/monitor.yaml spec: endpoints: - path: /metrics port: https scheme: https bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token tlsConfig: insecureSkipVerify: true selector: matchLabels: control-plane: controller-manager升级后的完整形态见 helm 样例的 monitor.yaml。该样例还附带一条重要生产提示insecureSkipVerify: true会关闭证书校验存在中间人攻击风险生产环境应改用 cert-manager 管理证书通过tlsConfig.caFile等方式引用受信 CA而不是直接跳过校验。若你的项目已移除 kube-rbac-proxy则必须自行通过正规 TLS 配置保护/metrics端点不能依赖上述 token 方案。九、新增opm与catalog-buildMakefile 目标go/v2、go/v3、ansible/v1、helm/v1v1.6.0 为需要自建 Catalog 或向既有 Catalog 追加 bundle 的开发者引入了opm、catalog-build、catalog-push三个 Makefile 目标。在 Makefile 末尾追加.PHONY: opm OPM ./bin/opm opm: ifeq (,$(wildcard $(OPM))) ifeq (,$(shell which opm 2/dev/null)) { \ set -e ;\ mkdir -p $(dir $(OPM)) ;\ curl -sSLo $(OPM) https://github.com/operator-framework/operator-registry/releases/download/v1.19.1/$(OS)-$(ARCH)-opm ;\ chmod x $(OPM) ;\ } else OPM $(shell which opm) endif endif BUNDLE_IMGS ? $(BUNDLE_IMG) CATALOG_IMG ? $(IMAGE_TAG_BASE)-catalog:v$(VERSION) ifneq ($(origin CATALOG_BASE_IMG), undefined) FROM_INDEX_OPT : --from-index $(CATALOG_BASE_IMG) endif .PHONY: catalog-build catalog-build: opm $(OPM) index add --container-tool docker --mode semver --tag $(CATALOG_IMG) --bundles $(BUNDLE_IMGS) $(FROM_INDEX_OPT) .PHONY: catalog-push catalog-push: ## Push the catalog image. $(MAKE) docker-push IMG$(CATALOG_IMG)Go 项目还需额外追加 OS/ARCH 变量供opm下载脚本使用OS $(shell go env GOOS) ARCH $(shell go env GOARCH)当前仓库的 helm 样例 Makefile 已给出这套目标的演进版本关键差异与用法说明catalog-build使用opm index add --mode semver即按语义化版本排序将 bundle 追加进 Catalog 索引BUNDLE_IMGS支持逗号分隔多个 bundle 镜像如make catalog-build BUNDLE_IMGSexample.com/operator-bundle:v0.1.0,example.com/operator-bundle:v0.2.0这些镜像必须已推送且可被拉取若设置CATALOG_BASE_IMG指向既有 Catalog 镜像会追加--from-index $(CATALOG_BASE_IMG)参数实现在既有 Catalog 上增量添加 bundle。十、变更BUNDLE_IMG并新增IMAGE_TAG_BASE变量go/v2、go/v3、ansible/v1、helm/v1为了支持make bundle-build bundle-push catalog-build catalog-push一键链路并把镜像仓库信息固化进 Makefilev1.6.0 做了如下变量调整IMAGE_TAG_BASE ? registry/operator name -BUNDLE_IMG ? controller-bundle:$(VERSION) BUNDLE_IMG ? $(IMAGE_TAG_BASE)-bundle:v$(VERSION)命名规则IMAGE_TAG_BASE作为仓库与镜像名前缀-bundle:v$(VERSION)与-catalog:v$(VERSION)分别构成 bundle 与 catalog 镜像标签。例如设置IMAGE_TAG_BASE ? foo/bar-operator后make bundle-build bundle-push构建并推送foo/bar-operator-bundle:v0.0.1make catalog-build catalog-push构建并推送foo/bar-operator-catalog:v0.0.1两者最终都被推送到docker.io/foo命名空间。现代样例如 helm 样例 Makefile 所示同时声明了IMAGE_TAG_BASE、BUNDLE_IMG、CATALOG_IMG三者并支持通过make bundle-build BUNDLE_IMGsome-registry/project-name-bundle:tag覆盖默认值。十一、为项目引入controller-managerServiceAccountansible/v1、helm/v1v1.6.0 起operator-sdk init会默认脚手架一个非默认 ServiceAccountcontroller-manager以提升 Operator 部署在共享命名空间时的安全性避免直接使用defaultServiceAccount。迁移既有项目需要# Create the ServiceAccount. cat EOF config/rbac/service_account.yaml apiVersion: v1 kind: ServiceAccount metadata: name: controller-manager namespace: system EOF # Add it to the list of RBAC resources. echo - service_account.yaml config/rbac/kustomization.yaml # Update all RoleBinding and ClusterRoleBinding subjects that reference the operators ServiceAccount. find config/rbac -name *_binding.yaml -exec sed -i -E s/ name: default/ name: controller-manager/g {} \; # Add the ServiceAccount name to the manager Deployments spec.template.spec.serviceAccountName. sed -i -E s/([ ])(terminationGracePeriodSeconds:)/\1serviceAccountName: controller-manager\n\1\2/g config/manager/manager.yaml上述命令产生的完整 diff 如下# config/manager/manager.yaml requests: cpu: 100m memory: 20Mi serviceAccountName: controller-manager terminationGracePeriodSeconds: 10 # config/rbac/auth_proxy_role_binding.yaml name: proxy-role subjects: - kind: ServiceAccount - name: default name: controller-manager namespace: system # config/rbac/kustomization.yaml resources: - service_account.yaml - role.yaml - role_binding.yaml - leader_election_role.yaml # config/rbac/leader_election_role_binding.yaml name: leader-election-role subjects: - kind: ServiceAccount - name: default name: controller-manager namespace: system # config/rbac/role_binding.yaml name: manager-role subjects: - kind: ServiceAccount - name: default name: controller-manager namespace: system # config/rbac/service_account.yaml apiVersion: v1 kind: ServiceAccount metadata: name: controller-manager namespace: system仓库 helm 样例的 manager.yaml 中serviceAccountName: controller-manager已到位service_account.yaml 也作为独立 RBAC 资源存在——这是升级后最直接的对照物。注意sed的-i -E用法在 GNU sed 与 BSD sedmacOS下略有差异macOS 上可先备份再原地替换。十二、为 Makefile 增加help目标helm/v1、ansible/v1Ansible/Helm 项目的 Makefile 从 v1.6.0 起提供help目标类似--help输出可从对应样例工程的 Makefile 中直接复制。仓库 helm 样例 Makefile 中的实现如下.PHONY: help help: ## Display this help. awk BEGIN {FS :.*##; printf \nUsage:\n make \033[36mtarget\033[0m\n} /^[a-zA-Z_0-9-]:.*?##/ { printf \033[36m%-15s\033[0m %s\n, $$1, $$2 } /^##/ { printf \n\033[1m%s\033[0m\n, substr($$0, 5) } $(MAKEFILE_LIST)它的工作原理是扫描 Makefile 中所有目标: ## 描述形式的行并按## 分类分组输出。要让新增目标自动出现在make help中只需在目标定义后追加##注释即可例如catalog-push: ## Push the catalog image.。升级核对清单按顺序完成以下检查即可认为项目已对齐 v1.6.0✅ 组件配置4 个文件的创建/修改若需启用✅leader_election_role.yaml含coordination.k8s.io/leases规则✅requirements.yml集合版本为community.kubernetes 1.2.1/operator_sdk.util 0.2.0✅ 运行参数仅保留--leader-elect、--metrics-bind-address新旧参数不可共存见 run/cmd.go 的校验逻辑✅ 健康探针地址显式声明helm:8081/ ansible:6789✅ manager Deployment 具备 Pod 级与容器级securityContext✅ webhook 项目已取消注释 cert-manager 移除 patch✅monitor.yaml含scheme: httpsbearerTokenFiletlsConfig✅ Makefile 含opm/catalog-build/catalog-push与IMAGE_TAG_BASE✅ RBAC 与 Deployment 全部切换到controller-managerServiceAccount。其中 4、6、8、9、10 五项可直接以 helm 样例工程 作为升级完成态逐文件比对确保迁移结果与官方脚手架完全一致。赞分享云原生后端开发工具微服务【免费下载链接】operator-sdkSDK for building Kubernetes applications. Provides high level APIs, useful abstractions, and project scaffolding.项目地址https://gitcode.com/gh_mirrors/op/operator-sdk点击查看免费下载相关推荐Operator SDK v1.38.0 升级指南迁移 Kubernetes 1.30 与 Kubebuilder v4重构 Metrics 端点安全Operator SDK v1.38.0 升级指南迁移 Kubernetes 1.30 与 Kubebuilder v4重构 Metrics 端点安全 Op云原生后端开发工具微服务Synapse安全加固完全清单部署、配置与升级风险一次性搞清Synapse安全加固完全清单部署、配置与升级风险一次性搞清 Synapse 安全加固是自建 Matrix 服务器的必修课。Synapse 是用 Python后端即时通讯从配置崩溃到无缝升级2025 Marlin固件版本迁移全攻略从配置崩溃到无缝升级2025 Marlin固件版本迁移全攻略 Marlin固件作为RepRap 3D打印机的优化固件基于Arduino平台是全球3D打印爱智能硬件嵌入式固件物联网上一篇洛雪音乐音源配置完整实操从搜不到歌到全平台无损的倒序解密下一篇Whispering发布流程详解从代码提交到应用商店上架的全流程创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

亚马逊云代理商:在 AWS 上部署 Hermes Agent 的 TaoToken 配置与验证指南 2026/9/29 8:41:37

亚马逊云代理商:在 AWS 上部署 Hermes Agent 的 TaoToken 配置与验证指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
OpenClaw 配合 Ollama cloud 环境搭建:TaoToken 统一 Key 接入配置指南 2026/9/29 8:41:36

OpenClaw 配合 Ollama cloud 环境搭建:TaoToken 统一 Key 接入配置指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
再见,Markdown!你好,HTML!用 TaoToken 统一 Key 打通 AI 工具链的配置骨架 2026/9/29 8:41:36

再见,Markdown!你好,HTML!用 TaoToken 统一 Key 打通 AI 工具链的配置骨架

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
大模型微调后,如何判断它是不是“变聪明”了?这套评估方法论请收好 2026/9/29 8:41:35

大模型微调后,如何判断它是不是“变聪明”了?这套评估方法论请收好

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
2026 全栈开发范式革命:用 TaoToken 统一 Key 打通 AI Agent 的 MCP 工作流 2026/9/29 8:41:34

2026 全栈开发范式革命:用 TaoToken 统一 Key 打通 AI Agent 的 MCP 工作流

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
FusionCloud私有云测试方案:从能跑到敢上生产的验收流水线 2026/9/29 8:41:28

FusionCloud私有云测试方案:从能跑到敢上生产的验收流水线

简介:这份FusionCloud私有云计算平台测试方案面向云计算运维工程师、测试人员及华为云平台实施人员,用于指导私有云环境的系统性验证与验收。文档围绕虚拟化计算、分布式存储、VPC网络等核心模块展开,涵盖架构与功能、可管理性、基本性能、安…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉