kubernetes的包管理器
- 定义/安装/升级 kubernetes应用程序(helm chart)
- 容易创建/发布/分享
2. 使用Helm
1 2 3 4 5
| curl https://baltocdn.com/helm/signing.asc | sudo apt-key add - sudo apt-get install apt-transport-https --yes echo "deb https://baltocdn.com/helm/stable/debian/ all main" | sudo tee /etc/apt/sources.list.d/helm-stable-debian.list sudo apt-get update sudo apt-get install helm
|
1
| helm repo add bitnami https://charts.bitnami.com/bitnami
|
1
| helm search repo bitnami
|
1 2 3
| helm show chart bitnami/mysql helm show readme bitnami/mysql helm show all bitnami/mysql
|
1 2
| helm repo update # Make sure we get the latest list of charts helm install bitnami/mysql --generate-name
|
1
| helm status mysql-1612624192
|
1
| helm uninstall mysql-1612624192
|
helm provider仅有一个resource: helm_release, 可以实现如下的效果:
- 安装chart
- 安装本地chart
- 安装仓库
helm provider使用前需要配置kubernetes权限, 这个配置和kubenetes provider的配置类似, 例如:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| # 使用kubeconfig文件 provider "helm" { kubernetes { config_path = "~/.kube/config" } }
# 使用可执行插件 data "aws_eks_cluster" "main" { name = "test-eks-cluster" } provider "helm" { kubernetes { host = data.aws_eks_cluster.main.endpoint cluster_ca_certificate = base64decode(data.aws_eks_cluster.main.certificate_authority[0].data) exec { api_version = "client.authentication.k8s.io/v1alpha1" args = ["eks", "get-token", "--cluster-name", data.aws_eks_cluster.main.name] command = "aws" } } }
# 使用临时token data "aws_eks_cluster_auth" "main" { name = "test-eks-cluster" } provider "helm" { host = data.aws_eks_cluster.main.endpoint token = data.aws_eks_cluster_auth.main.token cluster_ca_certificate = base64decode(data.aws_eks_cluster.main.certificate_authority[0].data) }
|
3. 总结
helm本质上解决了重复代码的问题, 将 mysql/minio/cert manage/dashboard 等诸多常用的kubernetes应用和配置当成包一样的进行管理, 避免了我们去查资料, 拷贝yaml, 修改yaml最后应用yaml的诸多麻烦, 而云厂商例如aws也有自己的chart仓库, 实践中能增加效率, 让开发者主要聚焦到自有应用程序的发布, 而不是疲惫与基础kubernetes环境的搭建.