EvenChan's Ops.

kubernetes下helm3的安装部署

字数统计: 1.3k阅读时长: 5 min
2020/05/14

系统环境:

  • Helm 版本:v3.1.0
  • Kubernetes 版本:v1.16.3

参考地址:


一、Helm 介绍

Helm 是一款能够帮助你管理 Kubernetes 应用的程序,它可以让你创建自己的应用模板(chart),然后模板来创建配置很多可自定义参数,每次我们只需要设定很少或者不设置参数(使用默认参数)就可以将应用部署到 Kubernetes 中,后期就可以通过 Helm 来进行升级、回滚、删除等等操作的管理。

Helm 的 Charts 类似于应用商店,里面存有很多公司提供不同应用的模板,例如常部署的 Redis、Mysql、Nginx 等等,可以让我们很方便的采用别人的模板,然后进行一定的配置,就能在我们的 Kubernetes 集群中创建对应的应用。

Helm 还经常与 CI\CD 配置使用,在这个过程中用于维护应用程序的安装、升级、回滚等操作。

如上,现在学习如何安装、使用 Helm,已经是学习如何使用 Kubernetes 的重要部分了,下面将记录一下这个安装过程。

二、下载并安装 Helm 客户端

访问 Helm Github 下载页面 https://github.com/helm/helm/releases 找到最新的客户端,里面有不同系统下的包,这里我们选择 Linux amd64,然后在 Linux 系统中使用 Wget 命令进行下载。

1
2
#下载Helm客户端
$ wget https://get.helm.sh/helm-v3.1.0-linux-amd64.tar.gz

接下来解压下载的包,然后将客户端放置到 /usr/local/bin/ 目录下:

1
2
3
4
5
#解压 Helm
$ tar -zxvf helm-v3.1.0-linux-amd64.tar.gz

#复制客户端执行文件到 bin 目录下,方便在系统下能执行 helm 命令
$ cp linux-amd64/helm /usr/local/bin/

注意:helm 客户端需要下载到安装了 kubectl 并且能执行能正常通过 kubectl 操作 kubernetes 的服务器上,否则 helm 将不可用。


三、添加 Chart 仓库

在 Helm 3.0 版本中,默认是不会添加 Chart 仓库,所以这里我们需要手动添加,下面是添加一些常用的 Charts 库,命令如下:

1
2
3
4
5
6
$ helm repo add  elastic    https://helm.elastic.co
$ helm repo add gitlab https://charts.gitlab.io
$ helm repo add harbor https://helm.goharbor.io
$ helm repo add bitnami https://charts.bitnami.com/bitnami
$ helm repo add incubator https://kubernetes-charts-incubator.storage.googleapis.com
$ helm repo add stable https://kubernetes-charts.storage.googleapis.com

增加完仓库后,需要执行更新命令,将仓库中的信息进行同步:

1
$ helm repo update

注意:如果有的仓库不能正常解析,请更换 DNS 地址,在测试过程中,发现有的能正常解析,有的不能。如果还不行,就直接将域名和对应的地址写死在 Host 文件中。


四、Helm 的基本操作

安装应用

通过 Helm 在 Repo 中查询可安装的 Redis 包:

1
2
3
4
5
6
$ helm search repo nginx

NAME CHART VERSION APP VERSION DESCRIPTION
bitnami/nginx 4.3.13 1.16.1 Chart for the nginx server
bitnami/nginx-ingress-controller 5.1.0 0.26.1 Chart for the nginx Ingress controller
stable/nginx-ingress 1.25.0 0.26.1 An nginx Ingress controller that uses ConfigMap...

安装测试:

  • –namespace:指定安装的 Namespace
1
$ helm install nginx bitnami/nginx -n mydlqcloud 

查看应用状态

1
$ helm status nginx -n mydlqcloud

卸载应用

卸载应用,并保留安装记录

1
$ helm uninstall nginx -n mydlqcloud --keep-history

查看全部应用(包含安装和卸载的应用)

1
$ helm list -n mydlqcloud --all

卸载应用,不保留安装记录

1
$ helm delete nginx -n mydlqcloud

升级应用

创建新的配置:

1
2
3
4
5
6
$ cat > values.yaml << EOF

service.type: NodePort
service.nodePorts.http: 30002

EOF

应用更新:

1
$ helm upgrade -f values.yaml nginx bitnami/nginx -n mydlqcloud

查看新配置是否生效:

1
2
3
4
5
$ helm get values nginx -n mydlqcloud

USER-SUPPLIED VALUES:
service.nodePorts.http: 30002
service.type: NodePort

应用回滚

如果升级过程发生错误,进行回滚,首先查看应用的历史版本:

1
2
3
4
5
$ helm history nginx -n mydlqcloud

REVISION UPDATED STATUS CHART APP VERSION DESCRIPTION
1 Sat Nov 23 17:40:40 2019 superseded nginx-4.3.13 1.16.1 Install complete
2 Sat Nov 23 17:44:44 2019 deployed nginx-4.3.13 1.16.1 Upgrade complete

知道 REVISION 号后就可以进行回滚操作:

1
2
3
$ helm rollback nginx 1 -n mydlqcloud

Rollback was a success! Happy Helming!

渲染模板

如果想查看通过指定的参数渲染的 Kubernetes 部署资源模板,可以通过下面命令:

1
$ helm template bitnami/nginx -n mydlqcloud 

可以看到渲染的模板如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
---
# Source: nginx/templates/svc.yaml
apiVersion: v1
kind: Service
metadata:
name: RELEASE-NAME-nginx
labels:
app.kubernetes.io/name: nginx
helm.sh/chart: nginx-5.1.12
app.kubernetes.io/instance: RELEASE-NAME
app.kubernetes.io/managed-by: Helm
spec:
type: LoadBalancer
externalTrafficPolicy: "Cluster"
ports:
- name: http
port: 80
targetPort: http
selector:
app.kubernetes.io/name: nginx
app.kubernetes.io/instance: RELEASE-NAME
---
# Source: nginx/templates/deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: RELEASE-NAME-nginx
labels:
app.kubernetes.io/name: nginx
helm.sh/chart: nginx-5.1.12
app.kubernetes.io/instance: RELEASE-NAME
app.kubernetes.io/managed-by: Helm
spec:
selector:
matchLabels:
app.kubernetes.io/name: nginx
app.kubernetes.io/instance: RELEASE-NAME
replicas: 1
template:
metadata:
labels:
app.kubernetes.io/name: nginx
helm.sh/chart: nginx-5.1.12
app.kubernetes.io/instance: RELEASE-NAME
app.kubernetes.io/managed-by: Helm
spec:
containers:
- name: nginx
image: docker.io/bitnami/nginx:1.16.1-debian-10-r63
imagePullPolicy: "IfNotPresent"
ports:
- name: http
containerPort: 8080

—END—

CATALOG
  1. 1. 一、Helm 介绍
  • 如上,现在学习如何安装、使用 Helm,已经是学习如何使用 Kubernetes 的重要部分了,下面将记录一下这个安装过程。
    1. 1. 二、下载并安装 Helm 客户端
    2. 2. 三、添加 Chart 仓库
    3. 3. 四、Helm 的基本操作
      1. 3.1. 安装应用
      2. 3.2. 卸载应用
      3. 3.3. 升级应用
      4. 3.4. 应用回滚
      5. 3.5. 渲染模板