一、Helm使用方式和工作流程¶
1.1 Helm在线使用示例¶
1.1.1 chartmuseum访问方式¶
1、添加Bitnami仓库
helm repo add bitnami https://charts.bitnami.com/bitnami
添加完成后进行验证
$ helm repo list
NAME URL
bitnami https://charts.bitnami.com/bitnami
2、使用Bitnami安装
# 这里--version 2..0.1指定的是Helm Chart本身的版本
helm install my-mysql bitnami/mysql --version 2..0.1
拓展-如何查询到应用版本
# 输出内容中APP VERSION字段会显示应用版本
helm search repo bitnami/mysql --versions
3、更改Mysql镜像
helm install my-mysql bitnami/mysql --version 2..0.1 --set global.imageRegistry=xxx
1.1.2 OCI访问方式¶
以OCI访问方式下载my-release
helm install my-release oci://registry-2.docker.io/bitnamicharts/schema-registry
1.2 Helm离线使用示例(推荐使用)¶
1.2.1 chartmuseum访问方式¶
1、添加Bitnami仓库
helm repo add bitnami https://charts.bitnami.com/bitnami
添加完成后进行验证
$ helm repo list
NAME URL
bitnami https://charts.bitnami.com/bitnami
2、下载安装包
helm pull bitnami/mysql -version 2.0.1
3、解压后安装
helm install my-mysql .
1.2.2 OCI访问方式¶
通过OCI访问方式下载仓库到本地
helm pull oci://registry-2.docker.io/bitnamicharts/schema-registry
二、Helm项目结构¶
1.创建一个Chart
$ helm create helm-test
2.查看Helm目录层级
[root@k8s-master01 ~]# tree helm-test/
helm-test/
├── charts
├── Chart.yaml
├── templates
│ ├── deployment.yaml
│ ├── _helpers.tpl
│ ├── hpa.yaml
│ ├── ingress.yaml
│ ├── NOTES.txt
│ ├── serviceaccount.yaml
│ ├── service.yaml
│ └── tests
│ └── test-connection.yaml
└── values.yaml
上面文件说明:
charts/目录: 可以包含其他的chart(称之为子chart)Chart.yaml文件包含了该chart的描述。你可以从模板中访问它apiVersion:Chart的apiVersion,目前默认都是v2name:Chart的名称description:Chart描述信息type:图表的类型[可选]version:Chart自己的版本号appVersion:Chart内应用的版本号[可选]-
description:Chart描述信息[可选] -
templates/目录:包括了模板文件。当Helm评估chart时,会通过模板渲染引擎将所有文件发送到templates/目录中。 然后收集模板的结果并发送给Kubernetes deployment.yaml:创建Kubernetes 工作负载的基本清单_helpers.tpl: 放置可以通过chart复用的模板辅助对象,可以理解成自定义的模板或者函数NOTES.txt: chart的"帮助文本"。这会在你的用户执行helm install时展示给他们service.yaml: 为你的工作负载创建一个 service终端基本清单-
tests:测试文件 -
values.yaml文件也导入到了模板。这个文件包含了chart的默认值。这些值会在用户执行helm install或helm upgrade时被覆盖,一般配置全局变量或者一些参数,其中优先级为values.yaml最低,--set参数最高
如果没有tree命令,可执行以下命令进行下载
$ yum install -y tree
三、Helm仓库、Chart、Release管理¶
3.1 Helm仓库管理¶
Helm官方仓库链接:https://artifacthub.io/
3.1.1 增¶
添加仓库命令格式
helm repo add [仓库名字] [仓库地址]
添加bitnami仓库
helm repo add bitnami https://charts.bitnami.com/bitnami
添加阿里云仓库
helm repo add aliyun https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts
添加rancher仓库
helm repo add rancher-mirror https://rancher-mirror.rancher.cn/server-charts/latest
3.1.2 删¶
删除仓库命令格式
helm repo remove [仓库名字]
删除rancher仓库
helm repo remove rancher-mirror
3.1.3 改¶
更新仓库命令格式
helm repo update [仓库名字]
更新单个仓库
helm repo update bitnami
更新全部仓库
helm repo update
3.1.4 查¶
验证仓库是否添加,观察到仓库已经添加
[root@k8s-master01 ~]# helm repo list
NAME URL
bitnami https://charts.bitnami.com/bitnami
aliyun https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts
rancher-mirror https://rancher-mirror.rancher.cn/server-charts/latest
查看添加仓库后的保存位置
[root@k8s-master01 ~]# cat /root/.config/helm/repositories.yaml
apiVersion: ""
generated: "0001-01-01T00:00:00Z"
repositories:
- caFile: ""
certFile: ""
insecure_skip_tls_verify: false
keyFile: ""
name: bitnami
pass_credentials_all: false
password: ""
url: https://charts.bitnami.com/bitnami
username: ""
3.2 Helm Chart管理¶
3.2.1 搜索Chart¶
搜索Chart命令格式
helm search repo [Chart名字]
搜索Chart
[root@k8s-master01 ~]# helm search repo nginx
NAME CHART VERSION APP VERSION DESCRIPTION
aliyun/nginx-ingress 0.9.5 0.10.2 An nginx Ingress controller that uses ConfigMap...
aliyun/nginx-lego 0.3.1 Chart for nginx-ingress-controller and kube-lego
bitnami/nginx 19.0.3 1.27.4 NGINX Open Source is a web server that can be a...
bitnami/nginx-ingress-controller 11.6.12 1.12.1 NGINX Ingress Controller is an Ingress controll...
bitnami/nginx-intel 2.1.15 0.4.9 DEPRECATED NGINX Open Source for Intel is a lig...
aliyun/gcloud-endpoints 0.1.0 Develop, deploy, protect and monitor your APIs ...
搜索某个仓库
# 这里默认展示的是最新版本
[root@k8s-master01 ~]# helm search repo bitnami/nginx
NAME CHART VERSION APP VERSION DESCRIPTION
bitnami/nginx 19.0.3 1.27.4 NGINX Open Source is a web server that can be a...
bitnami/nginx-ingress-controller 11.6.12 1.12.1 NGINX Ingress Controller is an Ingress controll...
bitnami/nginx-intel 2.1.15 0.4.9 DEPRECATED NGINX Open Source for Intel is a lig...
查看某个Chart的版本
[root@k8s-master01 ~]# helm search repo bitnami/nginx -l
NAME CHART VERSION APP VERSION DESCRIPTION
bitnami/nginx 19.0.3 1.27.4 NGINX Open Source is a web server that can be a...
bitnami/nginx 19.0.2 1.27.4 NGINX Open Source is a web server that can be a...
bitnami/nginx 19.0.1 1.27.4 NGINX Open Source is a web server that can be a...
bitnami/nginx 19.0.0 1.27.4 NGINX Open Source is a web server that can be a...
bitnami/nginx 18.3.6 1.27.4 NGINX Open Source is a web server that can be a...
bitnami/nginx 18.3.5 1.27.3 NGINX Open Source is a web server that can be a...
bitnami/nginx 18.3.4 1.27.3 NGINX Open Source is a web ser
...
...
3.2.2 下载Chart¶
下载最新版,这里显示下载失败,原因是最新版的不是采用chartmuseum访问方式,而是采用OCI访问方式
[root@k8s-master01 ~]# helm pull bitnami/nginx
Error: failed to do request: Head "https://registry-1.docker.io/v2/bitnamicharts/nginx/manifests/19.0.3": dial tcp 31.13.83.2:443: i/o timeout
# 采用OCI方式拉取最新版的nginx
[root@k8s-master01 helm]# helm pull oci://docker.kubeasy.com/bitnamicharts/nginx --version 19.0.3
Pulled: docker.kubeasy.com/bitnamicharts/nginx:19.0.3
Digest: sha256:9257bbe06aca3500dc5274ee7e380a7b5022fa73bb407ef4d3af725ef75a6cf7
下载指定版本
[root@k8s-master01 ~]# mkdir helm
[root@k8s-master01 ~]# cd helm/
[root@k8s-master01 helm]# helm pull bitnami/nginx --version 18.2.4
[root@k8s-master01 helm]# ls
nginx-18.2.4.tgz
3.3 Helm Release管理¶
3.3.1 增¶
1.创建一个新的 Helm Chart 项目
$ helm create <chart-name>
示例说明:
$ helm create helm-test
2.安装Helm Chart
$ helm install <release-name> <chart> [flags]
<release-name>:指定要安装的 Helm Release 的名称。<chart>:指定要安装的 Helm Chart,可以是本地的 Chart 包文件路径或 Chart 存储库中的名称。
示例说明---下载myapp下的mychart:
$ helm install myapp ./mychart
3.添加一个 Helm 存储库
$ helm repo add <repo-name> <repo-url>
<repo-name>:指定要添加的 Helm 存储库的名称。这是你为存储库选择的标识符。<repo-url>:指定要添加的 Helm 存储库的 URL。这是存储库的地址,通常是一个 HTTP 或 HTTPS URL
示例说明---添加一个名为 "stable" 的 Helm 存储库,并指定 URL 为 "https://charts.helm.sh/stable"
$ helm repo add stable https://charts.helm.sh/stable
4.下载一个包,可以通过指定--version参数下载指定版本
$ helm pull bitnami/kafka --version 12.19.2
3.3.2 删¶
1.删除Helm Release
$ helm uninstall <release-name> [flags]
<release-name>:指定要卸载的 Helm Release 的名称
示例说明---卸载名为myapp的Helm Release:
$ helm uninstall myapp
2.删除已安装的 Helm Release,也通过添加 --purge 标志来完全清理与 Release 相关的资源和持久化卷
$ helm delete <release-name> [flags] --purge
<release-name>:指定要删除的 Helm Release 的名称
示例说明---删除已安装的kafka和zookeeper
$ helm delete kafka zookeeper -n public-service
3.3.3 改¶
1.更新(升级)Helm Release
$ helm upgrade <release-name> <chart> [flags]
<release-name>:指定要升级的 Helm Release 的名称。<chart>:指定要升级使用的新 Helm Chart,可以是本地的 Chart 包文件路径或 Chart 存储库中的名称
示例说明:
$ helm upgrade myapp ./newchart
$ helm upgrade myapp stable/mysql
3.3.4 查¶
1.查看安装参数
$ helm get values <release-name> [flags]
<release-name>:指定要获取值文件的 Helm Release 的名称
示例说明---查看kafka安装参数
[root@k8s-master01 zookeeper]# helm get values kafka -n public-service
USER-SUPPLIED VALUES:
externalZookeeper:
servers: zookeeper
persistence:
enabled: false
replicaCount: 3
zookeeper:
enabled: false
2.查看仓库列表
$ helm repo list
3.搜索 Helm 存储库中的可用 Helm Charts
$ helm search repo <chart-name>
<chart-name>:指定要搜索的 Helm Chart 的名称
示例说明---搜索BitNami仓库有哪些可用的Chart
$ helm search repo nginx
4.查看helm版本
$ helm version
5.使用Helm检索版本并查看实际加载的模板
$ helm get manifest test1(发布名称)