Helm使用全流程:工作方式、项目结构与仓库ChartRelease管理

来自AI助手的总结
介绍Helm的使用、结构及仓库和Release管理
Helm使用全流程:工作方式、项目结构与仓库ChartRelease管理

一、Helm使用方式和工作流程

1.1 Helm在线使用示例

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 OCI访问方式

以OCI访问方式下载my-release


helm install my-release oci://registry-2.docker.io/bitnamicharts/schema-registry

1.2 Helm离线使用示例(推荐使用)

1.2 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 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,目前默认都是v2

  • name: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 installhelm upgrade时被覆盖,一般配置全局变量或者一些参数,其中优先级为values.yaml最低,--set参数最高

如果没有tree命令,可执行以下命令进行下载


$ yum install -y tree

三、Helm仓库、Chart、Release管理

3.1 Helm仓库管理

Helm官方仓库链接:https://artifacthub.io/

3.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 删

删除仓库命令格式


helm repo remove [仓库名字]

删除rancher仓库


helm repo remove rancher-mirror 

3.1 改

更新仓库命令格式


helm repo update [仓库名字]

更新单个仓库


helm repo update bitnami 

更新全部仓库


helm repo update

3.1 查

验证仓库是否添加,观察到仓库已经添加

[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 搜索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 下载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.创建一个新的 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 删

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 改

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 查

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(发布名称)

© 版权声明
THE END
喜欢就支持一下吧
点赞11 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容