1. 什么是 helm?
kubernetes的包管理器
- 定义/安装/升级 kubernetes应用程序(helm chart)
- 容易创建/发布/分享
2. 使用Helm
2.1 安装
from the homebrew
1
brew install helm
for apt
1
2
3
4
5curl 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
2.2 使用
添加本地本地仓库
1
helm repo add bitnami https://charts.bitnami.com/bitnami
查看仓库中的chart
1
helm search repo bitnami
查看chart信息
1
2
3helm show chart bitnami/mysql
helm show readme bitnami/mysql
helm show all bitnami/mysql安装一个chart
1
2helm repo update # Make sure we get the latest list of charts
helm install bitnami/mysql --generate-name列表已安装的chart
1
helm list
查看已安装chart状态
1
helm status mysql-1612624192
删除chart
1
helm uninstall mysql-1612624192
2.3 结合Terraform使用
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
33# 使用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)
}
2.4 使用案例
1 | # 使用chart url |
3. 总结
helm本质上解决了重复代码的问题, 将 mysql/minio/cert manage/dashboard 等诸多常用的kubernetes应用和配置当成包一样的进行管理, 避免了我们去查资料, 拷贝yaml, 修改yaml最后应用yaml的诸多麻烦, 而云厂商例如aws也有自己的chart仓库, 实践中能增加效率, 让开发者主要聚焦到自有应用程序的发布, 而不是疲惫与基础kubernetes环境的搭建.