文章转载自:http://www.mydlq.club/article/51/

系统环境:

  • Helm 版本:v3.5.0
  • Kubernetes 版本:v1.18.2

一、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 命令进行下载。

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

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

#解压 Helm
$ tar -zxvf helm-v3.5.0-linux-amd64.tar.gz #复制客户端执行文件到 bin 目录下,方便在系统下能执行 helm 命令
$ cp linux-amd64/helm /usr/local/bin/

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

安装好k8s集群后默认安装的helm3了

三、添加 Chart 仓库

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

$ 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 update

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

四、Helm 的基本操作

安装应用

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

$ helm search repo nginx

NAME                                    CHART VERSION   APP VERSION     DESCRIPTION
bitnami/nginx 5.3.1 1.17.10 Chart for the nginx server
bitnami/nginx-ingress-controller 5.3.21 0.32.0 Chart for the nginx Ingress controller
bitnami/kong 1.1.4 2.0.4 Kong is a scalable, open source API layer (aka ...

安装测试:

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

查看应用状态

$ helm status nginx -n mydlqcloud # 实际操作时具体版本有变化

NAME: nginx
LAST DEPLOYED: Thu Apr 7 16:39:49 2022
NAMESPACE: mydlqcloud
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
CHART NAME: nginx
CHART VERSION: 10.0.0
APP VERSION: 1.21.6 ** Please be patient while the chart is being deployed ** NGINX can be accessed through the following DNS name from within your cluster: nginx.mydlqcloud.svc.cluster.local (port 80) To access NGINX from outside the cluster, follow the steps below: 1. Get the NGINX 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 mydlqcloud -w nginx' export SERVICE_PORT=$(kubectl get --namespace mydlqcloud -o jsonpath="{.spec.ports[0].port}" services nginx)
export SERVICE_IP=$(kubectl get svc --namespace mydlqcloud nginx -o jsonpath='{.status.loadBalancer.ingress[0].ip}')
echo "http://${SERVICE_IP}:${SERVICE_PORT}"

自定义参数安装应用

Helm 中支持使用自定义 yaml 文件和 --set 命令参数对要安装的应用进行参数配置,使用如下:

查看应用 chart 可配置参数

首先使用 helm show values {仓库名称}/{应用名称} 来查看对应应用的可配置参数:

$ helm show values bitnami/nginx

image:
registry: docker.io
repository: bitnami/nginx
tag: 1.17.10-debian-10-r33
resources:
limits:
cpu: 100m
memory: 128Mi
requests:
cpu: 100m
memory: 128Mi
......(太长,略)

方式一:使用自定义 values.yaml 文件安装应用

(1)、创建自定义配置文件 values.yaml

$ cat > values.yaml << EOF

image:
registry: docker.io
repository: bitnami/nginx
resources:
limits:
cpu: 1000m
memory: 1024Mi
requests:
cpu: 1000m
memory: 1024Mi EOF

(2)、使用自定义配置文件运行应用

$ helm install -f values.yaml bitnami/nginx

方式二:使用 --set 配置参数进行安装

--set 参数是在使用 helm 命令时候添加的参数,可以在执行 helm 安装与更新应用时使用,多个参数间用","隔开,使用如下:

如果配置文件和 --set 同时使用,则 --set 设置的参数会覆盖配置文件中的参数配置。

$ helm install --set 'registry.registry=docker.io,registry.repository=bitnami/nginx' bitnami/nginx

对于 --set 写配置参数,Helm 官方对于不同的配置类型给出了不同的写法,如下:

卸载应用

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

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

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

$ helm delete nginx -n mydlqcloud

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

$ helm list -n mydlqcloud --all

升级应用

创建新的配置参数文件 values.yaml:

$ cat > values.yaml << EOF

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

应用更新:

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

查看新配置是否生效:

$ helm get values nginx -n mydlqcloud

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

应用回滚

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

$ helm history nginx -n mydlqcloud

REVISION        UPDATED                         STATUS          CHART           APP VERSION     DESCRIPTION
1 Fri May 8 06:46:56 2020 superseded nginx-5.3.1 1.17.3 Install complete
2 Fri May 8 06:46:56 2020 deployed nginx-5.3.1 1.17.3 Upgrade complete

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

$ helm rollback nginx 1 -n mydlqcloud

Rollback was a success! Happy Helming!

渲染模板

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

$ helm template bitnami/nginx -n mydlqcloud

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

---
# 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.3.1
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.3.1
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.3.1
app.kubernetes.io/instance: RELEASE-NAME
app.kubernetes.io/managed-by: Helm
spec:
containers:
- name: nginx
image: docker.io/bitnami/nginx:1.17.3-debian-10-r63
imagePullPolicy: "IfNotPresent"
ports:
- name: http
containerPort: 8080

安装 Helm3 管理 Kubernetes 应用的更多相关文章

  1. 三、安装并配置Kubernetes Node节点

    1. 安装并配置Kubernetes Node节点 1.1 安装Kubernetes Node节点所需服务 yum -y install kubernetes   通过yum安装kubernetes服 ...

  2. CentOS7系列--5.3CentOS7中配置和管理Kubernetes

    CentOS7配置和管理Kubernetes Kubernetes(k8s)是自动化容器操作的开源平台,这些操作包括部署,调度和节点集群间扩展.如果你曾经用过Docker容器技术部署容器,那么可以将D ...

  3. K8s集群安装--最新版 Kubernetes 1.14.1

    K8s集群安装--最新版 Kubernetes 1.14.1 前言 网上有很多关于k8s安装的文章,但是我参照一些文章安装时碰到了不少坑.今天终于安装好了,故将一些关键点写下来与大家共享. 我安装是基 ...

  4. [转帖]K8s集群安装--最新版 Kubernetes 1.14.1

    K8s集群安装--最新版 Kubernetes 1.14.1 http://www.cnblogs.com/jieky/p/10679998.html 原作者写的比较简单 大略流程和跳转的多一些 改天 ...

  5. openshift 4.3中安装helm3并通过helm方式部署应用

    openshift 4.3中安装helm3并通过helm方式部署应用 简介 Helm是一个命令行界面(CLI)工具,可简化将应用程序和服务部署到OpenShift Container Platform ...

  6. 在客户端电脑使用 kubectl 远程管理 Kubernetes

    日常工作中,可能需要在自己的笔记本电脑上执行 kubectl 命令以管理远程 Linux 服务器上的 Kubernetes 集群.通过调用 kubernetes API 来实现对 Kubernetes ...

  7. [转]centos6.6 rpm安装与管理

    centos6.6 rpm安装与管理 原文地址:http://www.centoscn.com/CentOS/2015/0414/5182.html   rpm包管理:安装.升级.卸载.查询.检验 安 ...

  8. 安装docker管理工具rancher

    http://blog.csdn.net/freewebsys/article/details/51136562 docker(2):安装docker管理工具rancher rancher是一个Doc ...

  9. OpenStack安装部署管理中常见问题解决方法

    一.网络问题-network 更多网络原理机制可以参考<OpenStack云平台的网络模式及其工作机制>. 1.1.控制节点与网络控制器区别 OpenStack平台中有两种类型的物理节点, ...

随机推荐

  1. 静态同步方法和解决线程安全问题_Lock锁

    静态的同步方法锁对象是谁?不能是thisthis是创建对象之后产生的,静态方法优先于对象静态方法的锁对象是本类的cLass属性-->class文件对象(反射) 卖票案例出现了线程安全问题 卖出了 ...

  2. Scanner的使用步骤和匿名对象的说明

    Scanner使用步骤 查看类 ~java.util.Scanner :该类需要import导入后使用. 查看构造方法 ~public Scanner(InputStream source) : 构造 ...

  3. Windows JDK 的下载与安装

    Java Development Kit 简称 JDK,任何需要开发 Java 程序的环境都需要进行安装 JDK. JDK 下载地址:https://www.oracle.com/java/techn ...

  4. SDK导入问题 __imp_与__imp__

    目前刚刚实习一周,接触的第一个项目是CMake编译的QT项目,需要引入公司的SDK,编译能过去但是程序就是找不到SDK的接口, 排查了半天发现问题在于:公司的SDK是32位的,自己项目的build k ...

  5. python解决“failed to execute pyi_rth_pkgres”问题

    pip uninstall pyinstaller pip install https://github.com/pyinstaller/pyinstaller/archive/develop.zip

  6. 苹果手机和Windows之间互传文件

    参考链接:https://jingyan.baidu.com/article/a378c960c46804f229283064.html 实现原理:就是使用Samba服务,windows共享一个文件夹 ...

  7. PHP几个工具函数

    移除XSS攻击脚本 function RemoveXSS($val) { // remove all non-printable characters. CR(0a) and LF(0b) and T ...

  8. Python3的原生协程(Async/Await)和Tornado异步非阻塞

    原文转载自「刘悦的技术博客」https://v3u.cn/a_id_113 我们知道在程序在执行 IO 密集型任务的时候,程序会因为等待 IO 而阻塞,而协程作为一种用户态的轻量级线程,可以帮我们解决 ...

  9. PostgreSQL定时备份

    # PostgreSQL定时备份 # 版本:PostgreSQL14.0 # 一.如果你在pg_hba.conf中设定了密码登录,那么你就需要设置一个默认密码共psql登录的时候跳过验证.如果是roo ...

  10. Apache DolphinScheduler 1.2.0 使用文档(1/8):架构及名词解释

    本文章经授权转载,原文链接: https://blog.csdn.net/MiaoSO/article/details/104770720 目录 1. 架构及名词解释 1.1 DolphinSched ...