在 Amazon S3 中設置一個掌舵 v3 圖表存儲庫 - AWS Prescriptive Guidance

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

在 Amazon S3 中設置一個掌舵 v3 圖表存儲庫

由阿比舍克·夏爾馬 (AWS) 創建

環境:PoC 或試驗

技術:DevOps;容器與微服務;現代化

工作負載:所有其他工作負載

AWS 服務:Amazon S3

Summary

透過將 Helm v3 儲存庫整合到 Amazon Web Services (AWS) 雲端上的 Amazon SSimple Storage Service (Amazon S3),可協助您有效管理 Helm Service (Helm Storage Service)。要使用這種模式,你必須熟悉 Kubernetes 和頭盔,這是一個 Kubernetes 軟件包管理器。使用 Helm 儲存庫儲存圖表和管制圖版本可以改善中斷期間恢復 (MTTR) 的平均時間。 

此模式使用 AWS CodeCommit 來建立 Helm 儲存庫,並使用 S3 儲存貯體做為 Helm 圖表儲存庫,以便整個組織的開發人員可以集中管理和存取圖表。

先決條件和限制

先決條件

  • 作用中的 AWS 帳戶

  • Python 2.7.12 版或更新版本

  • pip

  • 具有子網路和 Amazon VPC Elastic Compute Cloud (Amazon EC2) 執行個體 

  • 安裝在 EC2 執行個體

  • 建立 S3 儲存貯體的 AWS Identity and Access Management (IAM) 存取

  • 從用戶端機器存取 Amazon S3 的 IAM (程式設計或角色)

  • AWS CodeCommit 儲存庫

  • AWS 命令列界面 (AWS CLI)

產品版本

  • 頭盔 v3

  • Python 2.7.12 版或更新版本

Architecture

目標技術堆疊

  • Amazon S3

  • AWS CodeCommit

  • 頭盔

  • 庫貝特

  • Python 和 pip

  • Git

  • 管理-3 外掛程式

目標架構

自動化和擴充

  • 您可以將 Helm 納入現有的持續整合/持續交付 (CI/CD) 自動化工具中,以自動化 Helm 圖的封裝和版本控制 (超出此模式的範圍)。

  • GitVersion 或詹金斯構建號可以用來自動化圖表的版本控制。

Tools

  • 頭盔— Helm 是 Kubernetes 的套件管理工具,可協助您安裝和管理 Kubernetes 叢集上的應用程式。

  • Amazon S3— Amazon Simple Storage Service (Amazon S3) 是網際網路儲存服務。您可以使用 Amazon S3 隨時從 Web 任何地方存放和擷取任意資料量。

  • 管理-3 外掛程式— 提示-3 外掛程式支援與 Amazon S3 互動。它可以與頭盔 v2 或頭盔 v3 一起使用。

Epics

任務描述所需技能
安裝頭盔 v3 用戶端。

若要在您的本機系統上下載並安裝 Helm 用戶端,請執行下列命令:sudo curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash

雲端管理員, DevOps 工程師
驗證頭盔安裝。

若要驗證 Helm 用戶端,請執行下列命令:helm version --short

雲端管理員, DevOps 工程師
任務描述所需技能
為 Helm 圖表創建 S3 儲存貯體。

創建一個獨特的 S3 存儲桶。在儲存貯體中,建立名為stable/myapp。此模式中的示例使用s3://my-helm-charts/stable/myapp作為目標圖表儲存庫。

雲端管理員, DevOps 工程師
安裝適用於 Amazon S3 的手臂 3 外掛程式。

若要在用戶端機器上安裝 Helm-s3 外掛程式,請執行下列命令:helm plugin install https://github.com/hypnoglow/helm-s3.git

雲端管理員, DevOps 工程師
初始化 Amazon S3 頭盔存儲庫。

若要將目標資料夾初始化為 Helm 儲存庫,請使用下列命令:helm s3 init s3://my-helm-charts/stable/myapp 

命令會建立index.yaml檔案,以追蹤儲存在該位置的所有圖表資訊。

雲端管理員, DevOps 工程師
驗證新創建的 Helm 存儲庫。

若要驗證index.yaml檔案已建立,請執行下列命令:aws s3 ls s3://my-helm-charts/stable/myapp/

雲端管理員, DevOps 工程師
將 Amazon S3 存放庫新增到用戶端機器上的 Helm。

若要將目標儲存庫別名新增至 Helm 用戶端機器,請使用下列命令:helm repo add stable-myapp s3://my-helm-charts/stable/myapp/

雲端管理員, DevOps 工程師
任務描述所需技能
克隆你的頭盔圖表。

如果您的 CodeCommit 存放庫中沒有本機頭盔圖表,請執行下列命令從 GitHub 存放庫複製它們:git clone <url_of_your_helm_source_code>.git

雲端管理員, DevOps 工程師
包裝本地頭盔圖表。

若要封裝您建立或複製的圖表,請使用下列命令:helm package ./my-app 

作為一個例子,這種模式使用my-app圖表。這個命令會封裝my-app圖表資料夾複製到封存檔案中,其名稱是使用Chart.yamlfile.

雲端管理員, DevOps 工程師
將本地軟件包存儲在 Amazon S3 頭盔存儲庫中。

若要將本機套件上傳到 Amazon S3 中的 Helm 存放庫,請執行下列命令:helm s3 push ./my-app-0.1.0.tgz stable-myapp

在命令中,my-app是您的圖表文件夾名稱,0.1.0中提到的圖表版本Chart.yaml,以及stable-myapp是目標存儲庫別名。

雲端管理員, DevOps 工程師
搜尋頭盔圖表。

若要確認圖表同時顯示在 Amazon S3 Helm 儲存庫中,請執行下列命令:helm search repo stable-myapp

雲端管理員, DevOps 工程師
任務描述所需技能
修改並封裝圖表。

Invalues.yaml,設定replicaCount值為1,然後封裝圖表,這次變更Chart.yaml0.1.1。版本控制是通過使用像 GITVersion 或 Jenkins 在 CI/CD 管道中的工具自動化來實現的理想選擇。自動化版本號碼並不在此模式範圍之內。若要封裝圖表,請執行下列命令:helm package ./my-app/

雲端管理員, DevOps 工程師
將新版本推送到 Amazon S3 中的頭盔存儲庫。

若要將新的套件,0.1.1 版本,推送至我的圖表在 Amazon Selm Storage (Amazon S3) 中,執行下列命令:helm s3 push ./my-app-0.1.1.tgz stable-myapp

雲端管理員, DevOps 工程師
驗證更新的頭盔圖表。

若要確認更新的圖表同時顯示在本機和 Amazon S3 Helm 存放庫中,請執行下列命令。

helm repo update

helm search repo stable-myapp

雲端管理員, DevOps 工程師
任務描述所需技能
搜尋所有版本的我的應用程式圖表。

若要檢視圖表的所有可用版本,請使用--versions旗標:helm search repo my-app --versions 

如果沒有旗標,Helm 預設會顯示圖表的最新上傳版本。

DevOps 工程師
從 Amazon S3 頭盔存儲庫安裝圖表。

自動安裝已超出此病毒碼的範圍,但您可以手動安裝。上一個工作的搜尋結果會顯示多個版本的my-app圖表。若要從 Amazon S3 Helm 存放庫安裝新版本 (0.1.1),請使用下列命令:helm upgrade --install my-app-release stable-myapp/my-app --version 0.1.1 --namespace dev

DevOps 工程師
任務描述所需技能
檢閱特定修訂版本的詳細資訊。

自動復原已超出此模式的範圍,但您可以手動復原至較早的版本。在切換或復原至作用中版本之前,以及在安裝修訂版本之前進行額外的驗證層之前,請使用下列指令檢視傳遞給每個修訂的值:helm get values --revision=2 my-app-release

DevOps 工程師
轉返為先前的版本。

自動化轉返並不在此模式範圍之內。若要手動復原至先前的修訂,請使用下列指令:helm rollback my-app-release 1 

這個例子是回滾到修訂號碼 1。

DevOps 工程師