当前位置: 首页 > news >正文

在CSDN学Golang云原生(持续交付Argo)

一,Argo安装配置

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

  1. 首先确保你已经安装了kubectl和helm
  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>: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. 准备工作

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

  • Kubernetes 集群
  • kubectl 工具
  • Helm 包管理器
  • Argo CD 工具
  1. 创建应用程序

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

apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:name: myapp
spec:destination:namespace: defaultserver: https://kubernetes.default.svc.cluster.localproject: defaultsource:path: .repoURL: https://github.com/username/myapp.gittargetRevision: HEADsyncPolicy:automated:prune: trueselfHealTimeout: 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: trueselfHealTimeout: 3600s

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

  1. 定义环境

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

apiVersion: argoproj.io/v1alpha1
kind: Environment
metadata:name: dev
spec:clusterName: myclusternamespace: 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. 准备工作

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

  • Kubernetes 集群
  • kubectl 工具
  • Helm 包管理器
  • Argo CD 工具
  1. 创建应用程序

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

apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:name: myapp
spec:destination:namespace: defaultserver: https://kubernetes.default.svc.cluster.localproject: defaultsource:path: .repoURL: https://github.com/username/myapp.gittargetRevision: HEADsyncPolicy:automated:prune: trueselfHealTimeout: 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: trueselfHealTimeout: 3600s

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

  1. 定义环境

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

apiVersion: argoproj.io/v1alpha1
kind: Environment
metadata:name: dev
spec:clusterName: myclusternamespace: 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.comhttp:- route:- destination:host: myappsubset: v1 weight: 90 - destination:host: myappsubset: v2 weight: 10

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

  1. 执行持续交付

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

Blue-Green 部署

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

  1. 准备工作

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

  • Kubernetes 集群
  • kubectl 工具
  • Helm 包管理器
  • Argo CD 工具
  1. 创建应用程序

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

apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:name: myapp
spec:destination:namespace: defaultserver: https://kubernetes.default.svc.cluster.localproject: defaultsource:path: .repoURL: https://github.com/username/myapp.gittargetRevision: HEADsyncPolicy:automated:prune: trueselfHealTimeout: 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: trueselfHealTimeout: 3600s

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

  1. 定义环境

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

apiVersion: argoproj.io/v1alpha1
kind: Environment
metadata:name: dev
spec:clusterName: myclusternamespace: 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 就会自动检测变更,并执行持续交付流程。新版本的应用程序会先部署到与生产环境相同的环境中,并进行测试和验证。如果一切正常,就可以切换流量到新版本应用程序上。

 

http://www.lryc.cn/news/103677.html

相关文章:

  • 安全运维 -- splunk 集群配置归档
  • 使用kind在mac本地搭建k8s及istio
  • 11、springboot项目启动时对容器中的bean进行延迟初始化
  • 树莓派镜像安装 + 设置 + 镜像批量化操作 - 自动化烧写SD Card (三)
  • C++继承特性(4)——友元与静态
  • VR党建主题数字互动虚拟展馆软件开启党建铸魂育人新篇章
  • 单网卡实现 双IP 双网段(内外网)同时运行
  • C# 委托2
  • 【计算机网络】网络层协议 -- IP协议
  • 记录浙政钉的消息通知的一次开发实战记录
  • 详解主流的Hybrid App 技术框架与研发方案
  • 【软件测试】性能测试工具- LoadRunner的介绍和使用
  • react
  • AI入门:了解人工智能的基础知识
  • ACL原理
  • EP4CE6E22C8N Error: Can‘t recognize silicon ID for device 1
  • vue3-seamless-scroll无缝滚动
  • 适配器模式——不兼容结构的协调
  • 【NVIDIA CUDA】2023 CUDA夏令营编程模型(一)
  • SHELL——备份脚本
  • VS创建wsdl服务提供给java调用
  • 盘点 TypeScript 内置类型
  • Netty 执行了多次channelReadComplete()却没有执行ChannelRead()
  • 直线导轨的精密等级以及划分依据
  • Ubuntu Server版 之 apache系列 常用配置 以及 隐藏 版本号 IP、Port 搭建服务案例
  • Kubernetes(K8s)从入门到精通系列之七:K8s的基本概念和术语之安全类
  • 网络安全(黑客)自学误区
  • 在OK3588板卡上部署模型实现人工智能OCR应用
  • 在linux中怎样同时运行三个微服务保证退出时不会终止
  • MD-MTSP:成长优化算法GO求解多仓库多旅行商问题MATLAB(可更改数据集,旅行商的数量和起点)