一,Argo安装配置

Argo一个基于Kubernetes容器本地工作引擎可以帮助用户在Kubernetes创建运行维护容器应用程序。下面是Argo安装配置步骤

  1. 首先确保你已经安装kubectlhelm
  2. 添加chart仓库
$ helm repo add argo https://argoproj.github.io/argo-helm
  1. 创建namespace
$ kubectl create namespace argocd
  1. 安装 Argo CD
$ helm install argocd argo/argo-cd --version 3.8.5 -n argocd 
    --set server.extraArgs={--insecure} 
    --set rbac.create=true 
    --set server.service.type=LoadBalancer

其中,server.extraArgs={--insecure} 表示允许不受信任证书

rbac.create=true 表示启用RBAC。

server.service.type=LoadBalancer 表示使用 LoadBalancer 类型的 Service

  1. 查看 Argo CD 的服务地址
$ kubectl get svc -n argocd | grep argocd-server
argocd-server             LoadBalancer   xxx.xxx.xxx.xxx   <pending>     80:xxxxx/TCP,443:xxxxx/TCP   5m47s
  1. 访问 Argo CD UI

浏览器输入 http://<EXTERNAL-IP&gt;:80 访问 Argo CD 的 UI 界面用户名为 admin密码为 kubectl get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d,其中 <EXTERNAL-IP> 为上面 kubectl get svc 命令输出的 LoadBalancer IP。

  1. 使用 Argo CD

现在你已经可以使用 Argo CD 来创建运行维护容器应用程序了。

二,Argo CD持续交付

Argo CD 是一个基于 Kubernetes 的 GitOps 持续交付工具可以应用程序所有部署管理任务自动化,从而提高生产力和可靠性。下面是使用 Argo CD 进行持续交付的步骤:

  1. 准备工作

首先,你需要安装配置好以下工具

  1. 创建应用程序

在 Argo CD 的 UI 界面创建一个新的应用程序,并指定应用程序所在的 Git 仓库分支例如,你可以使用以下 YAML 文件创建名为 myapp 的应用程序

apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: myapp
spec:
  destination:
    namespace: default
    server: https://kubernetes.default.svc.cluster.local
  project: default
  source:
    path: .
    repoURL: https://github.com/username/myapp.git
    targetRevision: HEAD
  syncPolicy:
    automated:
      prune: true
      selfHealTimeout: 3600s

其中,destination.namespace 表示目标命名空间destination.server 表示目标 Kubernetes API Server 地址project 表示项目名称source.path 表示源代码路径source.repoURL 表示 Git 仓库地址source.targetRevision 表示要同步的 Git 分支提交

  1. 定义部署模板

在 Git 仓库中定义 Kubernetes 部署模板例如使用 Helm Chart

  1. 启用自动同步

应用程序的 syncPolicy 中启用自动同步,这样 Argo CD 就会自动检测 Git 仓库中的变更,并将其同步到 Kubernetes 集群中。例如

syncPolicy:
  automated:
    prune: true
    selfHealTimeout: 3600s

其中,prune 表示删除未在 Git 仓库中定义的资源selfHealTimeout 表示重新同步之前等待时间

  1. 定义环境

在 Argo CD 的 UI 界面中创建一个新的环境(如开发环境测试环境生产环境等),并指定环境所在的 Kubernetes 集群命名空间。例如

apiVersion: argoproj.io/v1alpha1
kind: Environment
metadata:
  name: dev
spec:
  clusterName: mycluster
  namespace: development
  1. 定义发布策略

在 Argo CD 的 UI 界面中定义发布策略,例如:当代码提交到 master 分支时,自动触发部署生产环境

  1. 自动化测试

使用测试框架应用程序进行自动化测试,并将测试结果作为注释添加到 Git 提交信息中。例如:

$ go test ./... -v | tee >(kubectl annotate deployment/myapp --overwrite=test-results=/dev/stdin)

其中,kubectl annotate deployment/myapp --overwrite=test-results=/dev/stdin 表示将测试结果作为注释添加到名为 myapp 的 Deployment 中。

  1. 执行持续交付

代码提交到 Git 仓库时,Argo CD 就会自动检测变更,并执行持续交付流程。如果所有自动化测试都通过了,应用程序就会被部署指定的 Kubernetes 集群命名空间中

三,Argo Canary和BlueGreen部署

Argo CD 支持 Canary 和 Blue-Green 部署模式,以下是使用 Argo CD 进行 Canary 和 Blue-Green 部署的步骤:

Canary 部署

Canary 部署模式可以让你逐渐将新版本应用程序引入生产环境中,并在确保稳定性的情况下逐步增加流量

  1. 准备工作

首先,你需要安装配置好以下工具

  1. 创建应用程序

在 Argo CD 的 UI 界面中创建一个新的应用程序,并指定该应用程序所在的 Git 仓库分支。例如,你可以使用以下 YAML 文件创建名为 myapp 的应用程序

apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: myapp
spec:
  destination:
    namespace: default
    server: https://kubernetes.default.svc.cluster.local
  project: default
  source:
    path: .
    repoURL: https://github.com/username/myapp.git
    targetRevision: HEAD
  syncPolicy:
    automated:
      prune: true
      selfHealTimeout: 3600s

其中,destination.namespace 表示目标命名空间;destination.server 表示目标 Kubernetes API Server 地址project 表示项目名称source.path 表示源代码路径source.repoURL 表示 Git 仓库地址source.targetRevision 表示要同步的 Git 分支提交

  1. 定义部署模板

在 Git 仓库中定义 Kubernetes 部署模板,例如使用 Helm Chart

  1. 启用自动同步

在应用程序的 syncPolicy 中启用自动同步,这样 Argo CD 就会自动检测 Git 仓库中的变更,并将其同步到 Kubernetes 集群中。例如:

syncPolicy:
  automated:
    prune: true
    selfHealTimeout: 3600s

其中,prune 表示删除未在 Git 仓库中定义的资源selfHealTimeout 表示重新同步之前等待时间

  1. 定义环境

在 Argo CD 的 UI 界面中创建一个新的环境(如开发环境、测试环境生产环境等),并指定该环境所在的 Kubernetes 集群和命名空间。例如:

apiVersion: argoproj.io/v1alpha1
kind: Environment
metadata:
  name: dev
spec:
  clusterName: mycluster
  namespace: development
  1. 定义发布策略

定义 Canary 发布策略,例如:

apiVersion: argoproj.io/v1alpha1
kind: Rollout
metadata:
  name: myapp-canary-rollout
spec:
  strategy: Canary

其中,strategy 表示采用 Canary 策略。

  1. 定义 Canary 规则

在 Kubernetes 中定义 Canary 规则,例如:

apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: myapp-canary-vs
spec:
  hosts:
    - myapp.example.com
  http:
    - route:
        - destination:
            host: myapp
            subset: v1 
          weight: 90 
        - destination:
            host: myapp
            subset: v2 
          weight: 10

其中,subset 表示版本号weight 表示流量占比。

  1. 执行持续交付

代码提交到 Git 仓库时,Argo CD 就会自动检测变更,并执行持续交付流程。新版本的应用程序会先部署到 Canary 环境中,并将一小部分流量引入生产环境中。如果没有发现问题,就可以逐步增加流量

Blue-Green 部署

Blue-Green 部署模式可以让你在完全安装版本应用程序之前,在一个与生产环境相同的环境中进行测试和验证

  1. 准备工作

首先,你需要安装配置好以下工具:

  1. 创建应用程序

在 Argo CD 的 UI 界面中创建一个新的应用程序,并指定该应用程序所在的 Git 仓库和分支。例如,你可以使用以下 YAML 文件创建名为 myapp 的应用程序:

apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: myapp
spec:
  destination:
    namespace: default
    server: https://kubernetes.default.svc.cluster.local
  project: default
  source:
    path: .
    repoURL: https://github.com/username/myapp.git
    targetRevision: HEAD
  syncPolicy:
    automated:
      prune: true
      selfHealTimeout: 3600s

其中,destination.namespace 表示目标命名空间;destination.server 表示目标 Kubernetes API Server 地址project 表示项目名称source.path 表示源代码路径source.repoURL 表示 Git 仓库地址source.targetRevision 表示要同步的 Git 分支或提交。

  1. 定义部署模板

在 Git 仓库中定义 Kubernetes 部署模板,例如使用 Helm Chart

  1. 启用自动同步

在应用程序的 syncPolicy 中启用自动同步,这样 Argo CD 就会自动检测 Git 仓库中的变更,并将其同步到 Kubernetes 集群中。例如:

syncPolicy:
  automated:
    prune: true
    selfHealTimeout: 3600s

其中,prune 表示删除未在 Git 仓库中定义的资源selfHealTimeout 表示重新同步之前等待时间

  1. 定义环境

在 Argo CD 的 UI 界面中创建一个新的环境(如开发环境、测试环境、生产环境等),并指定该环境所在的 Kubernetes 集群和命名空间。例如:

apiVersion: argoproj.io/v1alpha1
kind: Environment
metadata:
  name: dev
spec:
  clusterName: mycluster
  namespace: development
  1. 定义发布策略

定义 Blue-Green 发布策略,例如:

apiVersion: argoproj.io/v1alpha1
kind: Rollout
metadata:
  name: myapp-bluegreen-rollout
spec:
  strategy: BlueGreen

其中,strategy 表示采用 Blue-Green 策略。

  1. 定义新版本规则

在 Kubernetes 中定义新版本规则,例如:

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: myapp-new-ingress 
spec:
  rules:
    - host: myapp.example.com 
      http:
        paths:
          - pathType: Prefix 
            path: / 
            backend:
              servicePort: 80 
              serviceName: myapp-new

其中,serviceName 表示使用新版本服务servicePort 表示服务端口号。

  1. 执行持续交付

代码提交到 Git 仓库时,Argo CD 就会自动检测变更,并执行持续交付流程。新版本的应用程序会先部署到与生产环境相同的环境中,并进行测试和验证。如果一切正常,就可以切换流量到新版本应用程序上。

 

原文地址:https://blog.csdn.net/YKM_2580/article/details/131978595

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_50397.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注