2. 环境准备:Kubernetes集群版本要求、Cilium安装方式选择、Helm与CLI工具准备

在开始准入控制校验与版本漂移测试之前,必须搭建一个符合最低版本要求、组件齐全且可复现的测试环境。本节将明确Kubernetes集群的版本基线、Cilium的安装策略以及Helm与CLI工具的选型与准备步骤。

2.1 Kubernetes集群版本要求

Cilium对Kubernetes API Server的版本有严格依赖,尤其是当启用准入控制器(ValidatingAdmissionWebhook / MutatingAdmissionWebhook)时,集群版本必须满足以下条件:

组件 最低版本 推荐版本 说明
Kubernetes API Server v1.21 v1.28+ 准入Webhook在v1.21进入GA,v1.28支持更完善的CEL表达式
kubelet v1.21 v1.28+ 需与API Server大版本对齐,避免kubelet版本漂移
etcd v3.4.13 v3.5.9+ etcd版本过低会导致Cilium Operator watch超时
CoreDNS v1.8.0 v1.11.0+ 用于Cilium ClusterMesh与DNS-based策略
版本漂移风险提示: 如果集群中存在多个版本的kubelet节点(例如v1.25与v1.28混部),Cilium Agent在解析Node对象时可能产生CRD缓存不一致,导致准入控制校验误判。建议测试环境使用统一版本。

2.2 Cilium安装方式选择

Cilium支持多种安装方式,但在准入控制校验与版本漂移测试场景下,推荐使用Helm Chart作为唯一安装手段。CLI方式仅用于快速验证,不适合版本管理与回滚。

安装方式 适用场景 版本管理能力 准入控制支持 推荐度
Helm Chart (官方仓库) 生产/测试/版本漂移测试 强(支持版本锁定、回滚、diff) 完整(可配置webhook与caBundle) ⭐⭐⭐⭐⭐
cilium-cli install 快速体验/CI临时环境 弱(无版本锁定,依赖CLI版本) 部分(自动生成webhook配置) ⭐⭐⭐
静态YAML (kubectl apply) 离线环境/定制化部署 弱(需手动管理版本) 需手动注入caBundle ⭐⭐
Operator Lifecycle Manager (OLM) OpenShift环境 中(依赖OLM版本策略) 受限(webhook配置由OLM管理) ⭐⭐
测试环境决策: 本课程所有测试流程均基于 Helm Chart v0.15.0+ 安装Cilium v1.15.x。Helm values文件将作为版本漂移的“基线锚点”,后续所有准入校验规则都围绕Helm values与CRD版本的一致性展开。
Cilium安装方式对比与选择流程 选择安装方式 Helm Chart 版本锁定 · 回滚 · diff cilium-cli install 快速体验 · 无版本锁定 准入控制Webhook配置能力 推荐:Helm Chart + values锁定

2.3 Helm与CLI工具准备

在测试环境中,需要同时安装Helm v3和cilium-cli。Helm负责版本化部署与回滚,cilium-cli负责快速状态检查与connectivity测试。两者分工明确,不可相互替代。

2.3.1 Helm v3 安装与配置

# 下载Helm v3.14.0+(推荐v3.14.4)
curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3
chmod +x get_helm.sh
./get_helm.sh --version v3.14.4

# 验证安装
helm version --short
# 输出示例:v3.14.4+g81b902d

# 添加Cilium官方Helm仓库
helm repo add cilium https://helm.cilium.io/
helm repo update

# 查看可用版本(用于版本漂移测试)
helm search repo cilium/cilium --versions | head -20
版本锁定最佳实践: 在版本漂移测试中,每次部署Cilium前必须执行 helm show values cilium/cilium --version <目标版本> 导出完整values文件,并与基线values进行diff。Helm的 --version 参数是防止版本漂移的第一道防线。

2.3.2 cilium-cli 安装与版本对齐

# 下载cilium-cli v0.16.0+(需与Cilium Agent大版本匹配)
CILIUM_CLI_VERSION=$(curl -s https://raw.githubusercontent.com/cilium/cilium-cli/main/stable.txt)
curl -fsSL -o cilium-linux-amd64.tar.gz \
  https://github.com/cilium/cilium-cli/releases/download/${CILIUM_CLI_VERSION}/cilium-linux-amd64.tar.gz
tar xzf cilium-linux-amd64.tar.gz
sudo mv cilium /usr/local/bin/

# 验证安装
cilium version --client
# 输出示例:cilium-cli: v0.16.0 compiled with go1.22.0

# 检查集群状态(快速验证)
cilium status --wait
工具 版本要求 核心用途 版本漂移测试中的角色
Helm v3 ≥ v3.14.0 部署、升级、回滚、values管理 基线版本锁定、diff对比、回滚验证
cilium-cli ≥ v0.16.0 状态检查、connectivity测试、sysdump 快速验证Agent版本、检测版本不一致
kubectl ≥ v1.28 CRD查询、webhook配置管理 检查ValidatingWebhookConfiguration对象
jq / yq ≥ 1.6 JSON/YAML解析与diff 自动化版本比对脚本
Helm与CLI工具在版本漂移测试中的协作关系 Helm v3 版本锁定 · values管理 helm upgrade --version Kubernetes API ValidatingWebhookConfiguration CRD版本校验 cilium-cli 状态检查 · connectivity cilium status --version 版本漂移检测流程:Helm values diff → CRD版本校验 → CLI验证 协作要点 • Helm负责“期望状态”的版本锁定与回滚 • cilium-cli负责“实际状态”的版本采集与漂移告警 • 准入控制Webhook在API层面拦截版本不一致的变更

2.4 环境验证清单

在进入准入控制校验测试之前,请逐项确认以下环境准备项:

  1. Kubernetes集群:所有节点kubelet版本一致,API Server ≥ v1.28,etcd ≥ v3.5.9。
  2. Helm v3:已安装v3.14.4+,已添加cilium官方仓库,可正常执行 helm search repo。
  3. cilium-cli:已安装v0.16.0+,可执行 cilium status 且返回正常。
  4. kubectl:版本与API Server对齐,可访问ValidatingWebhookConfiguration资源。
  5. 网络插件:集群内无其他CNI冲突(如flannel、calico),建议使用干净集群。
  6. 证书管理:确保集群有可用的cert-manager或自签名CA,用于Webhook证书注入。
快速验证命令:
# 验证集群版本一致性
kubectl get nodes -o wide | awk '{print $2, $5}'

# 验证Helm与CLI版本
helm version --short && cilium version --client

# 验证准入Webhook API可用
kubectl api-resources | grep ValidatingWebhookConfiguration