ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Cilium ClusterMesh 关闭指南:cilium clustermesh disable 命令详解与底层 Helm 原理

Cilium ClusterMesh 关闭指南:cilium clustermesh disable 命令详解与底层 Helm 原理 Cilium ClusterMesh 关闭指南cilium clustermesh disable 命令详解与底层 Helm 原理【免费下载链接】ciliumeBPF-based Networking, Security, and Observability项目地址: https://gitcode.com/GitHub_Trending/ci/ciliumCilium 的cilium clustermesh disable命令用于通过 Helm 关闭当前集群的 ClusterMesh 能力。本文以该命令的官方参考文档为主体结合 cilium-cli 命令行实现与 Helm Chart 配置系统讲解命令的完整用法、全部继承参数、底层 Helm 变更内容、执行前后的验证方法以及回滚与恢复手段帮助你在多集群运维中安全地停用 ClusterMesh。命令概览关闭 ClusterMesh 的标准入口cilium clustermesh disable是 Cilium CLI 中clustermeshMulti Cluster Management子命令族的一员其官方定义位于 Documentation/cmdref/cilium_clustermesh_disable.md核心用途为Disable ClusterMesh ability in a cluster using Helm该命令只对当前集群生效用于关闭本集群的 ClusterMesh 能力与之相对的是cilium clustermesh enable启用 ClusterMesh、cilium clustermesh connect连接远程集群、cilium clustermesh disconnect断开远程集群连接、cilium clustermesh status查看 ClusterMesh 状态。完整的子命令族定义位于 cilium-cli/cli/clustermesh.go其中disable子命令对应newCmdClusterMeshDisableWithHelm。注意disable关闭的是“ClusterMesh 能力”与disconnect仅移除与某个远程集群的连接保留 ClusterMesh 整体能力是两种不同粒度的操作。若只是要切断某个远端集群的互联应使用cilium clustermesh disconnect其独立参数定义在 Documentation/cmdref/cilium_clustermesh_disconnect.md。命令语法与执行环境cilium clustermesh disable [flags]命令本身仅有一个本地选项见下文“Options”小节核心行为依赖继承自父命令的 Kubernetes 访问参数。执行前需保证本机已安装ciliumCLI本仓库即 Cilium 项目CLI 源码位于 cilium-cli/已通过kubeconfig或--context指定目标集群目标集群已通过 Helm 安装 CiliumHelm release 默认名为cilium可通过--helm-release-name修改。执行流程对应 cilium-cli/cli/clustermesh.go命令内部将RootParams中的Namespace、ImpersonateAs、ImpersonateGroups、HelmReleaseName透传给clustermesh.DisableWithHelm随后调用该函数执行 Helm 升级并更新 release。若执行失败会以Unable to disable ClusterMesh: ...的错误信息终止。Options命令参数完整说明disable 专属选项选项说明-h, --help显示disable命令的帮助信息该命令不需要任何业务参数——它不做任何条件判断直接通过 Helm 覆盖值关闭 ClusterMesh 相关组件详见下一节“底层实现”。继承自父命令的选项Options inherited from parent commands以下参数继承自cilium clustermesh父命令定义见 Documentation/cmdref/cilium_clustermesh.md用于确定目标集群与 Helm release选项默认值说明--as string无以指定用户名普通用户或 ServiceAccount身份模拟执行操作--as-group stringArray无模拟的用户组可重复指定多个组--context string无使用的 Kubernetes 配置 context--helm-release-name stringciliumHelm release 名称--kubeconfig string无kubeconfig 文件路径-n, --namespace stringkube-systemCilium 所在命名空间也可通过环境变量CILIUM_NAMESPACE设置典型使用示例# 使用默认 context关闭 kube-system 中名为 cilium 的 release 的 ClusterMesh cilium clustermesh disable # 显式指定 kubeconfig 与 context cilium clustermesh disable --kubeconfig ~/.kube/config --context prod-cluster # 指定非默认命名空间与 release 名称 cilium clustermesh disable -n cilium-system --helm-release-name my-cilium这些继承参数与cilium clustermesh enable共享同一套语义可对照 Documentation/cmdref/cilium_clustermesh_enable.md保证启停操作在同一集群上的对称性。底层实现disable 实际执行的 Helm 变更cilium clustermesh disable的实质是调用 cilium-cli/clustermesh/clustermesh.go 中的DisableWithHelm函数。从源码看该函数依次完成三件事构造 Helm 字符串覆盖值helmStrValues : []string{ clustermesh.useAPIServerfalse, clustermesh.config.enabledfalse, }即关闭 ClusterMesh API ServeruseAPIServerfalse并禁用 ClusterMesh 配置生成config.enabledfalse。清空远程集群配置列表通过unstructured.SetNestedSlice(vals, []any{}, clustermesh, config, clusters)将clustermesh.config.clusters置为空切片移除所有已配置的远程集群条目避免残留连接配置。执行 Helm upgrade以ResetValues: false、ReuseValues: true的方式调用helm.Upgrade与EnableWithHelm相同的升级参数见同文件 cilium-cli/clustermesh/clustermesh.go。其中ReuseValues: true表示复用 release 中已有的其他用户自定义值只覆盖本次传入的键因此不会影响 Cilium 的其他 Helm 配置。与EnableWithHelm相比后者会生成clustermesh.apiserver.kvstoremesh.enabled等一系列值见 cilium-cli/clustermesh/clustermesh.godisable不读取任何参数行为固定、可预测适合在脚本与自动化流程中安全调用。等价的 Helm 命令视角从 Helm 的角度cilium clustermesh disable等效于对 Cilium Helm release 执行一次带以下值覆盖的升级helm upgrade cilium cilium/cilium -n kube-system \ --reuse-values \ --set clustermesh.useAPIServerfalse \ --set clustermesh.config.enabledfalse \ --set-string clustermesh.config.clusters[]执行后的验证关闭是异步的 Helm 升级过程执行完成后建议通过以下方式验证查看 ClusterMesh 状态cilium clustermesh status若关闭成功状态输出中不应再出现 ClusterMesh 已连接/已启用信息。status命令的实现同样位于 cilium-cli/clustermesh/clustermesh.go。检查相关 Pod 是否被回收ClusterMesh API Serverclustermesh-apiserver、KVStoreMesh 等组件随useAPIServerfalse不再被调度可通过kubectl get pods -n kube-system -l k8s-appclustermesh-apiserver等标签查询确认其消失。核对 Helm 值helm get values cilium -n kube-system确认clustermesh.useAPIServer为false、clustermesh.config.enabled为false、clustermesh.config.clusters为空。恢复与相关操作disable并不是破坏性删除它只更新 Helm release 中的值Cilium 本体与原有配置仍保留因此可随时恢复重新启用执行cilium clustermesh enable可用--enable-kvstoremesh与--service-type定制控制面暴露方式参数见 Documentation/cmdref/cilium_clustermesh_enable.md再通过cilium clustermesh connect重新接入远程集群彻底卸载如需完全移除 Cilium含 ClusterMesh应使用cilium uninstall其实现会先尝试通过hubble.DisableWithHelm优雅关闭 Hubble见 cilium-cli/cli/install.go这与disable的“仅改 Helm 值”思路一致——即关闭能力优先于删除资源。常见问题执行后仍然显示已启用检查是否使用了正确的--context/--kubeconfig/--namespace确认目标 release 名称与--helm-release-name一致disable仅作用于其解析到的那个 release。能否只断开某个集群而不是全部关闭不能disable是全局关闭单集群断开请使用cilium clustermesh disconnect --destination-context ctx其参数定义见 Documentation/cmdref/cilium_clustermesh_disconnect.md。为什么不需要指定集群名因为disable针对的是本地集群的 ClusterMesh 能力本身远程集群关系由clusters列表承载命令会自动清空该列表无需逐一指定。小结cilium clustermesh disable是一个零参数、行为确定的多集群管理命令它通过 Helm 升级将clustermesh.useAPIServer与clustermesh.config.enabled置为false并清空clustermesh.config.clusters从而在当前集群关闭 ClusterMesh 能力。理解其背后的DisableWithHelm实现cilium-cli/clustermesh/clustermesh.go与继承参数语义你就能在多集群环境中安全、可逆地管理 ClusterMesh 的启停。【免费下载链接】ciliumeBPF-based Networking, Security, and Observability项目地址: https://gitcode.com/GitHub_Trending/ci/cilium创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表