使用 Terraform 功能協調 CI CD 管道第 1 部分的部署

Mondo 社會 更新 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 如何處理搜尋結果並對其進行排名非...