本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 Amazon EKS 和 Amazon S3 中的頭盔圖儲存庫來部署 Kubernetes 資源和套件
由薩加爾·帕尼格拉希(AWS)創建
環境:PoC 或試點 | 技術:容器和微服務; DevOps | AWS 服務:Amazon EKS |
Summary
此模式可協助您有效管理 Kubernetes 應用程式,無論其複雜性為何。該模式將 Helm 整合到您現有的持續整合和持續交付 (CI/CD) 管道中,以便將應用程式部署到 Kubernetes 叢集中。掌舵是一個 Kubernetes 軟件包管理器,可幫助您管理 Kubernetes 應用程序。掌舵圖有助於定義、安裝和升級複雜的 Kubernetes 應用程式。圖表可以版本化並存儲在 Helm 存儲庫中,這可以改善中斷期間的平均還原時間(MTTR)。
此模式將 Amazon Elastic Kubernetes Service (Amazon EKS) 用於 Kubernetes 叢集。它使用 Amazon Simple Storage Service (Amazon S3) 做為 Helm 圖儲存庫,因此整個組織的開發人員都可以集中管理和存取圖表。
先決條件和限制
先決條件
具有虛擬私有雲 (VPC) 的有效亞馬遜網路服務 (AWS) 帳戶
Amazon EKS 集群
在 Amazon EKS 叢集中設定工作者節點並準備好執行工作負載
用於為用戶端機器中的目標叢集設定 Amazon EKS 庫貝設定檔案
用於建立 S3 儲存貯體的 AWS Identity and Access Management (IAM) 存取權
從用戶端機器存取 Amazon S3 的 IAM (程式設計或角色)
源代碼管理和 CI/CD 管道
限制
目前不支援升級、刪除或管理自訂資源定義 (CRD)。
如果您使用參照 CRD 的資源,則必須單獨安裝 CRD(在圖表之外)。
產品版本
頭盔
架構
目標技術堆疊
Amazon EKS
Amazon VPC
Amazon S3
源代碼管理
Helm
庫貝克特爾
目標架構
![客戶頭盔和 Kubectl 在 Amazon S3 中為 Amazon EKS 集群部署頭盔圖存儲庫。](images/pattern-img/d3f993e6-4d96-4cb9-a075-c4debe431fd7/images/2f09f7bb-440a-4c4b-b29f-08d136d1ada4.png)
自動化和規模
AWS CloudFormation 可用於自動化基礎設施的建立。如需詳細資訊,請參閱 Amazon EKS 文件 CloudFormation中的使用 AWS 建立 Amazon EKS 資源。
Helm 將被納入您現有的 CI/CD 自動化工具中,以自動化 Helm 圖表的包裝和版本控制(超出此模式的範圍)。
GitVersion 或者 Jenkins 內建編號可用於自動化圖表的版本控制。
工具
工具
Amazon EKS — Amazon Elastic Kubernetes Service (Amazon EKS) 是一項受管服務,可在 AWS 上執行 Kubernetes,而不需要站立或維護自己的 Kubernetes 控制平面。Kubernetes 是一套開放原始碼系統,用於容器化應用程式的自動化部署、擴展與管理。
掌舵
— Helm 是 Kubernetes 的套件管理員,可協助您在 Kubernetes 叢集上安裝及管理應用程式。 Amazon S3 — Amazon Simple Storage Service (Amazon S3) 是互聯網的存儲。您可以使用 Amazon S3 隨時從 Web 任何地方存放和擷取任意資料量。
Kubectl — Kubectl
是一個命令列公用程式,可針對 Kubernetes 叢集執行命令。
Code
範例程式碼已附加。
史诗
任務 | 描述 | 所需技能 |
---|---|---|
安裝 Helm 客戶端。 | 要在本地系統上下載並安裝 Helm 客戶端,請使用以下命令。
| DevOps 工程師 |
驗證頭盔的安裝。 | 若要驗證 Helm 是否能夠與 Amazon EKS 叢集內的 Kubernetes API 伺服器通訊,請執行。 | DevOps 工程師 |
任務 | 描述 | 所需技能 |
---|---|---|
為 NGINX 創建一個頭盔圖表。 | 要創建在客戶端機器 | DevOps 工程師 |
檢閱圖表的結構。 | 若要檢閱圖表的結構,請執行 tree 指令 | DevOps 工程師 |
停用圖表中的服務帳戶建立。 | 在 | DevOps 工程師 |
驗證 (lint) 修改過的圖表是否存在語法錯誤。 | 若要在目標叢集中安裝之前驗證圖表是否有任何語法錯誤,請執行 | DevOps 工程師 |
安裝圖表以部署 Kubernetes 資源。 | 要運行 Helm 圖安裝,請使用以下命令。
選用 | DevOps 工程師 |
檢閱 Amazon EKS 叢集中的資源。 | 若要檢閱作為命
| DevOps 工程師 |
任務 | 描述 | 所需技能 |
---|---|---|
修改並升級發行版本。 | 若要修改圖表,請在中
| DevOps 工程師 |
查看頭盔版本的歷史記錄。 | 若要列出已使用 Helm 安裝之特定版本的所有修訂版本,請執行下列命令。
| DevOps 工程師 |
檢閱特定修訂的詳細資訊。 | 在切換或復原至工作中版本之前,以及在安裝修訂版之前進行額外的驗證層,請使用下列指令檢視哪些值已傳遞給每個修訂版本。
| DevOps 工程師 |
回滾到以前的版本。 | 若要復原至先前的修訂版,請使用下列指令。
此範例將復原至修訂編號 1。 | DevOps 工程師 |
任務 | 描述 | 所需技能 |
---|---|---|
為舵圖表創建 S3 存儲桶。 | 建立唯一的 S3 儲存貯體。在值區中,建立名為的資料夾 | 雲端管理員 |
安裝 Amazon S3 的頭盔插件。 | 要在客戶端計算機上安裝 helm-s3 插件,請使用以下命令。
注:頭盔 V3 支持可與插件版本 0.9.0 及以上。 | DevOps 工程師 |
初始化 Amazon S3 掌舵存儲庫。 | 要將目標文件夾初始化為 Helm 存儲庫,請使用以下命令。
命令會在目標中建立 | DevOps 工程師 |
將 Amazon S3 存儲庫添加到掌舵。 | 若要在用戶端機器中新增存放庫,請使用下列命令。
此命令將別名添加到 Helm 客戶端機器中的目標存儲庫。 | DevOps 工程師 |
檢閱儲存庫清單。 | 若要檢視 Helm 用戶端機器中的存放庫清單,請執行 | DevOps 工程師 |
任務 | 描述 | 所需技能 |
---|---|---|
封裝圖表。 | 若要封裝您建立的 | DevOps 工程師 |
將套件存放在 Amazon S3 掌舵儲存庫中。 | 若要將套件上傳到 Amazon S3 中的 Helm 儲存庫,請使用
| DevOps 工程師 |
搜尋「頭盔」圖表。 | 若要確認圖表同時出現在本機和 Amazon S3 的 Helm 儲存庫中,請執行下列命令。
| DevOps 工程師 |
任務 | 描述 | 所需技能 |
---|---|---|
修改並封裝圖表。 | 在中 版本控制最理想地通過使用 CI/CD 管道中的工具(例如 GitVersion Jenkins 構建編號)進行自動化更新。自動化版本號超出此模式的範圍。 | DevOps 工程師 |
將新版本推送到 Amazon S3 中的頭盔存儲庫。 | 若要將版本為 0.1.1 的新套件推送至 Amazon S3 中的
| DevOps 工程師 |
任務 | 描述 | 所需技能 |
---|---|---|
搜索所有版本的 my-nginx 圖表。 | 若要檢視圖表的所有可用版本,請使用
如果沒有旗標,Helm 預設會顯示圖表的最新上傳版本。 | DevOps 工程師 |
從 Amazon S3 掌舵存儲庫安裝圖表。 | 先前工作的搜尋結果會顯示
| DevOps 工程師 |
相關資源
附件
若要存取與此文件相關聯的其他內容,請解壓縮下列檔案:attachment.zip