【笔记】Helm-1 介绍

欢迎

欢迎使用Helm文档。Helm是Kubernetes的包管理器,您也可以在CNCF Helm项目过程报告阅读详细的背景信息。

Helm

Helm Project Journey Report | CNCF

文档构成

Helm有大量的文档。高级组织概述会让您知道在哪里查找特定内容。

1、教程 如果您是新手,从这里开始,手把手带您通过一系列的步骤创建您的第一个Helm chart。

Helm | Docs

2、主题引导 以相当高的水平讨论关键主题和概念并提供有用的背景信息和解释。

Helm | Docs

3、社区引导 讨论围绕社区的相关话题。如果您想了解更多关于Helm本身的开发过程以及如何参与开发,从这里开始。

Helm | Docs

4、如何做 操作方法。指引您按照步骤与定位关键问题和使用案例。嘉定您对Helm工作原理有所了解的情况下,这些内容会比教程更加高级。

Helm | Docs

5、开发案例 如果您期望使用SDK做集成开发,这里有一些帮助案例

Helm | Docs

快速入门指南

本指南介绍如何快速开始使用Helm。

先决条件

想成功和正确地使用Helm,需要以下前置条件。

1、一个Kubernetes集群

2、确定你安装版本的安全配置

3、安装和配置Helm。

安装或者使用现有的Kubernetes集群

使用Helm,需要一个Kubernetes集群。对于Helm的最新版本,我们建议使用Kubernetes的最新稳定版,在大多数情况下,它是倒数第二个版本。

您也应该有一个本地的kubectl。

查看Helm和对应支持的Kubernetes版本,您可以参考Helm版本支持策略。

Helm | Helm版本支持策略

安装

您可以通过homebrew下载二进制Helm client安装包,也可以通过github下载github官方发布页面

https://github.com/helm/helm/releases

除此之外的更多安装方式详见 安装指南。

Helm | 安装Helm

初始化

当您已经安装好了Helm之后,您可以添加一个chart仓库。从 Artifact Hub 中查找有效的Helm chart仓库。

Artifact Hub

$ helm repo add bitnami https://charts.bitnami.com/bitnami

当添加完成,您将可以看到可以被您安装的charts列表:

$ helm search repo bitnami

$ 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                  	8.0.2        	2.0.0        	Apache Airflow is a platform to programmaticall...
bitnami/apache                   	8.2.3        	2.4.46       	Chart for Apache HTTP Server
bitnami/aspnet-core              	1.2.3        	3.1.9        	ASP.NET Core is an open-source framework create...
# ... and many more

安装Charts示例

您可以通过 helm install 命令安装chart。Helm可以通过多种途径查找和安装chart,但最简单的是安装官方的bitnami charts。

$ helm repo update

$ helm install bitnami/mysql --generate-name

$ helm repo update              # 确定我们可以拿到最新的charts列表
$ helm install bitnami/mysql --generate-name
NAME: mysql-1612624192
LAST DEPLOYED: Sat Feb  6 16:09:56 2021
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES: ...

在上面的例子中,bitnami/mysql这个chart被发布,名字是mysql-1612624192

您可以通过执行 helm show chart bitnami/mysql 命令简单了解到这个chart的基本信息。或者您可以执行 helm show all bitnami/mysql 获取关于该chart的所有信息

每当您执行 helm install 的时候,都会创建一个新的发布版本。所以一个chart在同一个集群里面可以被安装多次,每一个都可以被独立的管理和升级。

helm install 是一个拥有很多能力的强大的命令,更多信息详见 使用Helm

Helm | 使用Helm

关于版本打不

通过Helm您可以很容易看到哪些chart被发布了。

 $ helm list

$ 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

helm list(或 helm ls)命令会列出所有可被部署的版本。

卸载一个版本

您可以使用 helm uninstall 命令卸载您的版本

$ helm uninstall mysql-161264192

$ helm uninstall mysql-1612624192
release "mysql-1612624192" uninstalled

该命令会从Kubernetes卸载mysql-1612624192,它将删除和该版本相关的所有相关资源(service、deployment、pod等等)甚至版本历史。

如果您在执行 helm uninstall 的时候提供 --keep-history 选项,Helm将会保存版本历史。您可以通过命令查看该版本的信息

$ helm status mysql-1612624192

$ helm status mysql-1612624192
Status: UNINSTALLED
...

因为 --keep-history 选项会让helm跟踪您的版本(即使您卸载了它们),所以您可以审计集群历史甚至使用 helm rollback 回滚版本。

查看帮助信息

如果您想通过Helm命令查看更多的有用的信息,请使用 heml help 命令,或者在任意命令后添加 -h 选项:

$ helm get -h

安装Helm

该指南展示了如何安装Helm CLI。Helm可以用源码或构建的二进制版本安装。

用Helm项目安装

Helm项目提供了两种获取和安装Helm的方式。这是官方提供的获取Helm发布版本的方法。另外,Helm社区提供了通过不同包管理器安装Helm的方法。这些方法可以在下面的官方方法之后看到。

用二进制版本安装

每个Helm版本都提供了各种操作西宫的二进制版本,这些版本可以手动下载和安装。

Releases · helm/helm · GitHub

1、下载 需要的版本

Releases · helm/helm · GitHub

2、解压( tar -zxvf helm-v3.0.0-linux-amd64.tar.gz)

3、在解压目录中找到helm程序,移动到需要的目录中( mv linux-amd64/helm/usr/local/bin/helm)

然后就可以执行客户端程序并 添加稳定仓库: helm help.

Helm | 快速入门指南

注意 针对Linux AMD64,Helm的自动测试只有在 CircleCi 构建和发布时才会执行。测试其他操作系统时社区针对系统问题请求Helm的责任。

使用脚本安装

Helm现在有个安装脚本可以自动拉取最新的Helm版本并在本地安装。

您可以获取这个脚本并在本地执行。它良好的文档会让您在执行之前知道脚本都做了什么。

$ curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3

$ chmod 700 get_helm.sh

$ ./get_helm.sh

$ curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3
$ chmod 700 get_helm.sh
$ ./get_helm.sh

如果想直接执行安装,运行curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash 。

curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash

通过包管理器安装

Helm社区提供了通过操作系统包管理器安装Heml的方式。但Helm项目不支持且不认为是可信的第三方。

使用Homegbrew[macOS]

Helm社区成员贡献了一种在Homebrew构建Helm的方案,这个方案通过是最新的。

brew install helm

(注意:还有一个emacs-helm的方案,当然这是另一个项目了。)

使用Chocolatey[Windows]

Helm社区成员贡献了一个 Helm包 在 Chocolatey 中构建,包通常是最新的。

Chocolatey Software | helm 3.13.2

Chocolatey Software | Chocolatey - The package manager for Windows

choco install kubernetes-hel

使用Scoop[Windows]

Helm社区成员贡献了一个针对 Scoop的 Helm包,该包通常是最新的。

https://scoop.sh/

https://github.com/ScoopInstaller/Main/blob/master/bucket/helm.json

scoop install helm

使用Apt[Debian/Ubuntu]

Helm社区成员贡献了针对Apt的一个 Helm包,包通常是最新的。

Debian - Helm hosted by Balto

curl https://baltocdn.com/helm/signing.asc | gpg --dearmor | sudo tee /usr/chare/keyrings/helm.gpg > /dev/null

sudo apt-get install apt-transport-https --yes

echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/chare/keyrings/helm.gpg] https://baltocdn.com/helm/stable/debian/ all main" | sudo tee /etc/apt/sources.list.d/helm-stable-debian.list

sudo apt-get update

sudo apt-get install helm

curl https://baltocdn.com/helm/signing.asc | gpg --dearmor | sudo tee /usr/share/keyrings/helm.gpg > /dev/null
sudo apt-get install apt-transport-https --yes
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/helm.gpg] https://baltocdn.com/helm/stable/debian/ all main" | sudo tee /etc/apt/sources.list.d/helm-stable-debian.list
sudo apt-get update
sudo apt-get install helm

使用dnf/yum[fedora]

从Fedora 35开始,官方仓库可以使用helm了,可以调用以下命令安装helm:

sudo dnf install helm

使用Snap

Snapcrafters 社区维护了 Helm包 的Snap版本:

https://github.com/snapcrafters

Install helm on Linux | Snap Store

sudo snap install help --classic

使用pkg[FreeBSD]

FreeBSD社区成员贡献了一个 Helm页面 来构建 FreeBSD端口集 。通常都是最新的包。

FreshPorts -- sysutils/helm: Kubernetes Package Manager

ports

pkg install helm

开发版本构建

另外您可以下载和安装Helm的开发版本。

使用Canary侯建

“Canary”版本是从Helm最新的main分支构建。这些不是官方版本,可能不稳定。但是这提供测试边缘特性的条件。

Canary Helm二进制包存储在 get.helm.sh。以下是一般构建的链接:

https://get.helm.sh/

Linux AMD64

https://get.helm.sh/helm-canary-linux-amd64.tar.gz

macOD AMD64

https://get.helm.sh/helm-canary-darwin-amd64.tar.gz

实验性Windows AMD64

https://get.helm.sh/helm-canary-windows-amd64.zip

使用源码Source[Linux,macOS]

从源码构建Helm的工作要稍微多一点,但如果您想测试最新(预发布)的Helm版本,这是最好的方式。

您必须有可用的Go环境。

$ git clone https://github.com/helm.git

$ cd helm

$ make

如果需要,会拉取依赖并缓存,然后验证配置。然后会编译helm并放在bin/helm。

总结

大多数情况下,安装只需要简单地获取一个构建好的helm二进制包。本文档为想使用helm做更复杂事情的人提供额外示例。

一旦您成功安装了Helm客户端,就可以继续使用Helm管理chart和 添加稳定的仓库 。

Helm | 快速入门指南

使用Helm

本指南介绍了使用Helm来管理Kubernetes集群上的软件包的基础知识。在这之前,假定您已经 安装 了Helm客户端。

Helm | 安装Helm

如果您仅对运行一些快速命令感兴趣,则不妨从 快速入门指南 开始。本章包含了Helm命令的详细说明,并解释如何使用Helm。

Helm | 快速入门指南

三大概念

Chart代表着Helm包。它包含在Kubernetes集群内部运行应用程序,工具或服务所需的所有资源定义。您可以把它看做是Homebrew formula,Apt dpkg,或Yum RPM在Kubernetes中的等价物。

Repository(仓库)是用来存放和共享charts的地方。它就像Perl的CPAN档案库网络 或是Fedora的 软件包仓库 ,只不过它是供Kubernetes包所使用的。

The Comprehensive Perl Archive Network - www.cpan.org

Home - src.fedoraproject.org

Release是运行在Kubernetes集群中的chart的实例。一个chart通常可以在同一个集群中安装多次。每一次安装都会创建一个新的release。以MySQL chart为例,如果您想在您的集群中运行两个数据库,你可以安装该chart两次。每一个数据库都会拥有它自己的release和release name。

在了解了上述这些概念以后,我们就可以这样来解释Helm:

Helm安装charts到Kubernetes集群中,每次安装都会创建一个新的release。您可以在Helm的chart repositories中寻找新的chart。

☆ 'helm search':查找Charts

Helm自带一个强大的搜索命令,可以用来从两种来源中进行搜索:

helm search hub 从Artifact Hub中查找并列出helm charts。Artifact Hub中存放了大量不同的仓库。

Artifact Hub

helm search repo 从您添加(使用 helm repo add)到本地heml客户端中的仓库中进行查找。该命令基于本地数据进行搜索,无需连接互联网。

您可以通过运行 helm search hub 命令找到公开可用的charts:

$ helm search hub wordpress

$ helm search hub wordpress
URL                                                 CHART VERSION APP VERSION DESCRIPTION
https://hub.helm.sh/charts/bitnami/wordpress        7.6.7         5.2.4       Web publishing platform for building blogs and ...
https://hub.helm.sh/charts/presslabs/wordpress-...  v0.6.3        v0.6.3      Presslabs WordPress Operator Helm Chart
https://hub.helm.sh/charts/presslabs/wordpress-...  v0.7.1        v0.7.1      A Helm chart for deploying a WordPress site on ...

上述命令从Artifact Hub中搜索所有的 wordpress charts 。

如果不进行过滤,helm search hub 命令会展示所有可用的charts。

使用 helm search repo 命令,您可以从您所添加的仓库中查找chart的名字。

$ helm repo add brigade https://brigadecore.github.io/charts

$ helm search repo brigade

$ helm repo add brigade https://brigadecore.github.io/charts
"brigade" has been added to your repositories
$ helm search repo brigade
NAME                          CHART VERSION APP VERSION DESCRIPTION
brigade/brigade               1.3.2         v1.2.1      Brigade provides event-driven scripting of Kube...
brigade/brigade-github-app    0.4.1         v0.2.1      The Brigade GitHub App, an advanced gateway for...
brigade/brigade-github-oauth  0.2.0         v0.20.0     The legacy OAuth GitHub Gateway for Brigade
brigade/brigade-k8s-gateway   0.1.0                     A Helm chart for Kubernetes
brigade/brigade-project       1.0.0         v1.0.0      Create a Brigade project
brigade/kashti                0.4.0         v0.4.0      A Helm chart for Kubernetes

Helm搜索使用模糊字符串匹配算法,所以您可以只输入名字的一部分:

$ helm search repo kash

$ helm search repo kash
NAME            CHART VERSION APP VERSION DESCRIPTION
brigade/kashti  0.4.0         v0.4.0      A Helm chart for Kubernetes

搜索是用来发现可用包的一个好办法。一旦您找到您想安装的helm包,您便可以通过使用 helm install 命令来安装它。

☆ 'helm install':安装一个helm包

使用 helm install 命令来安装一个新的helm包。最简单的使用方法只需要传入两个参数:您命名的release名字和您想安装的chart的名称。

$ helm install happy-panda bitnami/wordpress

$ helm install happy-panda bitnami/wordpress
NAME: happy-panda
LAST DEPLOYED: Tue Jan 26 10:27:17 2021
NAMESPACE: default
STATUS: deployed
REVISION: 1
NOTES:
** Please be patient while the chart is being deployed **

Your WordPress site can be accessed through the following DNS name from within your cluster:

    happy-panda-wordpress.default.svc.cluster.local (port 80)

To access your WordPress site from outside the cluster follow the steps below:

1. Get the WordPress URL by running these commands:

  NOTE: It may take a few minutes for the LoadBalancer IP to be available.
        Watch the status with: 'kubectl get svc --namespace default -w happy-panda-wordpress'

   export SERVICE_IP=$(kubectl get svc --namespace default happy-panda-wordpress --template "{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}")
   echo "WordPress URL: http://$SERVICE_IP/"
   echo "WordPress Admin URL: http://$SERVICE_IP/admin"

2. Open a browser and access WordPress using the obtained URL.

3. Login with the following credentials below to see your blog:

  echo Username: user
  echo Password: $(kubectl get secret --namespace default happy-panda-wordpress -o jsonpath="{.data.wordpress-password}" | base64 --decode)

现在wordpress chart已经安装。注意安装chart时创建了一个新的release对象。上述发布被命名为happy-panda。(如果想让Helm生成一个名称,删除发布名称并使用 --generate-name。)

在安装过程中,helm客户端打印一些有用的信息,其中包括:哪些资源已经被创建,release当前的状态,以及您是否还需要执行额外的配置步骤。

Helm按照以下顺序安装资源:

Namespace

NetworkPolicy

ResourceQuota

LimitRange

PodSecurityPolicy

PodDisruptionBudget

SeviceAccount

Secret

SecretList

ConfigMap

StorageClass

PersisitentVolume

PersistentVolumeClaim

CustomResourceDefinition

ClusterRole

ClusterRoleList

ClusterRoleBindingList

Role

RoleList

RoleBinding

RoleBindingList

Service

DaemonSet

Pod

ReplicationController

ReplicaSet

Deployment

HorizontalPodAutoscaler

StatefulSet

Job

CronJob

Ingress

APIService

Helm客户端不会等到所有资源都运行才退出。许多charts需要大小超过600M的Docker镜像,可能需要很长时间才能安装到集群中。

您可以使用 helm status 来追踪release的状态,或是重新读取配置信息:

$ helm status happy-panda

$ helm status happy-panda
NAME: happy-panda
LAST DEPLOYED: Tue Jan 26 10:27:17 2021
NAMESPACE: default
STATUS: deployed
REVISION: 1
NOTES:
** Please be patient while the chart is being deployed **

Your WordPress site can be accessed through the following DNS name from within your cluster:

    happy-panda-wordpress.default.svc.cluster.local (port 80)

To access your WordPress site from outside the cluster follow the steps below:

1. Get the WordPress URL by running these commands:

  NOTE: It may take a few minutes for the LoadBalancer IP to be available.
        Watch the status with: 'kubectl get svc --namespace default -w happy-panda-wordpress'

   export SERVICE_IP=$(kubectl get svc --namespace default happy-panda-wordpress --template "{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}")
   echo "WordPress URL: http://$SERVICE_IP/"
   echo "WordPress Admin URL: http://$SERVICE_IP/admin"

2. Open a browser and access WordPress using the obtained URL.

3. Login with the following credentials below to see your blog:

  echo Username: user
  echo Password: $(kubectl get secret --namespace default happy-panda-wordpress -o jsonpath="{.data.wordpress-password}" | base64 --decode)

上述信息展示了release的当前状态。

安装前自定义chart

上述安装方式只会使用chart的默认配置选项。很多时候,我们需要自定义chart来指定我们想要的配置。

使用 helm show values 可以查看chart中的可配置选项:

$ helm show values bitnami/wordpress

$ helm show values bitnami/wordpress
## Global Docker image parameters
## Please, note that this will override the image parameters, including dependencies, configured to use the global value
## Current available global Docker image parameters: imageRegistry and imagePullSecrets
##
# global:
#   imageRegistry: myRegistryName
#   imagePullSecrets:
#     - myRegistryKeySecretName
#   storageClass: myStorageClass

## Bitnami WordPress image version
## ref: https://hub.docker.com/r/bitnami/wordpress/tags/
##
image:
  registry: docker.io
  repository: bitnami/wordpress
  tag: 5.6.0-debian-10-r35
  [..]

然后,您可以使用YAML格式的文件覆盖上述任意配置项,并在安装过程中使用该文件。

$ echo '{mariadb auth.database: user0db, mariadb.auth.username: user0}' > values.yaml

$ helm install -f values.yaml bitnami/workpress --generate-name

$ echo '{mariadb.auth.database: user0db, mariadb.auth.username: user0}' > values.yaml
$ helm install -f values.yaml bitnami/wordpress --generate-name

上述命令将为MariaDB创建一个名称为user0的默认用户,并且授予该用户访问新建的user0db数据库的权限。chart中的其他默认配置保持不变。

安装过程中有两种方式传递配置数据:

--values(或-f):使用YAML文件覆盖配置。可以指定多次,优先使用最右边的文件。

--set:通过命令行的方式对指定项进行覆盖。

如果同时使用两种方式,则--set中的值会被合并到--values中,但是--set中的值优先级更高。在--set中覆盖的内容会被保存在ConfigMap中。可以通过 helm get values <release-name> 来查看指定release中--set设置的值。也可以通过运行helm upgrade并指定 --reset-values 字段来清除 --set 中设置的值。

--set 的格式和限制

--set选项使用0个或多个name/value对。最简单的用法类似于: --set name=values,等价于如下YAML格式:

name: value

多个值使用逗号分割:因此 --set a=b,c=d的YAML表示是:

a: b

c: d

支持更复杂的表达式。例如:--set outer.inner=value被转换成了:

outer:

    inner: value

列表使用花括号({})来表示,例如:--set name={a,b,c}被转换成了:

name:

  - a

  - b

  - c

某些name/key可以设置为null或者空数组,例如--set name=[],a=null由

name:

  - a

  - b

  - c

a: b

变成了

name: []

a: null

从2.5.0版本开始,可以使用数组下标的语法来访问列表中的元素。例如 --set servers[0].port=80 就变成了:

servers:

    - ports: 80

多个值也可以通过这种方式来设置。--set servers[0].port=80,servers[0].host=example 变成了:

servers:

  -port: 80

   host: example

如果需要在 --set 中使用特殊字符,您可以使用反斜线来进行转义; --set name=value1\,value2就变成了:

name: "value1,value2"

name: "value1,value2"

类似的,您也可以转义点序列(英文句号)。这可能会在chart使用toYaml函数来解析annotations,labels,和node selectors时派上用场。--set nodeSelector."kubernetes\.io/roles"=master语法就变成了:

nodeSelector:

  kubernetes.io/role: master

nodeSelector:
  kubernetes.io/role: master

深层嵌套的数据结构可能会很难用--set表达。我们希望Chart的设计者在设计values.yaml文件的格式时,考虑到--set的使用。(更多内容请查看 Values文件 )

Helm | Values Files

更多安装方法

helm install 命令可以从多个来源进行安装:

1、chart的仓库(如上所述)

2、本地chart压缩包(helm install foo-0.1.1.tgz)

3、解压后的chart目录(helm install foo path/to/foo)

4、完整的URL(helm install foo https://example.com/charts/foo-1.2.3.tgz)

☆ 'helm upgrade' 和 'helm rollback': 升级release和失败时恢复

当您想升级到chart的新版本,或是修改release的配置,您可以使用helm upgrade命令。

一次升级操作会使用已有的release并根据您提供的信息对其进行升级。由于Kubernetes的chart可能会很大而且很复杂,Helm会尝试执行最小侵入式升级。即它只会更新自上次发布以来发生了更改的内容。

$ helm upgrade -f panda.yaml happy-panda bitnami/wordpress

在上面的例子中,happy-panda这个release使用相同的chart进行升级,但是使用了一个新的YAML文件:

mariadb.auth.username: user1

我们可以使用helm get values命令来看看配置值是否真的生效了:

$ helm get values happy-panda

$ helm get values happy-panda
mariadb:
  auth:
    username: user1

helm get 是一个查看集群中release的有用工具。正如我们上面所看到的,panda.yaml 中的新值已经被部署到集群中了。

现在,假如在一次发布过程中,发生了不符合预期的事情,也很容器通过helm rollback [RELEASE] [REVISION]命令回滚到之前的发布版本。

$ helm rollback happ-panda 1

上面这条命令将我们的happy-panda回滚到了它最初的版本。release版本其实是一个增量修订(revision)。每次发生了一次安装、升级或回滚操作,revision的值就会加1。第一次revision的值永远是1。我们可以使用helm history [RELEASE]命令来查看一个特定release的修订版本号。

安装、升级、回滚时的有用选项

您还可以指定一些其他有用的选项来自定义Helm在安装、升级、回滚期间的行为。请注意这并不是cli参数的完整列表。要查看所有的参数的说明,请执行helm <command> --help 命令。

--timeout:一个Go duration类型的值,用来表示等待Kubernetes命令完成的超时时间,默认值为5m0s。

-- wait:表示必须要等到所有的Pods都处于ready状态,PVC都被绑定,Deployments都至少拥有最小ready状态Pods个数(Desired减去maxUnavailable),并且Sevices都具有IP地址(如果是LoadBalancer,则为Ingress),才会标记该release为成功。最长等待时间由--timeout值指定。如果达到超时时间,release将被标记为FAILED。注意:当Deployment的replicas被设置为1,但其滚动升级策略中的maxUnavailable没有被设置为0时,--wait将返回就绪,因为已经满足了最小ready Pod数。

--no-hooks:不运行当前命令的钩子。

--recreate-pods(仅适用于upgrade和rollback):这个参数会导致重建所有的Pod(deployment中的Pod除外)。(在Helm3中已被废弃)

☆ 'helm uninstall':卸载release

使用helm uninstall 命令从集群中卸载一个release:

$ helm uninstall happy-panda

$ helm uninstall happy-panda

该命令将从集群中移除指定release。您可以通过helm list命令看到当前部署的所有release:

$ helm list

$ helm list
NAME            VERSION UPDATED                         STATUS          CHART
inky-cat        1       Wed Sep 28 12:59:46 2016        DEPLOYED        alpine-0.1.0

从上面的输出中,我们可以看到,happy-panda这个release已经被卸载。

在上一个Helm版本中,当一个release被删除,会保留一条删除记录。而在Helm3中,删除也会移除release记录。如果您想保留记录,使用helm uninstall --keep-history。使用helm list --uninstalled只会展示使用了--keep-history删除的release。

helm list --all 会展示Helm保留的所有release 记录,包括失败或删除的条目(制定了--keep-history):

$ helm history --all

$  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

注意,因为现在默认会删除release,所以您不再能够回滚一个已经被卸载的资源了。

☆ 'helm repo':使用仓库

Helm 3不再附带一个默认的chart仓库。helm repo提供了一组命令用于添加、列出和移除仓库。

使用helm repo list来查看配置的仓库:

$ helm repo list

$ helm repo list
NAME            URL
stable          https://charts.helm.sh/stable
mumoshu         https://mumoshu.github.io/charts

使用helm repo add 来添加新的仓库:

$ helm repo add dev https://example.com/dev-charts

因为chart仓库经常在变化,在任何时候您都可以通过执行helm repo upgrate命令来确保您的Helm客户端是最新的。

使用helm repo remove命令来移除仓库。

创建您自己的charts

chart开发指南 介绍了如何开发您自己的chart。但是也可以通过使用helm create 命令来快速开始:

Helm | Chart

$ helm create deis-workflow

$ helm create deis-workflow
Creating deis-workflow

现在,./deis-workflow目录下已经有一个chart了。您可以编辑它并创建您自己的模板。

在编辑chart时,可以通过helm lint验证格式是否正确。

当准备将chart 打包分发时,您可以运行helm package命令:

$ helm package deis-workflow

$ helm package deis-workflow
deis-workflow-0.1.0.tgz

然后这个chart就可以很轻松的通过helm install 命令安装:

$ helm install deis-workflow ./deis-workflow-0.1.0.tgz

$ helm install deis-workflow ./deis-workflow-0.1.0.tgz
...

打包好的chart可以上传到chart仓库中。查看 Helm chart仓库 获取更多信息。

Helm | Chart仓库指南

总结

这一章介绍了helm客户端的基本使用方式,包括搜索,安装,升级,和卸载。也涵盖了一些有用的工具类命令,如helm status,helm get,和helm repo。

有关这些命令的更多信息,请查看Helm的内置帮助命令:

helm help。

在下一章中,我们来看一下如何开发charts。

————————————

仅用于本人学习

来源:Helm | Docs

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值