本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用亚马逊和亚马逊 S3 中的 Helm 图表存储库部署 Kubernetes 资源EKS和软件包
由 Sagar Panigrahi 创作 () AWS
摘要
此模式可帮助您高效管理 Kubernetes 应用程序,无论复杂性如何。此模式将 Helm 集成至现有持续集成和持续交付 (CI/CD) 管道,以便将应用程序部署至 Kubernetes 集群。Helm 是 Kubernetes 软件包管理器,可以帮助您管理 Kubernetes 应用程序。Helm 图表可用于定义、安装和升级复杂的 Kubernetes 应用程序。图表可以版本控制并存储在 Helm 存储库中,这样可以缩短中断期间恢复 (MTTR) 的平均时间。
这种模式在 Kubernetes 集群中使用亚马逊 Elastic Kubernetes Servic EKS e(亚马逊)。其使用 Amazon Simple Storage Service (Amazon S3) 作为 Helm 图表存储库,如此整个组织的开发人员即可集中管理和访问此类图表。
先决条件和限制
先决条件
具有虚拟私有云的活跃亚马逊 Web Services (AWS) 账户 (VPC)
Amazon EKS 集群
在 Amazon EKS 集群中设置并准备好处理工作负载的工作节点
Kubectl 用于在客户端计算机上为目标集群配置 Amazon EKS kubeconfig 文件
AWS创建 S3 存储桶的 Identity and Access Management (IAM) 访问权限
IAM(以编程方式或角色)从客户端计算机访问 Amazon S3
源代码管理和 CI/CD 管道
限制
目前不支持升级、删除或管理自定义资源定义 (CRDs)。
如果您使用的是引用 a 的资源CRD,则CRD必须单独安装(在图表之外)。
产品版本
Helm v3.6.3
架构
目标技术堆栈
Amazon EKS
Amazon VPC
Amazon S3
源代码管理
Helm
Kubectl
目标架构

自动化和扩缩
AWS CloudFormation 可用于自动创建基础架构。有关更多信息,请参阅亚马逊EKS文档AWS CloudFormation中的使用创建亚马逊EKS资源。
Helm 将整合至您现有的 CI/CD 自动化工具中,以自动执行 Helm 图表的打包和版本控制(超出了此模式范围)。
GitVersion 或者 Jenkins 内部版本号可用于自动化图表的版本控制。
工具
工具
亚马逊 EKS — 亚马逊 Elastic Kubernetes Servic EKS e(亚马逊)是一项托管服务,无需站起来或维护自己的 AWS Kubernetes 控制平面,即可在上面运行 Kubernetes。Kubernetes 是一个用于实现容器化应用程序的部署、扩缩和管理自动化的开源系统。
Helm
– Helm 是 Kubernetes 的软件包管理器,可帮助您在 Kubernetes 集群上安装和管理应用程序。 Amazon S3 – Amazon Simple Storage Service (Amazon S3) 是一项面向互联网的存储服务。您可以通过 Amazon S3 随时在 Web 上的任何位置存储和检索的任意大小的数据。
Kubectl
– Kubectl 是针对 Kubernetes 集群运行命令的命令行实用程序。
代码
示例代码附后。
操作说明
任务 | 描述 | 所需技能 |
---|---|---|
安装 Helm 客户端。 | 若要在本地系统上下载并安装 Helm 客户端,请使用以下命令。
| DevOps 工程师 |
验证 Helm 安装。 | 要验证 Helm 是否能够与 Amazon EKS 集群中的 Kubernetes API 服务器通信,请运行。 | DevOps 工程师 |
任务 | 描述 | 所需技能 |
---|---|---|
为创建头盔图表NGINX。 | 若要在客户端计算机上创建名为 | DevOps 工程师 |
查看图表结构。 | 若要查看图表的结构,请运行树命令 | DevOps 工程师 |
在图表中停用服务账户创建。 | 在 | DevOps 工程师 |
验证 (lint) 修改后的图表是否存在语法错误。 | 若要验证将图表安装至目标集群之前图表是否存在任何语法错误,请运行 | DevOps 工程师 |
安装部署 Kubernetes 资源的图表。 | 若要运行 Helm 图表 安装程序,请使用以下命令。
可选 | DevOps 工程师 |
查看 Amazon EKS 集群中的资源。 | 若要查看
| DevOps 工程师 |
任务 | 描述 | 所需技能 |
---|---|---|
修改并升级版本。 | 若要修改图表,请在
| DevOps 工程师 |
查看 Helm 版本的历史记录。 | 若要列出使用 Helm 安装的特定版本的所有修订版本,请运行以下命令。
| DevOps 工程师 |
查看特定修订版的详细信息。 | 在切换或回滚至工作版本前以及在安装修订版前进行额外验证前,请使用以下命令查看已传递至每个修订版本的值。
| DevOps 工程师 |
回滚至先前版本。 | 若要回滚至以前的修订版,请使用以下命令。
此示例正在回滚至修订版号 1。 | DevOps 工程师 |
任务 | 描述 | 所需技能 |
---|---|---|
为 Helm 图表创建 S3 存储桶。 | 创建唯一 S3 存储桶。在存储桶中,创建一个名为 | 云管理员 |
安装适用于 Amazon S3 的 Helm 插件。 | 若要在客户端计算机上安装 helm-s3 插件,请使用以下命令。
请注意:提供使用插件版本 0.9.0 及更高版本的 Helm V3 支持。 | DevOps 工程师 |
初始化 Amazon S3 Helm 存储库。 | 若要将目标文件夹初始化为 Helm 存储库,请使用以下命令。
该命令在目标系统中创建 | DevOps 工程师 |
将 Amazon S3 存储库添加至 Helm。 | 要向客户端计算机中添加存储库,请使用以下命令。
此命令将别名添加至 Helm 客户端计算机中的目标存储库。 | DevOps 工程师 |
查看存储库列表。 | 若要查看 Helm 客户端计算机中的存储库列表,请运行 | DevOps 工程师 |
任务 | 描述 | 所需技能 |
---|---|---|
打包图表。 | 若要打包您创建的 | DevOps 工程师 |
将包存储至 Amazon S3 Helm 存储库。 | 若要将数据包上传至 Amazon S3 中的 Helm 存储库,请使用正确的
| DevOps 工程师 |
搜索 Helm 图表。 | 若要确认图表同时出现在本地和 Amazon S3 的 Helm 存储库中,请运行以下命令。
| DevOps 工程师 |
任务 | 描述 | 所需技能 |
---|---|---|
修改并打包图表。 | 将 最好使用诸如 CI/CD 管道中的 Jenkins 内部版本号 GitVersion 之类的工具通过自动化更新版本控制。自动生成的版本号超出了这种模式范围。 | DevOps 工程师 |
将新版本推送至 Amazon S3 中的 Helm 存储库。 | 若要将版本为 0.1.1 的新软件包推送至 Amazon S3 中的
| DevOps 工程师 |
任务 | 描述 | 所需技能 |
---|---|---|
搜索 my-nginx 图表的所有版本。 | 若要查看图表的所有可用版本,请使用
如果没有标志,Helm 默认会显示图表的最新上传版本。 | DevOps 工程师 |
从 Amazon S3 Helm 存储库安装图表。 | 上一个任务的搜索结果显示了
| DevOps 工程师 |
相关资源
附件
要访问与此文档相关联的其他内容,请解压以下文件:attachment.zip