在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.mzph.cn/news/19288.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

百度:文心千帆 网页搭建和示例测评

文章目录 官方文档代码示例token获取流式回答官网完整示例 制作一个网页端 官方文档 https://cloud.baidu.com/doc/WENXINWORKSHOP/s/flfmc9do2按照这个操作进行创建一个应用&#xff1a; 代码示例 token获取 # 填充API Key与Secret Key import requests import jsondef ma…

blender的下载安装和配置中文环境

引言 在3D建模和动画设计领域&#xff0c;Blender 作为一款强大且免费的开源软件&#xff0c;一直以优秀的性能和对众多技术的支持赢得了大批用户的喜爱。然而&#xff0c;对于刚接触这款软件的用户而言&#xff0c;其安装和配置过程可能会带来一定困扰&#xff0c;尤其是在设…

【redis】创建集群

这里介绍的是创建redis集群的方式&#xff0c;一种是通过create-cluster配置文件创建部署在一个物理机上的伪集群&#xff0c;一种是先在不同物理机启动单体redis&#xff0c;然后通过命令行使这些redis加入集群的方式。 一&#xff0c;通过配置文件创建伪集群 进入redis源码…

Spring Boot 应用程序生命周期扩展点妙用

文章目录 前言1. 应用程序生命周期扩展点2. 使用场景示例2.1 SpringApplicationRunListener2.2 ApplicationEnvironmentPreparedEvent2.3 ApplicationPreparedEvent2.4 ApplicationStartedEvent2.5 ApplicationReadyEvent2.6 ApplicationFailedEvent2.7 ApplicationRunner 3. 参…

虚拟机之间配置免密登录

目录 一、配置主机名映射 二、虚拟机配置SSH免密登录 三、验证 一、配置主机名映射 即修改/etc/hosts文件&#xff0c;将几台服务器和主机名进行映射。 注意每台服务器都要进行同样的配置。这样在各自服务器下&#xff0c;我们就可以通过主机名访问对应的ip地址了。 当然&…

宝塔安装ModStart,快速开启高效开发之旅!

宝塔面板是一款强大的服务器管理工具&#xff0c;而ModStart则是基于Laravel的模块化快速开发框架&#xff0c;二者的结合将为您的项目开发带来前所未有的便利和高效。在这篇文章中&#xff0c;我们将为您详细介绍如何在宝塔面板上安装ModStart&#xff0c;让您快速搭建功能丰富…

BGP属性+选路规则

目录 一&#xff0c;BGP的属性—基础属性 1.PrefVal 2.LocPrf 3、优先本地下一跳 &#xff08;NextHop&#xff09; 4、AS-PATH 5、起源属性 6、MED -多出口鉴别属性 二&#xff0c;BGP选路规则 三&#xff0c;BGP的社团属性 一&#xff0c;BGP的属性—基础…

低碳 Web 实践指南

现状和问题 2023年7月6日&#xff0c;世界迎来有记录以来最热的一天。气候变化是如今人类面临的最大健康威胁。据世界卫生组织预测2030年至2050年期间&#xff0c;气候变化预计每年将造成约25万人死亡。这是人们可以真切感受到的变化&#xff0c;而背后的主要推手是碳排放。 …

功率放大器的种类有哪三种类型

功率放大器是一种能将输入信号转换为更高功率输出的电子设备。在电子工程和音频领域中&#xff0c;功率放大器通常被分为三种类型&#xff1a;A类、B类和AB类。下面安泰电子将详细介绍这三种类型的功率放大器及其特点。 A类功率放大器 A类功率放大器是一种基本的线性功率放大器…

Hadoop中命令检查hdfs的文件是否存在

Hadoop中命令检查hdfs的文件是否存在 在Hadoop中&#xff0c;可以使用以下命令检查HDFS文件是否存在&#xff1a; hadoop fs -test -e 其中&#xff0c;是要检查的HDFS文件的路径。 如果文件存在&#xff0c;命令返回0&#xff1b;如果文件不存在&#xff0c;命令返回非0值…

Flask简介与基础入门

一、了解框架 Flask作为Web框架&#xff0c;它的作用主要是为了开发Web应用程序。那么我们首先来了解下Web应用程序。Web应用程序 (World Wide Web)诞生最初的目的&#xff0c;是为了利用互联网交流工作文档。 1、一切从客户端发起请求开始。 所有Flask程序都必须创建一个程序…

【电网技术复现】考虑实时市场联动的电力零售商鲁棒定价策略(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

代码随想录算法训练营之JAVA|第十八天| 235. 二叉搜索树的最近公共祖先

今天是第 天刷leetcode&#xff0c;立个flag&#xff0c;打卡60天&#xff0c;如果做不到&#xff0c;完成一件评论区点赞最高的挑战。 算法挑战链接 235. 二叉搜索树的最近公共祖先https://leetcode.cn/problems/lowest-common-ancestor-of-a-binary-search-tree/descriptio…

QT笔记——生成dump文件

我们经常会遇到崩溃&#xff0c;此时我们需要定位问题再什么地方&#xff0c;这时候我们就会需要用到dump文件 方式一&#xff1a; #include "Windows.h" #include "DbgHelp.h" #pragma comment(lib, "dbghelp.lib")int GenerateMiniDump(PEXCE…

php建造者模式

一&#xff0c;建造者模式&#xff0c;也叫做生成器模式&#xff0c;是创建设计模式的一种&#xff0c;它能将一个复杂的对象的创建过程分离开来&#xff0c;使你能够分步骤的创建对象。建造者模式也允许你使用相同的建造代码创造出不同类型和形式的对象。 建造者模式一般包括四…

sql 参数自动替换

需求&#xff1a;看日志时&#xff0c;有的sql 非常的长&#xff0c;参数比较多&#xff0c;无法直接在sql 客户端工具执行&#xff0c;如果一个一个的把问号占位符替换为参数太麻烦&#xff0c;因此写个html 小工具&#xff0c;批量替换&#xff1a; 代码&#xff1a; <!…

Spring笔记之Spring对IoC的实现

文章目录 IoC控制反转依赖注入set注入注入外部Bean注入内部Bean注入简单类型通过注入方式实现javax.sql.DateSource接口测试简单类型 级联属性赋值&#xff08;了解&#xff09;注入数组注入List集合注入Set集合注入Map集合注入Properties注入null和空字符串不给属性赋值使用 注…

从零开始学python(十四)百万高性能框架scrapy框架

前言 回顾之前讲述了python语法编程 必修入门基础和网络编程&#xff0c;多线程/多进程/协程等方面的内容&#xff0c;后续讲到了数据库编程篇MySQL&#xff0c;Redis&#xff0c;MongoDB篇&#xff0c;和机器学习&#xff0c;全栈开发&#xff0c;数据分析&#xff0c;爬虫数…

Java多线程面试21题

并行和并发有什么区别&#xff1f; 并行是指两个或者多个事件在同一时刻发生&#xff1b;而并发是指两个或多个事件在同一时间间隔发生。 并行是在不同实体上的多个事件&#xff0c;并发是在同一实体上的多个事件。 在一台处理器上“同时”处理多个任务&#xff0c;在多台处理…

软件测试--一些生命周期

目录 1.需求生命周期 2.开发生命周期 3.测试生命周期 4.缺陷声生命周期 1.需求生命周期 需求生命周期是指在软件测试过程中&#xff0c;需求从提出到最终完成的整个过程。它涵盖了需求的识别、分析、定义、验证和管理等阶段。 需求识别&#xff1a;在此阶段&#xff0c;项目…