云计算百科
云计算领域专业知识百科平台

持续交付工具Argo CD的部署使用

持续交付工具Argo CD的部署使用

ArgoCD 是 Kubernetes 生态中最受欢迎的 GitOps 持续交付工具,它通过将应用声明式配置存储在 Git 仓库中,并自动同步到集群,实现了“Git 作为单一事实来源”的交付模式。

核心逻辑:

  • 所有 K8s 资源(Deployment/Service/Ingress 等)都存 Git(GitLab/GitHub/Gitee);
  • ArgoCD 持续监听 Git 仓库;
  • Git 里改了 YAML,ArgoCD 自动对比集群现状,同步更新 Pod、配置;
  • 保证集群状态永远和 Git 仓库一致,Git 是唯一可信源。
  • 架构图 在这里插入图片描述

    一、创建命名空间

    kubectl create ns argocd

    二、部署ArgoCD

    参考官方部署文档:Argo CD 中文文档 平台工程 Devops

    1、YAML文件部署

    kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml

    安装时可能会出现以下报错:

    The CustomResourceDefinition "applicationsets.argoproj.io" is invalid: metadata.annotations: Too long: may not be more than 262144 bytes

    这通常是因为 CRD 的注解(annotation)内容超出了 Kubernetes 262144 字节的限制。解决此问题的方法是改用服务端应用(server-side apply)策略,并强制解决冲突。

    kubectl apply -n argocd –server-side –force-conflicts -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml

    命令说明

    • –server-side: 启用服务端应用,由 Kubernetes 服务器端处理合并逻辑,可以有效规避部分客户端的限制。
    • –force-conflicts: 强制解决应用时可能发生的字段管理冲突,确保操作能够继续执行。
    2、查看pod启动状态

    kubectl get pod -n argocd -w

    等待所有Pod变成running状态

    3、修改ArgoCD Server 服务类型为 NodePort

    kubectl patch svc argocd-server -n argocd -p '{"spec": {"type": "NodePort"}}'

    4、查看NodePort端口号

    kubectl get svc argocd-server -n argocd

    在这里插入图片描述

    这里可以得到我们的argocd-server得到的端口号是32234和30188

    5、获取初始管理员密码

    集群部署 ArgoCD 完成后,命名空间内会自动创建 Secret:argocd-initial-admin-secret,管理员用户名固定为 admin,初始密码保存于此 Secret 中,执行 base64 解码命令即可查看。

    echo -e "用户名:admin\\n密码:$(kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d)"

    在这里插入图片描述

    6、修改初始密码

    访问ArgoCD Web页面 → 左侧菜单栏【User Info】 → 【UPDATE PASSWORD】

    在这里插入图片描述

    至此,ArgoCD 已安装完成 🎉

    三、使用 ArgoCD部署应用

    首先,我们来认识一下ArgoCD界面的一些功能

    在这里插入图片描述

    1、准备一个Git仓库

    我们使用Gitlab进行演示,创建一个简单的Git仓库,并把部署资源文件Push到我们的Gitlab仓库

    在这里插入图片描述

    代码示例:

    #deployment.yaml
    apiVersion: apps/v1
    kind: Deployment
    metadata:
    name: argocdtestnginx
    spec:
    replicas: 1
    selector:
    matchLabels:
    app: testnginx
    template:
    metadata:
    labels:
    app: testnginx
    spec:
    containers:
    name: nginx
    image: nginx:alpine
    ports:
    containerPort: 80

    #svc.yaml
    apiVersion: v1
    kind: Service
    metadata:
    name: argocdtestsvc
    spec:
    selector:
    app: testnginx
    ports:
    port: 80
    targetPort: 80
    nodePort: 30088
    type: NodePort

    2、ArgoCD配置Git仓库

    【Setting】——【Repositories】——【CONNECT REPO】

    在这里插入图片描述

    参考以上方式配置,然后点击上方【CONNECT】进行连接,出现 【✅️Successful】代表连接成功了!

    在这里插入图片描述

    3、创建应用

    现在我们在ArgoCD里创建应用,步骤如下

    【Applications】——【NEW APP】

    在这里插入图片描述 在这里插入图片描述

    创建完成后如下所示:可以看到状态都变成正常 在这里插入图片描述

    4、查看资源部署情况

    # 查看demo命名空间下所有资源
    kubectl get all -n demo

    在这里插入图片描述

    可以看到资源正常创建并运行,浏览器打开 http://集群任意节点IP:30088,能看到 Nginx 欢迎页。

    四、使用ArgoCD更新应用

    1、修改代码

    我们对代码进行修改,并提交到仓库

    replicas: 1 → replicas: 3

    nodePort: 30088 → nodePort: 30888

    2、ArgoCD同步

    等待几分钟,可以看到ArgoCD检测到Git代码更新后,触发Auto-Sync自动更新,pod数量变成3个,nodeport端口也变成了30888

    在这里插入图片描述

    五、使用ArgoCD回滚版本

    我们点击上方【HISTORY AND ROLLBACK】,可以看到应用部署的历史版本,找到最初版本点击【Roolback】 在这里插入图片描述

    等待同步完成后即可成功回滚版本

    在这里插入图片描述

    赞(0)
    未经允许不得转载:网硕互联帮助中心 » 持续交付工具Argo CD的部署使用
    分享到: 更多 (0)

    评论 抢沙发

    评论前必须登录!