在 Amazon S3 中設置頭盔 v3 圖表存儲庫 - AWS 方案指引

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

在 Amazon S3 中設置頭盔 v3 圖表存儲庫

創建者:阿布舍克夏爾馬(AWS)

環境:PoC 或試點

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

工作負載:所有其他工作

AWS 服務:Amazon S3

Summary

這種模式通過將 Helm v3 存儲庫集成到 Amazon Amazon Web Services 服務(AWS)雲上的亞馬遜 Simple Storage Service (Amazon S3),可以幫助您有效地管理 Helm v3 圖表。若要使用此模式,您必須熟悉 Kubernetes 和掌舵,這是 Kubernetes 套件管理員。使用 Helm 存儲庫存儲圖表和管制圖版本可以改善中斷期間的平均還原時間(MTTR)。 

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

先決條件和限制

先決條件

  • 有效的 AWS 帳戶

  • Python 版本 2.7.12 或更高版本

  • pip

  • 具有子網路和 Amazon 彈性運算雲端 (Amazon EC2) 執行個體的虛擬私有雲 (VPC) 

  • 安裝在 EC2 實例上的 Git

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

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

  • AWS CodeCommit 儲存庫

  • AWS 命令列界面 (AWS CLI)

產品版本

  • 頭盔第 3 版

  • Python 版本 2.7.12 或更高版本

架構

目標技術堆疊

  • Amazon S3

  • AWS CodeCommit

  • Helm

  • 庫貝克特爾

  • Python 和點子

  • Git

  • 幫助 -3 插件

目標架構

自動化和規模

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

  • GitVersion 或者 Jenkins 內建編號可用於自動化圖表的版本控制。

工具

  • 掌舵 — Helm 是 Kubernetes 的套件管理員,可協助您在 Kubernetes 叢集上安裝及管理應用程式。

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

  • Helm-S3 插件 — 幫助 -3 插件支持與 Amazon S3 的交互。它可以與頭盔 v2 或頭盔 v3 一起使用。

史诗

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

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

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

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

雲端管理員、 DevOps 工程師
任務描述所需技能
為舵圖表創建 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 repo add stable-myapp s3://my-helm-charts/stable/myapp/

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

如果您的 CodeCommit 存儲庫中沒有本地 Helm 圖表,請運行以下命令從存儲 GitHub 庫克隆它們:git clone <url_of_your_helm_source_code>.git

雲端管理員、 DevOps 工程師
打 Package 當地的頭盔圖表。

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

例如,此模式使用圖my-app表。此命令會將my-app圖表資料夾的所有內容封裝到封存檔案中,該檔案會使用檔Chart.yaml案中提到的版本號碼來命名。

雲端管理員、 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 工程師
任務描述所需技能
修改並封裝圖表。

在中values.yaml,將replicaCount值設定為1,然後封裝圖表,這次Chart.yaml將中的版本變更為0.1.1。版本控制理想地通過自動化通過使用 CI/CD 管道中的工具 GitVersion 或 Jenkins 構建編號來實現。自動化版本號超出此模式的範圍。若要封裝圖表,請執行下列命令:helm package ./my-app/

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

若要將新套件 (0.1.1 版) 推送至 Amazon S3 中的 my-helm-chartsHelm 儲存庫,請執行下列命令: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 掌舵儲存庫安裝新版本 (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 工程師