安装、CLI 与 Dashboard
本篇以固定版本的官方 Manifest 为主线。生产环境应先在测试集群验证 Kubernetes 版本、CRD、RBAC、流量提供者和监控查询,再进入生产变更窗口。
1. 安装前检查
# 确认当前集群和 Namespace,避免误操作其他环境
kubectl config current-context
kubectl get nodes
kubectl create namespace argo-rollouts --dry-run=client -o yaml | kubectl apply -f -
# 检查是否已有 Rollout CRD,升级前记录当前版本
kubectl get crd rollouts.argoproj.io analysisruns.argoproj.io analysis-templates.argoproj.io
安装账号需要创建 CRD、Deployment、Service、ClusterRole 和 ClusterRoleBinding。Controller 不应该因此获得业务 Namespace 的无限制管理员权限;应用同步权限仍由 Argo CD、AppProject 和目标集群 RBAC 控制。
2. 固定版本安装
先从官方 Release 页面选择经过验证的版本,将版本号写入团队维护的安装脚本或平台仓库,不要在生产直接引用浮动的 stable 内容。
export ARGO_ROLLOUTS_VERSION=<approved-version>
# 下载到受控目录后先审核差异
curl -fsSL \
"https://raw.githubusercontent.com/argoproj/argo-rollouts/${ARGO_ROLLOUTS_VERSION}/manifests/install.yaml" \
-o argo-rollouts-install.yaml
kubectl diff -n argo-rollouts -f argo-rollouts-install.yaml || true
kubectl apply -n argo-rollouts -f argo-rollouts-install.yaml
安装后等待 Controller 就绪:
kubectl rollout status deployment/argo-rollouts -n argo-rollouts --timeout=5m
kubectl get pods -n argo-rollouts -o wide
kubectl get crd | grep 'argoproj.io'
不同版本的官方清单可能包含不同的 ServiceAccount、权限和容器参数。升级时应审核 CRD 与 RBAC 变更,不要混用不同版本的安装清单。
3. 安装 kubectl 插件
CLI 插件版本应与 Controller 版本兼容。安装完成后检查客户端版本:
kubectl argo rollouts version
kubectl argo rollouts version --short
常用命令:
# 列出 Namespace 中的 Rollout
kubectl argo rollouts list rollouts -n production
# 查看状态和步骤
kubectl argo rollouts get rollout <rollout-name> -n production
# 暂停、晋级和终止
kubectl argo rollouts pause <rollout-name> -n production
kubectl argo rollouts promote <rollout-name> -n production
kubectl argo rollouts abort <rollout-name> -n production
脚本中建议使用明确的 Namespace、超时和退出码,避免在默认 Namespace 中误操作同名资源。
4. Dashboard 与临时访问
Dashboard 适合发布窗口中观察步骤、ReplicaSet、Pod、AnalysisRun 和事件,不应替代 Git PR 或审计系统。
# 通过 CLI 启动本地 Dashboard;终端关闭后访问即结束
kubectl argo rollouts dashboard -n argo-rollouts
如果使用远程跳板机,应通过受控端口转发或内部入口访问,不要把 Dashboard 直接暴露到公网。生产入口需要 TLS、认证和网络访问控制。
5. 最小权限与审计
运维账号至少需要读取 Rollout 状态、查看事件和执行经过授权的暂停/晋级/终止操作。发布机器人不应默认拥有整个集群的写权限。
建议把以下内容纳入审计:
- Rollout YAML 的 Git commit、镜像 digest 和变更单号;
- 谁在什么时间执行了
promote、abort或retry; - AnalysisRun 查询、阈值和结果;
- Controller、流量入口和业务监控的关联日志。