借助 Terraform 功能协调部署 CI/CD 流水线-Part2

在第一部分的文章中,我们介绍了3个步骤,完成了教程的基础配置:

 

  • 使用 Terraform 创建 AWS EKS Infra
  • 在 EKS 集群上部署 ArgoCD 及其依赖项
  • 设置 Bitbucket Pipeline并部署到 ECR Repo

 

本文将继续完成剩余的步骤,以实现 Terraform 编排部署 CI/CD 流水线。

 

为 ArgoCD 持续部署设置 GitOps 仓库

我们需要 ArgoCD 用于持续部署的另一个 repo,就需要再创建一个。

 

在这里,我们可以使用 ArgoCD GitOps 文件夹中的示例文件,比如 Analytics Node 文件。

 

image.png

 

将所有文件和文件夹原样复制到您刚刚创建的 ArgoCD GitOps repo 中。请确保使用与示例 repo 中相同的文件夹结构。

 

示例 repo URL: https://github.com/dcgmechanics/EKS-TF-Bitbucket-Pipeline-ArgoCD-GitOps/tree/main/ArgoCD%20GitOps/Analytics%20Node

 

例如,请看下面的 repo 文件:

 

image.png

 

在这里,我更改了所需的名称、值和详细信息,如 Image URL 和容器端口。您可以根据自己应用程序的需要添加或删除值。

 

现在,让我们将样本 repo 中的所有文件添加到 ArgoCD GitOps repo 中。

 

deployments/app.yaml中,我们需要确保写入与 ArgoCD GitOps Repo 相同的 Repo URL 和分支,下面是一个示例。

 

image.png

 

repoURL 包含 ArgoCD GitOps 仓库的 URL。示例这里使用的是 SSH URL,利用 SSH Key 将该 repo 连接到 ArgoCD。您也可以使用 HTTPS。

 

targetRevision 中,我们需要说明 GitOps 操作将在哪个分支触发,因为下列部署的是单个应用程序,所以将使用 master 分支,但如果您有多个应用程序,并希望使用 GitOps 部署所有应用程序,则可以使用单个 repo 和多个分支,其中每个分支都包含不同的应用程序配置和部署 YAML。

 

image.png

 

image.png

 

image.png

 

我们准备就绪。现在,我们需要将应用程序部署到步骤 2 中启动的 ArgoCD 应用程序中。

 

为此,我们首先需要将 ArgoCD-GitOps Repo 连接到 ArgoCD。请进入 ArgoCD 应用程序,点击 Setting

 

image.png

 

点击 Repositories,然后点击Connect Repo,填写 ArgoCD-GitOps Repo 的详细信息。

 

image.png

 

您也可以使用 HTTPS。但请记住,使用 SSH 时,您需要使用 linux 上的 ssh-keygen 命令创建私钥和公钥。

 

image.png

 

这里的 id_rsa 是私钥,id_rsa.pub 是公钥。公钥将添加到 Repo 访问密钥之上。

 

image.png

 

私钥将添加到 ArgoCD App connect repo 选项中。

 

image.png

 

希望您能按指示操作。完成后,点击连接按钮。它会将 ArgoCD-GitOps repo 连接到 ArgoCD,并显示成功,如下图所示。

 

image.png

 

现在,我们终于可以将应用程序部署到 ArgoCD 上了

 

要知道,ArgoCD 的初始部署不会自动进行,我们必须先启动它。

 

为此,我们先在电脑上克隆 ArgoCD-GitOps repo,然后转到 deployments 文件夹,就可以将部署应用到 ArgoCD 上了。

 

但在此之前,建议先创建 A 记录,并在 argocd-gitops/deployments/backend-nodejs-app-ingress.yaml 文件中指定域名。

 

您也可以选择您的 DNS 托管在的地方,godaddy 或 namecheap 或其他地方。

 

DNS 记录将指向我们在步骤 2 中创建的同一个网络负载平衡器。具体如下:

 

image.png

 

完成上述操作后,我们就可以使用 kubectl 命令部署应用程序了。

 

$ kubectl apply -f app.yaml.

 

image.png

 

之后,您就可以在 ArgoCD 控制台中看到应用程序了。

 

image.png

 

它显示的是健康的,我们看看能不能通过URL访问这个应用。

 

image.png

 

这说明它完全正常,我们就可以进行最后一步了。

 

使用 Bitbucket Pipeline 设置 CI/CD 并启用自动更改

为此,我们需要将 ArgoCD-GitOps repo 与 NodeJS 示例应用程序 repo 进行验证。这样,示例 NodeJS 应用程序就能在 ArgoCD-GitOps repo 中进行更改,由于 ArgoCD 应用程序与 repo 保持同步,它将自动获取新更改并部署到其中。在本演示中,我们将更新 deployments/kustomization.yaml 文件的 newTag 值。

 

为此,我们需要创建 ArgoCD-GitOps 访问令牌,NodeJS Repo 将使用它来更改 kustomization.yaml 文件中的值。

 

转到 Settings > Access Tokens > Create Repository Access Token

 

image.png

 

授予写入权限,以便 Bitbucket Pipeline 能将值写入其中。点击 Create 后,您会看到如下界面:

 

Screen Shot 2024-03-08 at 2.17.37 pm.png

 

在这个窗口中,我们只需要第一部分和最后一部分,第一部分是 Auth Token,最后一部分是 Email ID。

 

因此,让我们将 Auth 令牌复制并粘贴到 NodeJS 应用程序存储库变量中去。

 

image.png

 

完成后,让我们转到 NodeJS 应用程序的 Bitbucket Pielines 部分,修改 bitbucket-pipelines.yml 文件。

 

您可以从我最初分享的 GitHub Repo 中复制 CD(又称持续交付/部署)步骤。

 

image.png

 

在第 23 行,您需要用 ArgoCD-GitOps repo URL 更新 repo URL。

 

在第 28 行,用创建 ArgoCD-GitOps Repo 访问令牌时获得的值更改用户电子邮件。

 

另外,在第 21 行,设置了手动部署触发器:

 

image.png

 

您可以移除它,在没有外部干扰的情况下持续使用 CI/CD,但不建议在生产部署中这样做。

 

保存更改后,流水线将自动运行,让我们等待 CI 和 CD 两个步骤完成。

 

image.png

 

正如你所看到的,kustomization.yaml 文件的 newTag 值应更改为 5,因此让我们去 ArgoCD-GitOps repo 检查一下提交情况。

 

image.png

 

此时 bot 已经更改了值,让我们转到 ArgoCD 控制台,看看新版本是否已经部署。

 

仅供参考,一旦检测到版本更改,ArgoCD 通常需要 2-5 分钟来更新部署

 

经过检查,我们可以清楚地看到新版本已经部署。

 

image.png

 

我们可以通过点击 pod 并检查镜像标签(如下所示)来确认修订:

 

image.png

 

我们可以看到,“5”号目前正在运行,网站也运行得很好。

 

最终,我们在 AWS EKS (Terraform) 上使用 Bitbucket Pipeline 完成了端到端的 ArgoCD GitOps。

 

此外,不要忘记删除在 EKS 或 AWS 中创建的所有资源,可以使用 kubectl命令删除我们在外部创建的所有命名空间,如 argocdnode js 应用程序的 nodejs-app,然后运行 terraform destroy 删除所有内容。

 

image.png

希望这能帮助您部署 CI/CD 应用程序部署环境。在这个软件仓库中,有多个应用程序及其 ArgoCD 部署代码,它们肯定会在多个使用场景中为你们提供帮助。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/458042.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

低代码与AI:构建面向未来的智能化应用

引言 在当今数字时代,技术的快速发展为各行各业带来了前所未有的机遇和挑战。企业和组织面临着如何迅速开发和交付高质量应用的需求,同时还需要应对日益复杂的业务需求和用户期望。在这样的背景下,低代码与人工智能(AI&#xff0…

Oracle事务槽wrap#上限问题

问题背景: 近期遇到了一个Oracle回滚段事务ID达到上限的问题,应用前台语句操作失败,出现ORA-01558: out of transaction IDs in rollback segment _SYSSMU10_4119033733$报错。 问题分析: 第一次遇到该报错,先到Oracle mos上查了…

[CISCN2019 华东南赛区]Web11

模块注入题,这类题一般拥有固定的payload。 界面大概就是这么个样子 返回了IP地址,提示getip,xff等。 这是smarty模板。很明显了,这个模板存在xff处的命令执行。抓取数据包并添加字段 X-Forwarded-For:{{system(ls)}} cat /fla…

【数据结构和算法初阶(C语言)】队列实操(概念实现+oj题目栈和队列的双向实现,超级经典!!!)

1. 队列的概念及结构 队列:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表, 队列具有先进先出 FIFO(First In First Out) 入队列:进行插入操作的一端称为队尾 出队列:进行删除操作的一端称为…

基于嵌入式的智能交通信号灯管理系统的设计与实现

项目介绍 有目共睹电子设备已经席卷了整个人类生活,他们不断改善着人们的起居住行,这也就促进了嵌入式人工智能的快速发展。 本课设模拟系统分为软硬件两部分组成。硬件部分是由两位8段数码管和LED灯构成的显示系统和控制电路等组成,能较好的…

疫情网课管理系统|基于springboot框架+ Mysql+Java+Tomcat的疫情网课管理系统设计与实现(可运行源码+数据库+设计文档+部署说明)

推荐阅读100套最新项目 最新ssmjava项目文档视频演示可运行源码分享 最新jspjava项目文档视频演示可运行源码分享 最新Spring Boot项目文档视频演示可运行源码分享 目录 前台功能效果图 ​编辑 学生功能模块 管理员功能 教师功能模块 系统功能设计 数据库E-R图设计 lun…

JVM 相关知识点记录

文章目录 前言哪些内存需要回收方法区的垃圾回收垃圾收集算法垃圾收集器年轻代进入老年代条件内存担保机制FullGC 触发时机GC日志解析日志参数 前言 JVM包含内容: 类装载子系统(Class Load SubSystem)运行时数据区(Run-Time Data Areas) 堆栈 局部变量表操作数栈动…

YOLOV5 部署:QT的可视化界面推理(创建UI,并编译成py文件)

1、前言 之前用YOLOV5 做了一个猫和老鼠的实战检测项目,本章将根据之前训练好的权重进行部署,搭建一个基于QT的可视化推理界面,可以检测图片和视频 本章使用的数据集和权重参照:YOLOV5 初体验:简单猫和老鼠数据集模型训练-CSDN博客 可视化界面如下: 2、安装Pyside6 本…

如何理解闭包

闭包是编程语言中一个重要的概念,特别是在函数式编程中常常会遇到。以下是对闭包的理解: 1. 定义: 闭包是一种函数,它引用了在其定义范围之外的自由变量(非全局变量),并且这些引用的变量在函数…

二叉树最长路径问题(x+1,x++,++x 问题详解)

首先遇到的问题是&#xff0c;在二叉树求最短路径中&#xff0c;DFS参数x的传入导致的结果不同问题 #include<iostream> #include<iomanip> #include<cstring> using namespace std; int maxi; char path[1000],ans[1000]; typedef struct BiTLnode{char da…

上海亚商投顾:沪指三连阴 创新药、资源回收概念逆势走强

上海亚商投顾前言&#xff1a;无惧大盘涨跌&#xff0c;解密龙虎榜资金&#xff0c;跟踪一线游资和机构资金动向&#xff0c;识别短期热点和强势个股。 一.市场情绪 三大指数昨日冲高回落&#xff0c;深成指、创业板指午后跌超1%&#xff0c;临近尾盘跌幅有所收窄。创新药板块…

牛客-DP38 【模板】二维差分

【模板】二维差分_牛客题霸_牛客网 (nowcoder.com) b站有视频&#xff1a;讲解前缀和和差分 二维差分_哔哩哔哩_bilibili 注意&#xff1a;差分的过程叫差分&#xff0c;而不仅仅是d[]这个数组&#xff0c;其他数组经行了差分的操作&#xff0c;就也是差分啊&#xff01;&…

搭建Docker私有仓库registry

下载registry registry是Docker官方提供的仓库镜像 拉取镜像&#xff0c;不指定版本默认拉取最新版本镜像。 docker pull registry Using default tag: latest latest: Pulling from library/registry 79e9f2f55bf5: Pull complete 0d96da54f60b: Pull complete 5b27040df4…

算法---滑动窗口练习-3(水果成篮)

水果成篮 1. 题目解析2. 讲解算法原理3. 编写代码 1. 题目解析 题目地址&#xff1a;水果成篮 2. 讲解算法原理 算法的主要思想是使用滑动窗口来维护一个包含最多两种水果的子数组。定义两个指针 left 和 right 分别表示窗口的左边界和右边界。还定义了一个数组 hash 来记录水…

数据结构的美之链表和树

有种感觉叫做&#xff0c;不同的场景&#xff0c;应用不同的数据结构和算法&#xff0c;可以大大滴优化增删改查以及存储方面等等的性能。笔者这里呢也是在最近复习准备面试的时候&#xff0c;去阅读源码&#xff0c;觉得设计这种数据结构和引用的人真的是非常牛逼&#xff0c;…

Unity Timeline学习笔记(3) - SignalTrack信号轨道和自定义带参数的Marker信号和轨道

信号轨道&#xff0c;顾名思义就是运行到某处发送一个信号。 普通用法 普通用法就是没有任何封装的&#xff0c;个人感觉特别难用&#xff0c;但是有必要理解一下工作原理。 添加信号 我们添加一个信号资源 生成后可以看到资源文件&#xff0c;这个是可以拖到SignalTrack上…

2 Redis的安装与配置

这里是要将 Redis 安装到 Linux 系统中。 1.1 Redis 的安装 1.1.1 克隆并配置主机 修改主机名&#xff1a;/etc/hostname修改网络配置&#xff1a;/etc/sysconfig/network-scripts/ifcfg-ens33 1.1.2 安装前的准备工作 &#xff08;1 &#xff09;安装 gcc &#xff08;2…

0301taildir-source报错-flume-大数据

1 基础环境简介 linux系统&#xff1a;centos&#xff0c;前置安装&#xff1a;jdk、hadoop、zookeeper、kafka&#xff0c;版本如下 软件版本描述centos7linux系统发行版jdk1.8java开发工具集hadoop2.10.0大数据生态基础组件zookeeper3.5.7分布式应用程序协调服务kafka3.0分…

私域运营的模式

私域运营的模式 | 想要建立私域流量&#xff0c;但由于对私域流量的认知不够全面&#xff0c;不知道该从何处着手进行落地实施。 整理了私域建设的五个主要模式一个SOP 供大家参考。 需要明确的是&#xff0c;每种模式都有各自的利弊&#xff0c;并不存在绝对的优劣之分。最重要…

国创证券策略:股指预计维持震荡格局 关注汽车、通信设备等板块

国创证券指出&#xff0c;近期两市指数持续反弹创新高&#xff0c;但沪指现已率先出现滞涨状况&#xff0c;一起均已进入阻力重压区。不过当时技术形状上坚持较好&#xff0c;可持续做多&#xff0c;一旦跌破重要支撑如沪指的3030点&#xff0c;则需降仓防卫&#xff0c;防止指…