一,Argo安装配置
Argo是一个基于Kubernetes的容器本地工作流引擎,可以帮助用户在Kubernetes上创建、运行和维护容器化应用程序。下面是Argo安装配置的步骤:
$ helm repo add argo https://argoproj.github.io/argo-helm
$ kubectl create namespace argocd
$ 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}
表示允许不受信任的证书。
server.service.type=LoadBalancer
表示使用 LoadBalancer 类型的 Service。
$ kubectl get svc -n argocd | grep argocd-server
argocd-server LoadBalancer xxx.xxx.xxx.xxx <pending> 80:xxxxx/TCP,443:xxxxx/TCP 5m47s
在浏览器中输入 http://<EXTERNAL-IP>: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。
现在你已经可以使用 Argo CD 来创建、运行和维护容器化应用程序了。
Argo CD 是一个基于 Kubernetes 的 GitOps 持续交付工具,可以将应用程序的所有部署和管理任务都自动化,从而提高生产力和可靠性。下面是使用 Argo CD 进行持续交付的步骤:
在 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 分支或提交。
在 Git 仓库中定义 Kubernetes 部署模板,例如使用 Helm Chart。
在应用程序的 syncPolicy
中启用自动同步,这样 Argo CD 就会自动检测 Git 仓库中的变更,并将其同步到 Kubernetes 集群中。例如:
syncPolicy:
automated:
prune: true
selfHealTimeout: 3600s
其中,prune
表示删除未在 Git 仓库中定义的资源;selfHealTimeout
表示重新同步之前等待的时间。
- 定义环境
在 Argo CD 的 UI 界面中创建一个新的环境(如开发环境、测试环境、生产环境等),并指定该环境所在的 Kubernetes 集群和命名空间。例如:
apiVersion: argoproj.io/v1alpha1
kind: Environment
metadata:
name: dev
spec:
clusterName: mycluster
namespace: development
在 Argo CD 的 UI 界面中定义发布策略,例如:当代码提交到 master
分支时,自动触发部署到生产环境。
使用测试框架对应用程序进行自动化测试,并将测试结果作为注释添加到 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 中。
当代码提交到 Git 仓库时,Argo CD 就会自动检测变更,并执行持续交付流程。如果所有的自动化测试都通过了,应用程序就会被部署到指定的 Kubernetes 集群和命名空间中
Argo CD 支持 Canary 和 Blue-Green 部署模式,以下是使用 Argo CD 进行 Canary 和 Blue-Green 部署的步骤:
Canary 部署
Canary 部署模式可以让你逐渐将新版本应用程序引入到生产环境中,并在确保稳定性的情况下逐步增加流量。
在 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 分支或提交。
- 定义部署模板
在 Git 仓库中定义 Kubernetes 部署模板,例如使用 Helm Chart。
- 启用自动同步
在应用程序的 syncPolicy
中启用自动同步,这样 Argo CD 就会自动检测 Git 仓库中的变更,并将其同步到 Kubernetes 集群中。例如:
syncPolicy:
automated:
prune: true
selfHealTimeout: 3600s
其中,prune
表示删除未在 Git 仓库中定义的资源;selfHealTimeout
表示重新同步之前等待的时间。
- 定义环境
在 Argo CD 的 UI 界面中创建一个新的环境(如开发环境、测试环境、生产环境等),并指定该环境所在的 Kubernetes 集群和命名空间。例如:
apiVersion: argoproj.io/v1alpha1
kind: Environment
metadata:
name: dev
spec:
clusterName: mycluster
namespace: development
- 定义发布策略
apiVersion: argoproj.io/v1alpha1
kind: Rollout
metadata:
name: myapp-canary-rollout
spec:
strategy: 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
表示流量占比。
当代码提交到 Git 仓库时,Argo CD 就会自动检测变更,并执行持续交付流程。新版本的应用程序会先部署到 Canary 环境中,并将一小部分流量引入到生产环境中。如果没有发现问题,就可以逐步增加流量。
Blue-Green 部署
Blue-Green 部署模式可以让你在完全安装新版本应用程序之前,在一个与生产环境相同的环境中进行测试和验证。
- 准备工作
- 创建应用程序
在 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 分支或提交。
- 定义部署模板
在 Git 仓库中定义 Kubernetes 部署模板,例如使用 Helm Chart。
- 启用自动同步
在应用程序的 syncPolicy
中启用自动同步,这样 Argo CD 就会自动检测 Git 仓库中的变更,并将其同步到 Kubernetes 集群中。例如:
syncPolicy:
automated:
prune: true
selfHealTimeout: 3600s
其中,prune
表示删除未在 Git 仓库中定义的资源;selfHealTimeout
表示重新同步之前等待的时间。
- 定义环境
在 Argo CD 的 UI 界面中创建一个新的环境(如开发环境、测试环境、生产环境等),并指定该环境所在的 Kubernetes 集群和命名空间。例如:
apiVersion: argoproj.io/v1alpha1
kind: Environment
metadata:
name: dev
spec:
clusterName: mycluster
namespace: development
- 定义发布策略
定义 Blue-Green 发布策略,例如:
apiVersion: argoproj.io/v1alpha1
kind: Rollout
metadata:
name: myapp-bluegreen-rollout
spec:
strategy: BlueGreen
其中,strategy
表示采用 Blue-Green 策略。
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
表示服务端口号。
当代码提交到 Git 仓库时,Argo CD 就会自动检测变更,并执行持续交付流程。新版本的应用程序会先部署到与生产环境相同的环境中,并进行测试和验证。如果一切正常,就可以切换流量到新版本应用程序上。
原文地址:https://blog.csdn.net/YKM_2580/article/details/131978595
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_50397.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!