使用 Terraform 功能协调 CI CD 管道第 1 部分的部署

小夏 社会 更新 2024-03-06

在当今快节奏的开发环境中,无缝、强大的 CI CD 管道对于交付高质量软件至关重要。 在本文中,我们将引导您完成使用 Bitbucket Pipeline、Argocd Gitops 和 AWS EKS 设置部署的步骤,所有这些都是通过 Terraform 的强大功能进行编排的。 在第 1 部分中,我们将介绍使用 Terraform 创建和部署 CI CD 管道的前三个步骤。

我们有两个环境,一个是私有节点 + 2 nat,另一个是公共节点 + 1 nat。

为了演示,以下内容将使用 AWS Ubuntu 2204.3 个 LTS EC2 实例(已连接)administratoraccess要克隆存储库,请执行以下操作:

然后将目录更改为:

eks-tf-bitbucket-pipeline-argocd-gitops/eks tf/eks infra-tf (public node) -prod
或者你可以使用 dev 版本,它完全相同,只是 dev 版本有 2 个 nat,而 prod 版本只有 1 个 nat。

现在,在应用此功能创建 AWS EKS 基础架构之前,您需要执行以下操作。

在您的 PC 上安装以下工具(根据操作系统选择)。

aws cli:

terraform cli:

kubectl cli:https:

如果要在自己的计算机上运行脚本,请配置 AWS 访问密钥。

立即运行$ terraform fmt用于格式化 Terraform 的命令

接下来,您可以在以下位置执行此操作:vars.tf在文件中编辑 EKS 部署的环境名称、K8S 版本和区域。

它也可以使用ap-southeast-1area,并通过default保存文件。

别忘了改变eks-node-groups-policy.tf文件desired_sizeinstance_types

您应为 EKS 集群节点选择中型或更好的大型实例,否则在安装 Argocd 或其他应用程序时会遇到问题,因为所有这些 EC2 实例类型对 Pod 的数量都有限制,可在此处找到

立即运行$ terraform init依赖:

之后,您可以根据自己的喜好运行它$ terraform plan$ terraform apply

输入值yes并等待它完成,这可能需要长达 10-15 分钟的时间。

TF 将创建以下 AWS 服务:

VPC 子网。

子网路由表。

IAM 角色和策略。

Internet 网关。

NAT网关。

弹性 ipeks 集群和节点组。

当 tf 脚本成功完成时,你将在最后看到类似于以下内容的屏幕:

您还可以在 AWS 控制台中查看是否已创建 EKS 集群和所有资源。

现在我们需要授予 kubectl 对 eks 集群的访问权限,为此我们需要运行以下命令:

$ aws eks update-kubeconfig - region region-code - name my-cluster
您需要根据您的环境进行更新region-codemy-cluster名称,例如:

然后关闭此警告:

为此,您需要使用以下命令将 IAM 用户名和 arn 添加到 EKS configmap:

$ kubectl edit configmap aws-auth -n kube-system
它将打开一个新窗口,如下所示:

之后,在 maproles 段落后添加以下内容:

mapusers: |groups: —system:masters userarn: arn:aws:iam::xxxxxxxxxxxx:user/devashish username: devashish
不要忘记更改您尝试访问 EKS 控制台的 IAM 用户名。

如果使用 root 权限创建和访问 EKS 集群,则必须使用 root 的 userarn 和用户名。

然后使用 WQ 保存文件并刷新 EKS 集群页面 - 现在 IAM 用户警告应该消失了。

此外,您还可以在 eks 集群的计算选项卡中看到之前由于 RBAC 权限问题而未出现的节点。

您还可以运行kubectl命令检查 EKS 集群是否连接到 kubectl CLI 工具。

现在,EKS 集群已准备就绪并正在运行,让我们继续下一步。

为此,我们将使用 repo **addons 自述文件md,只需按照文件中的步骤操作即可。

安装 argocd

您可以使用以下命令检查正在运行的 argocd pod:

$ kubectl get po -n argocd
现在 Argocd 已经安装完毕,让我们继续下一步。

使用 ACM 为 NLB 部署 ingress-nginx

在继续下一步之前,我们需要以下内容:

VPC CIDR,也称为 proxy-real-ip-cidr

AWS ACM 证书 ARN ID,即 ARN:AWS:ACM

因此,如果没有,请创建它们。

首先,您需要使用 wget **ingress-nginx for nlb 控制器脚本。

$ wget
然后使用任何文本编辑器将其打开。

$ nano deploy.yaml
然后根据配置更改这些值。

根据您的信息更改值后,请确保在创建 ACM 证书时使用通配符,然后运行以下命令:

$ kubectl apply -f deploy.yaml
部署 Argocd Pod Ingress 服务。

先用它$ nano ingress.yaml创建一个 yaml 文件并粘贴 eks 插件自述文件MD 文件。 别忘了改变host价值。

然后运行:

$ kubectl apply -f ingress.yaml
在 EKS 上部署 argocd 服务入口文件。 您可以执行以下命令,查看服务是否部署成功。

$ kubectl get ingress -n argocd
地址值需要一些时间才能显示,因此请耐心等待。 然后创建一个记录,将 argocd 子域指向该 nlb。

现在,您可以访问**:

从 CLI 恢复密码并使用密码登录 Argocd,用户名应为 admin。

使用以下命令检索密码:

$ kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="" | base64 -d; echo echo echo.| base64 -d; echo
之后,您就可以成功登录了。

现在 argocd 已经启动并运行,让我们继续下一步。

为此,我们需要创建一个 Bitbucket 和 AWS ECR 存储库,其中 BitBucket 管道会将应用程序部署到 ECR 存储库。

转到您的 Bitbucket ID 并创建一个新的存储库:

创建存储库后,我们需要 3 个文件:

main.js

dockerfile

bitbucket-pipeline.yaml

bitbucket pipeline + dockerfile示例文件位于文件夹下的存储库中。

因此,让我们根据您的应用程序创建所有 3 个文件。 我会在主要中做到这一点JS 文件中使用了示例 Node JS 应用程序。

请记住在创建 Bitbucket 管道 YAML 文件之前创建 AWS ECR 存储库,因为需要它才能运行。 例如,以下私有存储库是在 AWS ECR 中创建的。

现在,我们需要将 ECR 存储库中的一些值复制并粘贴到 Bitbucket Pipeline 中的 YAML 文件中。

请确保根据需要更新分支名称和 -profile 标签,否则管道将无法访问 IAM 访问密钥。

现在,我们需要创建一个具有 ECR 存储库访问权限的 AWS 访问密钥对,并将其作为以下变量添加到 Bitbucket 管道中。

ecr_access_key

ecr_secret_key

ecr_region

此外,为了向 Bitbucket Pipeline 添加存储库变量,我们首先需要启用它。

然后,对于 ECR 存储库访问,我们需要创建一个有权访问 amazonec2containerregistrypoweruser 的 IAM 用户。

然后创建一个 AWS 访问密钥对并将其添加到 Bitbucket Pipelines 存储库变量,如下所示:

之后,存储库中应包含以下文件:

请确保写入正确的文件名,否则可能无法正常工作,并且管道将无法执行。

完成所有步骤后,管道将自动运行。

几分钟后,管道应成功运行,容器映像将部署到 ECR 存储库。

我们可以看到标记为 1 的图片已成功上传到 ECR,因为我们使用了它作为图像的标记,因此更容易通过相应的 ECR 存储库找到管道编号。

现在,部署到 ECR 存储库的 Bitbucket 管道已启动并运行,可以执行下一步操作。

在第 2 部分中,我们将更详细地介绍最后两个重要步骤,并向您展示如何使用 Terraform 在 Bitbucket Pipeline 上实现端到端 Argocd Gitops。

相似文章

    聚焦光伏出海 借助 Zendesk 实现客户服务转型

    随着海外光伏产业的快速发展,全球对可再生能源的需求不断增长。这种增长不仅是对可持续发展承诺的体现,也是行业发展的重要指标。随着这种增长,跨时区和语言差异提供客户服务已成为一项挑战。 光伏产业的兴起 光伏产业正在全球范围内快速扩张,这既证明了对可再生能源的需求不断增长,也反映了行业对可持续发展的承诺。...

    Angew利用缺陷的力量,与Rh2P催化剂实现高效的碱性氢氧化物反应

    背景 催化剂表面原子元素性的突破可以建立协同活性中心,有利于复杂的多步催化反应。华侨大学的谢水芬团队报道了一种缺陷衍生策略,在纳米级RhP电催化剂表面产生磷空位 p 空位 从而显著提高了碱性氢氧化物反应 HOR 的电催化性能。DFT计算为该策略的机理提供了原子级的理论解释。计算方法 DFT 计算是使...

    我听不清,如何借助助听器锻炼?

    戴上助听器后,先在安静的环境中交流,一开始不要戴太久,多与人交流,让家人和你说话,不要像以前那样大声,而是说话慢一些,这样你的听力才会提高。重要的是要记住,助听器只是助听器,而不是我们耳朵的完全替代品。.选择合适的助听器非常重要。在购买助听器之前,最好咨询专业的听力学家或医生,了解您的听力状况和需求...

    揭秘外贸行业如何借助CRM系统提升竞争力

    在竞争激烈的外贸市场中,如何提高企业竞争力,扩大市场份额成为关键。CRM系统作为企业管理客户关系的有力工具,在外贸行业中扮演着越来越重要的角色。本文将揭示外贸行业如何借助CRM系统提升竞争力。 优化客户管理。外贸行业面临着复杂的客户群体和多样化的客户需求。CRM系统可以集中管理客户信息,包括客户的基...

    借助 Google SEO 轻松提升网站流量

    答案是 选择竞争低 流量一定的关键词。在数字时代,拥有高流量 对企业和个人来说至关重要。通过有效利用 Google 搜索引擎优化 SEO 策略,您可以显着增加流量。本文将深入探讨如何通过 Google SEO 提高您的知名度并吸引更多访问者。首先,了解 Google 如何处理搜索结果并对其进行排名非...