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 展示了从安装到验证的完整流程,帮助你确认每个组件是否就绪。

测试环境准备验证流程 安装 Helm 安装 Chart Testing 选择集群方案 Minikube 集群 Kind 集群 验证集群与工具链 提示:所有组件安装完成后,运行 helm version && ct version && kubectl cluster-info 确认环境就绪

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