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
kubectl apply -n argocd -f install.yaml
快速部署、无依赖、适合 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

所有命令返回正常状态后,环境准备完成。下一阶段将基于此环境进行证书轮换策略配置。

Argo CD 环境准备架构总览 Argo CD 环境准备架构总览 K3s 单节点集群 kube-apiserver 端口 6443 kube-controller-manager 证书轮换核心 kube-scheduler 调度策略 containerd 容器运行时 Argo CD(命名空间 argocd) argocd-server API + Web UI argocd-repo-server Git 仓库同步 argocd-application-controller 应用状态管理 argocd-redis 缓存与队列 客户端工具 kubectl K8s 命令行 argocd CLI Argo CD 命令行 helm 包管理工具 Web Browser Argo CD UI 说明:K3s 集群提供 K8s API,Argo CD 部署在集群内,客户端通过 kubectl/argocd CLI/Web UI 进行管理