亚马逊AWS官方博客

基于 AWS ECR 或 S3 搭建 Helm Chart 仓库

背景:

随着容器化技术的普及,越来越多的公司选择使用Kubernetes 管理云平台中多主机上的容器化应用。Helm 是查找、分享和使用软件构建 Kubernetes 的最优方式之一。如何高可用、可伸缩的管理 Helm Chart 成为研发团队必须要考虑的问题之一。

在 AWS 上,我们可以使用 S3 或 ECR 快速搭建一个高可用的 Helm Chart 仓库。

一、基于 S3
1、Helm S3插件配置

# 安装helm-S3插件
helm plugin install https://github.com/hypnoglow/helm-s3.git 
# 初始化 S3 目录(假设名为 my-helm-charts 的S3存储桶已经存在) 
helm s3 init s3://my-helm-charts/charts/
helm repo add my-helm-charts s3://my-helm-charts/charts/
# 查看my-helm-charts repo是否已经添加到本地
helm repo list

2、创建 chart 上传到 S3

# 创建chart
helm create my-nginx
# 验证chart是否有语法错误
helm lint my-nginx/
# 打包helm chart
helm package my-nginx/ 
# 推送my-nginx helm chart 到 S3 
helm s3 push my-nginx-0.1.0.tgz my-helm-charts --force

3、安装 chart 到 EKS/Kubernetes

# 从Helm s3 repo 安装my-nginx chart到EKS/ Kubernetes集群  
helm install my-nginx my-helm-charts/my-nginx

二、基于ECR
1、须知

(1)下文中的 XXXXXXXXXXXX 代表您的 AWS AccountID

(2)请确保您的账号下对应区域内名称为 artifact-test 的 ECR repository 已经提前创建好

2、创建 chart 并推送到 ECR

# 在 Helm 客户端中启用 OCI 支持
export HELM_EXPERIMENTAL_OCI=1
# 登录ECR
aws ecr get-login-password --region cn-northwest-1 | docker login --username AWS --password-stdin XXXXXXXXXXXX.dkr.ecr.cn-northwest-1.amazonaws.com.cn
# 创建chart
helm create my-nginx-ecr
# 将chart保存在本地并使用您的注册表 URI 为chart创建别名
cd my-nginx-ecr/
helm chart save . XXXXXXXXXXXX.dkr.ecr.cn-northwest-1.amazonaws.com.cn/artifact-test:my-nginx-ecr
# 推送chart到ECR
helm chart push XXXXXXXXXXXX.dkr.ecr.cn-northwest-1.amazonaws.com.cn/artifact-test:my-nginx-ecr
# 查询 ECR 中的 Helm chart推送结果
aws ecr describe-images  --repository-name artifact-test 

3、使用ECR部署chart到EKS

# 在 Helm 客户端中启用 OCI 支持
export HELM_EXPERIMENTAL_OCI=1
# 登录ECR
aws ecr get-login-password --region cn-northwest-1 | docker login --username AWS --password-stdin XXXXXXXXXXXX.dkr.ecr.cn-northwest-1.amazonaws.com.cn
# 拉取chart到本地
helm chart pull XXXXXXXXXXXX.dkr.ecr.cn-northwest-1.amazonaws.com.cn/artifact-test:my-nginx-ecr
# 将chart导出到本地目录
helm chart export XXXXXXXXXXXX.dkr.ecr.cn-northwest-1.amazonaws.com.cn/artifact-test:my-nginx-ecr
# 安装chart
helm install ecr-chart-demo ./my-nginx-ecr

 

参考链接:
https://docs.aws.amazon.com/AmazonECR/latest/userguide/push-oci-artifact.html
https://docs.aws.amazon.com/AmazonECR/latest/userguide/ECR_on_EKS.html#using-helm-charts-eks
https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/deploy-kubernetes-resources-and-packages-using-amazon-eks-and-a-helm-chart-repository-in-amazon-s3.html?did=pg_card&trk=pg_card

 

本篇作者

曹赫洋

AWS 专业服务团队DevOps顾问。主要负责DevSecOps咨询和技术实施。在DevSecOps加速企业数字化转型方面领域拥有多年经验,对公有云、DevSecOps、基于云原生的微服务架构、敏捷加速研发效能等有深入的研究和热情。