ArgoCD容器持续交付AI中转服务完整流水线
ArgoCD 是一套基于 GitOps 理念的持续交付工具,简单说就是把 Git 仓库里的部署清单作为唯一事实来源,当仓库内容变化时自动同步到 Kubernetes 集群。
AI 中转服务通常包含网关、鉴权、日志和模型调度等多个组件,手动更新容易出错,因此用 ArgoCD 搭建一条完整容器流水线,能让镜像版本更新、配置回滚和集群部署都变得可追踪、可重复。
本文从零开始,带你完成 ArgoCD 安装、仓库接入、应用创建和同步验证,全程给出可直接执行的命令和配置。
搭建前需要准备什么
开始操作前,请确认以下条件已经满足:
- 一个可用的 Kubernetes 集群,版本建议 1.24 及以上,本地已有
kubectl并能正常连接集群。 - 一个 Git 仓库,用来存放 AI 中转服务的 Deployment、Service、Ingress 等 YAML 清单。
- 一个容器镜像仓库,比如 Docker Hub、Harbor 或云厂商的镜像服务,并已将 AI 中转服务镜像推送到仓库。
- 安装 Helm(可选),如果你习惯用 Helm Chart 管理应用,后续可以通过 ArgoCD 的 Helm 支持直接渲染。
如果集群还没有装过 Ingress Controller,建议先安装 Nginx Ingress,否则后续访问 ArgoCD 或 AI 中转服务会比较麻烦。
在集群中安装 ArgoCD
最直接的方式是使用官方提供的 manifests 文件安装,执行下面两条命令即可:
kubectl create namespace argocd
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml
等待所有 Pod 运行起来:
kubectl get pods -n argocd
看到 argocd-server、argocd-repo-server 等 Pod 的状态为 Running 后,继续修改 Service 类型。
为了方便浏览器访问,将 argocd-server 服务改成 NodePort 或直接使用 kubectl port-forward。
这里以端口转发为例:
kubectl port-forward svc/argocd-server -n argocd 8080:443
然后打开 https://localhost:8080。
默认用户名为 admin,初始密码可以通过下面的命令获取:
kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d
登录后建议立即修改密码。
接入Git仓库并创建AI中转服务应用
进入 ArgoCD 界面后,点击 Settings ▸ Repositories,选择 Connect Repo,填写 Git 仓库地址。
如果仓库是私有的,还需要填写对应的用户名和令牌(Token)。
使用 HTTPS 方式时,用户名可写仓库用户名,密码使用 Access Token。
仓库连接成功后,开始创建应用。
在 ArgoCD 中,应用(Application)是连接 Git 仓库和集群目标的关键对象。
可以直接用命令创建,也可以先准备一个 YAML 文件:
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: ai-gateway
namespace: argocd
spec:
project: default
source:
repoURL: https://git.example.com/your-team/ai-gateway-deploy.git
targetRevision: main
path: manifests
destination:
server: https://kubernetes.default.svc
namespace: ai-gateway
syncPolicy:
automated:
prune: true
selfHeal: true
syncOptions:
- CreateNamespace=true
把 repoURL、path 和 namespace 换成你自己的值。
注意 syncPolicy.automated.prune 表示当 Git 仓库中删除某个资源时,集群中也会对应删除;selfHeal 表示如果集群中的资源被手工改掉,ArgoCD 会自动改回仓库里的定义,这对 AI 中转服务这类需要稳定运行的应用非常有用。
保存文件后执行:
kubectl apply -f application.yaml
也可以不使用文件,直接在 ArgoCD 界面点击 New App 填写同名信息,效果一样。
自动同步与高频避坑提示
首次创建应用后,ArgoCD 不会立刻部署,需要点击 Sync 按钮或等待自动同步策略生效。
建议在 Git 仓库的 manifests 目录中维护好 AI 中转服务所需的全部 YAML,包括 ConfigMap、Secret、Deployment、Service、Ingress。
下面几个问题最容易遇到:
- Secret 资源建议用 Sealed Secrets 或 External Secrets 管理,不要把明文密钥直接提交到 Git 仓库,否则 ArgoCD 同步时会把敏感信息暴露给有仓库权限的人。
- 镜像更新后需要修改 Git 仓库中的 deployment.yaml,ArgoCD 只认 Git 仓库里的定义,单纯在集群里改镜像不会生效,甚至会被
selfHeal自动还原。 - 如果同步时报错
Failed to get cluster info,检查 ArgoCD 是否能够访问目标集群的 API Server,通常是因为 RBAC 权限不足。 - Ingress 配置要注意注解与 Ingress Controller 匹配,比如 Nginx Ingress 有
nginx.ingress.kubernetes.io/rewrite-target等注解,写错会导致 AI 中转接口路径 404。 - 资源较多时可以拆分多个 Application,比如把 Redis、MySQL 等中间件用一个应用管理,AI 中转网关单独用一个应用,避免某个服务回滚时影响其他组件。
如何确认流水线正常工作
验证要从三个层面看。
先在 ArgoCD 界面找到刚创建的 ai-gateway 应用,看到状态为 Synced 且 Healthy,说明集群资源与 Git 仓库一致。
然后检查实际部署的 Pod:
kubectl get pods -n ai-gateway
最后验证 AI 中转服务的接口连通性,比如访问网关的 /health 路径,观察是否返回预期的 JSON 结果。
也可以做一个完整的发布测试:在 Git 仓库中修改镜像版本号 push 到 main 分支,等待 ArgoCD 自动同步后,再次刷新接口确认服务版本已经更新。
整个流程走通后,你就拥有了一条基于 ArgoCD 的 AI 中转服务容器持续交付流水线,后续只需维护 Git 仓库,集群部署会自动跟上。
如果搭建过程中遇到网络或权限问题,建议优先查看 ArgoCD 的 argocd-server 和 argocd-repo-server 日志,大多数报错都能在日志里找到直接线索。