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版本的一致性展开。
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 | 自动化版本比对脚本 |
2.4 环境验证清单
在进入准入控制校验测试之前,请逐项确认以下环境准备项:
- Kubernetes集群:所有节点kubelet版本一致,API Server ≥ v1.28,etcd ≥ v3.5.9。
- Helm v3:已安装v3.14.4+,已添加cilium官方仓库,可正常执行
helm search repo。 - cilium-cli:已安装v0.16.0+,可执行
cilium status且返回正常。 - kubectl:版本与API Server对齐,可访问ValidatingWebhookConfiguration资源。
- 网络插件:集群内无其他CNI冲突(如flannel、calico),建议使用干净集群。
- 证书管理:确保集群有可用的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