2. 测试环境准备:安装Helm、安装Chart Testing工具(ct)、配置Kubernetes集群(Minikube/Kind)
在进行 Helm Chart 模板的单元测试与集成测试之前,必须搭建一套完整、可复现的本地测试环境。本章将指导你完成三个核心组件的安装与配置:Helm(Chart 管理工具)、Chart Testing (ct)(官方测试工具链)以及 Kubernetes 集群(推荐使用 Minikube 或 Kind 作为轻量级测试集群)。
环境概览:本教程所有操作均在 Linux/macOS 终端下完成。Windows 用户建议使用 WSL2 或 Git Bash 以获得一致的命令行体验。
2.1 安装 Helm
Helm 是 Kubernetes 的包管理器,也是执行 Chart 测试的底层引擎。请根据你的操作系统选择以下安装方式之一。
| 安装方式 | 适用平台 | 命令 / 步骤 |
|---|---|---|
| 官方脚本(推荐) | Linux / macOS | curl -fsSL https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash |
| Homebrew | macOS | brew install helm |
| Chocolatey | Windows | choco install kubernetes-helm |
| 二进制下载 | 所有平台 | 从 GitHub Releases 下载对应架构的压缩包,解压后将 helm 二进制文件放入 PATH |
安装完成后,验证版本:
helm version --short
# 预期输出:v3.16.x+...(确保主版本为 3)
关键检查点:Helm 3 已移除 Tiller 组件,不再需要服务端安装。确保
helm version 输出中不包含 "Tiller" 字样。
2.2 安装 Chart Testing 工具 (ct)
ct 是 Helm 社区官方维护的测试工具,专门用于对 Chart 进行 lint、安装、升级和测试。它是实现自动化测试流水线的核心组件。
2.2.1 安装方式
| 方法 | 命令 |
|---|---|
| Homebrew(macOS) | brew install chart-testing |
| Docker 运行(所有平台) | docker run --rm -v $(pwd):/charts quay.io/helmpack/chart-testing:latest ct lint --charts /charts |
| 二进制下载 | 从 GitHub Releases 下载对应操作系统的二进制文件,解压后放入 PATH |
验证安装:
ct version
# 预期输出:Chart Testing version v3.12.x+
2.2.2 配置文件示例
ct 通过 YAML 配置文件控制测试行为。在项目根目录创建 ct.yaml:
# ct.yaml
remote: origin
target-branch: main
chart-dirs:
- charts
chart-repos:
- stable=https://charts.helm.sh/stable
helm-extra-args: --timeout 300s
validate-maintainers: false
配置说明:
chart-dirs 指定存放 Chart 的目录;target-branch 用于 PR 场景下检测变更的 Chart;helm-extra-args 可统一设置超时等全局参数。
2.3 配置 Kubernetes 集群(Minikube / Kind)
集成测试需要真实的 Kubernetes 集群。本地开发推荐使用 Minikube(功能完整,适合模拟生产)或 Kind(轻量快速,适合 CI/CD)。
2.3.1 方案对比
| 特性 | Minikube | Kind (Kubernetes in Docker) |
|---|---|---|
| 底层技术 | 虚拟机 / Docker | Docker 容器 |
| 启动速度 | 较慢(30-60s) | 极快(10-20s) |
| 资源占用 | 较高(默认 2C/2G) | 较低(按需分配) |
| 多节点支持 | 支持 | 原生支持 |
| 适用场景 | 本地开发、功能验证 | CI/CD、快速测试 |
2.3.2 安装 Minikube
# Linux/macOS
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
sudo install minikube-linux-amd64 /usr/local/bin/minikube
# 启动集群(指定驱动为 docker)
minikube start --driver=docker --cpus=2 --memory=2048
# 验证集群状态
kubectl cluster-info
minikube status
2.3.3 安装 Kind
# Linux/macOS
curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.24.0/kind-linux-amd64
chmod +x ./kind
sudo mv ./kind /usr/local/bin/kind
# 创建集群(使用默认配置)
kind create cluster --name test-cluster
# 验证集群
kubectl cluster-info --context kind-test-cluster
注意事项:Kind 集群默认不包含负载均衡器或 Ingress Controller。如果测试需要这些组件,请使用
kind-config.yaml 配置文件启用 extraPortMappings 并安装对应的控制器。
2.4 环境验证流程图
以下 SVG 展示了从安装到验证的完整流程,帮助你确认每个组件是否就绪。
2.5 环境就绪检查清单
完成上述安装后,请逐项核对以下清单,确保环境完全就绪:
- Helm:
helm version输出 v3.x,且helm repo list可正常访问。 - Chart Testing:
ct version输出 v3.12+,且ct lint --help显示帮助信息。 - Kubernetes 集群:
kubectl get nodes返回 Ready 状态节点。 - kubectl 上下文:
kubectl config current-context指向你创建的 Minikube 或 Kind 集群。 - Docker(可选):如果使用 Kind 或 Minikube Docker 驱动,确保
docker ps可正常运行。
快速诊断命令:将以下命令复制到终端,一次性输出所有关键信息:
echo "Helm: $(helm version --short)" && echo "CT: $(ct version)" && echo "K8s: $(kubectl version --short --client)" && kubectl cluster-info | head -2