简介
helm是kubernetes的包管理工具,用于简化部署和管理 Kubernetes 应用。用来管理charts——预先配置好的安装包资源。
Helm和charts的主要作用:
应用程序封装
版本管理
依赖检查
便于应用程序分发
helm是一个C/S框架的软件,helm相当于一个客户端,tiller是一个服务端
Helm CLI 是 Helm 客户端,可以在本地执行
Tiller 是服务器端组件,在 Kubernetes 群集上运行,并管理 Kubernetes 应用程序的生命周期
Repository 是 Chart 仓库,Helm客户端通过HTTP协议来访问仓库中Chart的索引文件和压缩包
安装
安装之前需要先配置好
kubeconfig
,kubectl
可以正常使用就表示kubeconfig
已经配置正确,也可以通过环境变量KUBECONFIG
指定helm使用的kubeconfig
安装helm
# 如下地址下载helm二进制文件 # 解压之后放在自己的PATH路径下# https://github.com/helm/helm/releasesmkdir -pv helm && cd helm wget https://storage.googleapis.com/kubernetes-helm/helm-v2.9.1-linux-amd64.tar.gz tar xf helm-v2.9.1-linux-amd64.tar.gz sudo mv linux-amd64/helm /usr/local/bin rm -rf linux-amd64# 查看版本,不显示出server版本,因为还没有安装serverhelm version
简单安装tiller(本次实验采用)
# 部署 tillerhelm init --upgrade -i registry.cn-hangzhou.aliyuncs.com/google_containers/tiller:v2.9.1 \ --stable-repo-url https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts# 查看kubectl get pods -n kube-system -l app=helm kubectl get svc -n kube-system -l app=helm
安全性更高的安装tiller(tls)
helm init --upgrade -i registry.cn-hangzhou.aliyuncs.com/google_containers/tiller:v2.9.1 \ --stable-repo-url https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts \--tiller-tls \ --tiller-tls-verify \ --tiller-tls-cert=cert.pem \ --tiller-tls-key=key.pem \ --tls-ca-cert=ca.pem \ --service-account=tiller# 其他命令都需要使用 tls# --tls
配置rbac
cat >helm-rbac-config.yaml<<EOF apiVersion: v1 kind: ServiceAccount metadata: name: tiller namespace: kube-system --- apiVersion: rbac.authorization.k8s.io/v1beta1 kind: ClusterRoleBinding metadata: name: tiller roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: cluster-admin subjects: - kind: ServiceAccount name: tiller namespace: kube-system EOFkubectl create -f helm-rbac-config.yaml# 配置tiller使用创建的ServiceAccountkubectl patch deploy --namespace kube-system tiller-deploy -p '{"spec":{"template":{"spec":{"serviceAccount":"tiller"}}}}'
查看状态
# 查看pod启动情况kubectl get pod -n kube-system -l app=helm# 再次查看版本,显示出server版本helm version
简单使用
查看可用charts
# 更新charts列表helm repo update # 搜索可用chartshelm search helm search mysql
查看已经安装的charts
helm list# helm ls
安装测试
以下两种部署方式任选一种
使用命令行模式部署
# 使用命令行模式部署helm install -n mariadb-test \ --set persistence.enabled=false,mariadbRootPassword=will,mariadbUser=will,mariadbPassword=will,mariadbDatabase=will \ stable/mariadb
使用配置文件定制部署
# 使用配置文件方式部署# 查看可配置项helm inspect values stable/mariadb# 获取所有可配置项(去行空行和注释)helm inspect values stable/mariadb | egrep -v '^\s*#|^$'# 配置cat >config.yml<<EOF usePassword: truemariadbRootPassword: will mariadbUser: will mariadbPassword: will mariadbDatabase: will persistence: enabled: falseEOF# 部署helm install -n mariadb-test -f config.yml stable/mariadb
测试
# 查看状态helm ls kubectl get pods kubectl get svc# 连接测试kubectl run mariadb-cli --image=bitnami/mariadb:10.1.28-r1 -i --tty bash mysql -hmariadb-test-mariadb -uwill -pwill will show databases; select version(); select user();# 删除 mariadb-clikubectl delete deploy mariadb-cli# 删除部署helm delete mariadb-test --purge
自定义chart
创建chart
# 创建helm create hello# chart目录结构介绍hello ├── charts # 本chart依赖的chart├── Chart.yaml # 描述chart的基本信息,如名称版本等├── templates # kubernetes manifest文件模板目录│ ├── deployment.yaml │ ├── _helpers.tpl │ ├── ingress.yaml │ ├── NOTES.txt # 纯文本文件,可在其中填写chart的使用说明│ └── service.yaml └── values.yaml # chart配置的默认值# 对chart的模板和配置进行测试helm install --dry-run --debug ./
测试安装chart
# 安装helm install -n hello-test ./# 查看helm ls kubectl get pods kubectl get svc# 端口转发export POD_NAME=$(kubectl get pods --namespace default -l "app=hello,release=hello-test" -o jsonpath="{.items[0].metadata.name}") kubectl port-forward $POD_NAME 8080:80# 访问curl http://127.0.0.1:8080# 删除helm delete hello-test --purge
chart分发
# 打包为压缩包helm package ./
作者:CountingStars_
链接:https://www.jianshu.com/p/a36cbf5b8848