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

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

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

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

環境:PoC 或試點

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

工作負載:所有其他工作

AWS服務:Amazon S3

Summary

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

此模式用AWS CodeCommit 於 Helm 存儲庫創建,並使用 S3 存儲桶作為 Helm 圖表存儲庫,以便組織內的開發人員可以集中管理和訪問圖表。

先決條件和限制

先決條件

  • 活躍AWS帳戶

  • Python 版本 2.7.12 或更高版本

  • pip

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

  • Git 安裝在EC2實例上

  • AWS建立 S3 儲存貯體的身分和存取管理 (IAM) 存取權

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

  • AWS CodeCommit 儲存庫

  • AWS指令行介面 (AWSCLI)

產品版本

  • 頭盔第 3 版

  • Python 版本 2.7.12 或更高版本

架構

目標技術堆疊

  • Amazon S3

  • AWS CodeCommit

  • Helm

  • 庫貝克特爾

  • Python 和點子

  • Git

  • 幫助 -3 插件

目標架構

掌舵存儲庫 CodeCommit,EC2實例與頭盔,Git 和 Helm-S3,頭盔圖表在 Amazon S3。

自動化和規模

  • 您可以將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 工程師

相關資源