3. 环境准备:K8s集群搭建(Minikube/K3s)、Argo CD安装(Helm/Manifest)、CLI与Web UI初始化
本章是课程实验环境的基石。我们将完成两阶段部署:先搭建轻量级 Kubernetes 集群,再安装 Argo CD 及其配套工具。所有操作均可在单台开发机(4 核 8 GB 以上)上完成,无需云资源。
3.1 K8s 集群搭建:Minikube vs K3s 选型
对于本地实验和证书轮换场景验证,Minikube 和 K3s 是最主流的两种选择。下表从关键维度对比两者差异:
| 对比维度 | Minikube | K3s |
|---|---|---|
| 架构 | 单节点 VM 或容器驱动 | 原生进程级,支持单节点/多节点 |
| 资源占用 | ~2 GB RAM + 2 vCPU | ~512 MB RAM + 1 vCPU |
| 证书管理 | 内置自签 CA,自动轮换 | 内置自签 CA,需手动配置轮换策略 |
| CNI 插件 | 默认 Calico / Flannel | 内置 Flannel(可替换) |
| 适用场景 | 完整 K8s 功能验证、CI/CD 测试 | 边缘计算、资源受限环境、快速启动 |
| 启动命令 | minikube start |
curl -sfL https://get.k3s.io | sh - |
推荐选择:本课程后续证书轮换操作涉及 kubeconfig 和 CA 证书路径,建议使用 K3s 以获得更贴近生产环境的文件系统布局。若你已有 Minikube 环境,也可继续使用,仅需注意证书路径差异。
3.2 使用 K3s 搭建单节点集群
以下步骤在 Ubuntu 22.04 / Debian 12 上验证通过。执行前确保系统已安装 curl 和 iptables。
# 1. 安装 K3s(默认使用 containerd 运行时)
curl -sfL https://get.k3s.io | sh -
# 2. 检查集群状态
sudo k3s kubectl get nodes
# 3. 导出 kubeconfig(Argo CD 后续需要)
mkdir -p ~/.kube
sudo cp /etc/rancher/k3s/k3s.yaml ~/.kube/config
sudo chown $(id -u):$(id -g) ~/.kube/config
export KUBECONFIG=~/.kube/config
# 4. 验证集群组件
kubectl cluster-info
kubectl get pods -n kube-system
证书路径注意:K3s 的 CA 证书位于
/var/lib/rancher/k3s/server/tls/,后续证书轮换实验需要直接操作该目录下的 server-ca.crt 和 server-ca.key。请勿随意修改这些文件,除非在实验指导中明确要求。
3.3 Argo CD 安装:Helm vs Manifest 方式
Argo CD 提供两种主流安装方式。下表对比其差异:
| 安装方式 | 命令示例 | 优势 | 适用场景 |
|---|---|---|---|
| Helm Chart | helm install argocd argo/argo-cd |
参数化配置、版本管理、升级回滚 | 生产环境、需要定制化配置 |
| Manifest(kubectl apply) | kubectl create namespace argocd |
快速部署、无依赖、适合 CI 脚本 | 快速验证、离线环境、最小化安装 |
本课程采用 Helm 方式 安装,便于后续证书轮换时调整 Argo CD 自身的 TLS 配置。
# 1. 添加 Argo CD Helm 仓库
helm repo add argo https://argoproj.github.io/argo-helm
helm repo update
# 2. 创建命名空间并安装 Argo CD
kubectl create namespace argocd
helm install argocd argo/argo-cd \
--namespace argocd \
--version 7.7.0 \
--set server.service.type=NodePort \
--set configs.params."server\.insecure"=true
# 3. 等待所有 Pod 就绪
kubectl wait --for=condition=Ready pods --all -n argocd --timeout=180s
# 4. 查看安装结果
kubectl get all -n argocd
关键参数说明:
server.service.type=NodePort — 暴露 Argo CD Server 为 NodePort,便于本地访问。configs.params."server\.insecure"=true — 允许 HTTP 访问(仅用于本地实验,生产环境必须启用 HTTPS)。
3.4 CLI 与 Web UI 初始化
安装完成后,需要初始化 CLI 工具和 Web UI 访问。
3.4.1 安装 Argo CD CLI
# 下载最新版 CLI(Linux amd64)
curl -sSL -o /usr/local/bin/argocd \
https://github.com/argoproj/argo-cd/releases/latest/download/argocd-linux-amd64
chmod +x /usr/local/bin/argocd
# 验证安装
argocd version --client
3.4.2 获取初始管理员密码
# Argo CD 自动生成初始密码,存储在 Secret 中
kubectl get secret argocd-initial-admin-secret \
-n argocd \
-o jsonpath="{.data.password}" | base64 -d
# 输出示例(每次安装不同):
# xxxxxxxxxxxxxxxx
3.4.3 登录 CLI 并访问 Web UI
# 获取 Argo CD Server 的 NodePort 端口
ARGOCD_PORT=$(kubectl get svc argocd-server -n argocd \
-o jsonpath='{.spec.ports[0].nodePort}')
echo "Argo CD URL: https://$(hostname -I | awk '{print $1}'):$ARGOCD_PORT"
# 通过 CLI 登录
argocd login $(hostname -I | awk '{print $1}'):$ARGOCD_PORT \
--username admin \
--password $(kubectl get secret argocd-initial-admin-secret -n argocd -o jsonpath="{.data.password}" | base64 -d) \
--insecure
# 修改默认密码(强烈建议)
argocd account update-password
Web UI 访问:打开浏览器访问上述 URL,使用 admin 和初始密码登录。首次登录后,建议立即进入 Settings → Accounts 修改密码,并创建专用 Service Account 用于后续 CI/CD 集成。
3.5 环境验证清单
完成上述步骤后,执行以下命令确认环境就绪:
# 1. 验证 K8s 集群
kubectl get nodes -o wide
# 2. 验证 Argo CD 组件
kubectl get pods -n argocd
# 3. 验证 CLI 连接
argocd cluster list
# 4. 验证 Web UI 可访问(返回 200)
curl -sk -o /dev/null -w "%{http_code}" \
https://$(hostname -I | awk '{print $1}'):$ARGOCD_PORT
所有命令返回正常状态后,环境准备完成。下一阶段将基于此环境进行证书轮换策略配置。