Helm学习笔记
安装
使用二进制文件安装
tar -zxvf helm-v3.0.0-linux-amd64.tar.gz
mv linux-amd64/helm /usr/local/bin/helm
// 验证安装
# helm version
version.BuildInfo{Version:"v3.7.0", GitCommit:"eeac83883cb4014fe60267ec6373570374ce770b", GitTreeState:"clean", GoVersion:"go1.16.8"}
使用入门
添加chart仓库
# helm repo add bitnami https://charts.bitnami.com/bitnami
# helm repo update // 更新charts仓库
查看chart仓库中的charts
# helm search repo bitnami
NAME CHART VERSION APP VERSION DESCRIPTION
bitnami/bitnami-common 0.0.9 0.0.9 DEPRECATED Chart with custom templates used in ...
bitnami/airflow 11.0.8 2.1.4 Apache Airflow is a platform to programmaticall...
bitnami/apache 8.8.3 2.4.50 Chart for Apache HTTP Server
search可以从两种来源中进行搜索。
-
helm search hub 从 Artifact Hub 中查找并列出 helm charts,Artifact Hub中存放了大量不同的仓库。
# helm search hub nginx URL CHART VERSION APP VERSION DESCRIPTION https://artifacthub.io/packages/helm/dysnix/nginx 7.1.8 1.19.4 Chart for the nginx server
-
helm search repo 从你添加(使用
helm repo add
)到本地 helm 客户端中的仓库中进行查找。该命令基于本地数据进行搜索,无需连接互联网。Usage: helm search repo [keyword] [flags] # helm search repo nginx NAME CHART VERSION APP VERSION DESCRIPTION bitnami/nginx 9.5.5 1.21.3 Chart for the nginx server bitnami/nginx-ingress-controller 7.6.21 0.48.1 Chart for the nginx Ingress controller bitnami/kong 4.1.3 2.6.0 Kong is a scalable, open source API layer (aka ...
安装chart
Usage:
helm install [NAME] [CHART] [flags]
# helm install bitnami/nginx --generate-name
// 执行后,bitnami/nginx的chart被发布在本地路径,mysql-1612624192
每次执行install都会创建一个新的发布版本。所以一个chart在同一个集群中可以被安装多次,每个可以被独立的管理和升级。
--generate-name 可以使得helm自动为release生成一个名字
# 指定暗转的release的Name
usage: helm install release-Name chart-Name
e.g.
helm install nginx-test bitnami/nginx
更多安装方式
- chart仓库(上述安装方式*)
- 本地chart压缩包
helm install foo foo-0.1.1.tar.gz
- 解压后的chart目录 (
helm install foo path/to/foo
) - 完整的URL(
helm install foo https://example.com/charts/foo-1.2.3.tgz
)
helm install
指定value
的参数
helm
执行install
时可以使用使用--set
指定value
中的参数。
// 指定value中的参数
helm install nfs-server-provisioner \
--set persistence.enabled=true \
--set persistence.size=20Gi \
--set persistence.storageClass='-' \
--set storageClass.defaultClass=true \
--set nodeSelector.kubernetes\\.io/hostname=starbucks-bigdata3 \
stable/nfs-server-provisioner
// 查询value中定义的参数
helm show values stable/nfs-server-provisioner
卸载已安装chart
# helm uninstall 本地安装版本的Name
此命令执行之后,卸载安装的chart,将会自动删除k8s的资源(pod、deployment、scv等,以及chart的历史版本)
helm3中uninstall会移除release的记录,如果想要保留删除记录,使用helm uninstall release_Name --kep-history
查看删除保留的release记录
helm 执行uninstall后不会保留release记录,可以使用–keep-history保留release记录。uninstall之后,使用helm list --uninstalled查看uninstall保留的release。
也可以使用helm list -all查看所有的release,包括uninstall、failed等。
$ helm list --all
NAME VERSION UPDATED STATUS CHART
happy-panda 2 Wed Sep 28 12:47:54 2016 UNINSTALLED wordpress-10.4.5.6.0
inky-cat 1 Wed Sep 28 12:59:46 2016 DEPLOYED alpine-0.1.0
kindred-angelf 2 Tue Sep 27 16:16:10 2016 UNINSTALLED alpine-0.1.0
查看chart的详细信息
# helm show chart bitnami/nginx
annotations:
category: Infrastructure
apiVersion: v2
appVersion: 1.21.3
dependencies:
- name: common
repository: https://charts.bitnami.com/bitnami
tags:
- bitnami-common
version: 1.x.x
description: Chart for the nginx server
home: https://github.com/bitnami/charts/tree/master/bitnami/nginx
icon: https://bitnami.com/assets/stacks/nginx/img/nginx-stack-220x234.png
keywords:
- nginx
- http
- web
- www
- reverse proxy
maintainers:
- email: containers@bitnami.com
name: Bitnami
name: nginx
sources:
- https://github.com/bitnami/bitnami-docker-nginx
- http://www.nginx.org
version: 9.5.5
查看版本发布
helm list
(或 helm ls
) 命令会列出所有可被部署的版本。
# helm list
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
mysql-1612624192 default 1 2021-02-06 16:09:56.283059 +0100 CET deployed mysql-8.3.0 8.0.23
查看release状态
Usage:
helm status RELEASE_NAME [flags]
helm upgrade 升级
升级release。升级到chart的最新版本或者时修改release的配置都可以使用upgrade命令。
一次升级操作会使用已有的release,并根据提供的信息对其进行升级。helm升级策略为最小升级,即它只会更新自上次发布以来发生更改的内容。
helm upgrade -f panda.yaml happy-panda bitnami/wordpress
helm rollback 回滚
失败时恢复release。
helm 基础
使用helm来管理k8s集群的软件包,helm将charts安装到k8s集群中,每次安装都会创建新的release。
1.入门 三个概念
1. Chart
代表着helm包,它包含在k8s集群内部运行的应用程序,工具或者服务所需所有资源定义。类似于rpm包(描述应用程序本省信息和相关的以来描述)
2. Repository
用来存放和共享charts的地方。类似于rpm源,只不过本仓库是专门给k8s使用的。
3. Release
运行在k8s集群中的chart实例,一个chart通常可以在同一个集群中安装多次,每次安装都会创建一个新的release。
创建自己的charts
1.基本使用流程
如何开发自己的chart,可以通过helm create 命令
-
创建
$ helm create deis-workflow Creating deis-workflow
现在在
deis-workflow
目录下已经有一个chart -
验证格式
在编辑chart时可以使用
helm lint
验证格式是否正确。 -
chart打包
当准备将chart打包发布时,可以运行
helm package
helm package deis-workflow deis-workflow-0.1.0.tgz
-
安装
步骤3打包好的chart就可以执行
helm install
$ helm install deis-workflow ./deis-workflow-0.1.0.tgz ...
-
上传chart仓库
打包好的chart可以上传到chart仓库中。