简介:
Helm 可以帮助我们管理 Kubernetes 应用程序 - Helm ,Charts 可以定义、安装和升级复杂的 Kubernetes 应用程序,Charts 包很容易创建、版本管理、分享和分布。Helm 对于 Kubernetes 来说就相当于 yum 对于 Centos 来说,对于越来越复杂的 Kubernetes 应用程序来说,如果单纯依靠我们去手动维护应用程序的 YAML 资源清单文件来说,是非常复杂,成本也是巨大的。接下来我们就来了解了 Helm 的使用方法。
一、安装
前提条件:一个可用的kubernetes集群,使用 Helm 的节点上已经配置好可用kubectl访问集群,Helm 其实就是读取的 kubeconfig 文件来访问集群的
Helm V2 版本必须在 Kubernetes 集群中安装一个 Tiller 服务进行通信,这样大大降低了其安全性和可用性,所以在 V3 版本中移除了服务端,这次安装v3.1.0
下载地址:https://github.com/helm/helm/releases
下载到本地解压后,将 helm 二进制包文件移动到任意的 PATH 路径(默认 /usr/local/bin/)
[root@vmlabmaster-dev bin]# helm version
version.BuildInfo{Version:"v3.1.0", GitCommit:"b29d20baf09943e134c2fa5e1e1cab3bf93315fa", GitTreeState:"clean", GoVersion:"go1.13.7"}
看到上面的版本信息证明已经安装成功了
二、helm常用命令
2.1、添加一个 charts 仓库
#添加微软仓库
$ helm repo add stable http://mirror.azure.cn/kubernetes/charts/
"stable" has been added to your repositories
#列出所有可用的仓库
$ helm repo ls
NAME URL
stable http://mirror.azure.cn/kubernetes/charts/
#在微软仓库搜索redis
$ helm search repo stable/redis
NAME CHART VERSION APP VERSION DESCRIPTION
stable/redis 10.5.7 5.0.7 DEPRECATED Open source, advanced key-value stor...
stable/redis-ha 4.4.6 5.0.6 DEPRECATED - Highly available Kubernetes implem...
#更新仓库信息
$ helm repo update
#移除某个repo仓库
$ helm repo remove <REPO_NAME>
2.2、把仓库的包下载到本地
$ helm pull stable/mysql
2.3、安装一个chart
$ helm install t-nginx stable/my-nginx
NAME: t-nginx
LAST DEPLOYED: Wed Nov 25 15:12:21 2020
NAMESPACE: default
STATUS: deployed
REVISION: 1
NOTES:
1. Get the application URL by running these commands:
export POD_NAME=$(kubectl get pods --namespace default -l "app.kubernetes.io/name=my-nginx,app.kubernetes.io/instance=t-nginx" -o jsonpath="{.items[0].metadata.name}")
echo "Visit http://127.0.0.1:8080 to use your application"
kubectl --namespace default port-forward $POD_NAME 8080:80
#如没有指定release名称,使用 --generate-name 参数随机生成一个release名称
2.4、显示仓库chart信息
$ helm show chart default/my-nginx
apiVersion: v2
appVersion: 1.16.0
description: A Helm chart for Kubernetes
name: my-nginx
type: application
version: 0.1.0
====================================================================================
$ helm show all default/my-nginx
apiVersion: v2
appVersion: 1.16.0
description: A Helm chart for Kubernetes
name: my-nginx
type: application
version: 0.1.0
---
# Default values for my-nginx.
# This is a YAML-formatted file.
# Declare variables to be passed into your templates.
replicaCount: 1
image:
repository: nginx
pullPolicy: IfNotPresent
imagePullSecrets: []
nameOverride: ""
fullnameOverride: ""
...
2.5、卸载一个chart
$ helm uninstall t-nginx
三、helm安装chart常用操作
3.1、把一个chart目录打包到一个chart归档文件中
#在chart所在文件目录下
[root@master ~ my-nginx]# helm package .
Successfully packaged chart and saved it to: /tmp/my-nginx/my-nginx-0.1.0.tgz
3.2、把chart包上传到chart私有仓库
#上传mychart包
$ curl --data-binary "@my-nginx-0.1.0.tgz" http://localhost:8080/api/charts
3.3、检查chart可能出现的问题
$ helm lint [PATH]
$ helm lint my-nginx/
==> Linting my-nginx/
[INFO] Chart.yaml: icon is recommended
1 chart(s) linted, 0 chart(s) failed
#用来检测chart是不是满足规范
3.4、测试安装输出资源清单
$ helm install my-nginx --dry-run --debug stable/my-nginx
install.go:158: [debug] Original chart version: ""
install.go:175: [debug] CHART PATH: /root/.cache/helm/repository/my-nginx-0.1.0.tgz
NAME: my-nginx
LAST DEPLOYED: Wed Nov 25 15:40:05 2020
NAMESPACE: default
STATUS: pending-install
REVISION: 1
...
#此操作在我们编写chart包时经常用来测试输出后的内容是否符合预期
3.5、获取已安装release清单
$ helm get manifest default-openvpn
---
# Source: openvpn/templates/config-openvpn.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: default-openvpn
labels:
app: openvpn
chart: openvpn-4.2.4
release: default-openvpn
heritage: Helm
data:
...
3.6、helm插件操作
helm plugin install:安装一个或多个Helm插件
helm plugin list:获取已安装的Helm插件列表
helm plugin remove:删除一个或多个Helm插件
helm plugin update:更新一个或多个Helm插件
#安装push插件
$ helm plugin install https://github.com/chartmuseum/helm-push