文章转载自: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. C++指针探究

    周五听实习师父指点了一下C++的强制类型转换概念,师父说了一句"强制类型转换其实就是告诉编译器不用检查当前位置的类型,程序猿自己知道类型". 今天整理之前的学习笔记的时候又发现,在 ...

  2. SpringBoot接口 - 如何优雅的对接口返回内容统一封装?

    在以SpringBoot开发Restful接口时,统一返回方便前端进行开发和封装,以及出现时给出响应编码和信息.@pdai SpringBoot接口 - 如何优雅的对接口返回内容统一封装? RESTf ...

  3. Reading configuration from: /usr/local/src/zookeeper/apache-zookeeper-3.6.3-bin/bin/../conf/zoo.cfg

    2021-04-25 00:15:48,112 [myid:] - INFO  [main:QuorumPeerConfig@174] - Reading configuration from: /u ...

  4. idea java 打包的方法

    方法1: 在pom.xml 里面加上maven打包的配置 <plugin> <groupId>org.springframework.cloud</groupId> ...

  5. 博客从 CloudBase 迁移至云主机

    迁移起因 原来的博客 其实从很久以前就想要写博客,但总是断断续续的,一直都没有认真地开始. 最终,决定使用静态博客工具作为自己博客的承载体.在多种工具的比较下,最终选择了 Hugo 并部署到 Gith ...

  6. 教你使用CANN将照片一键转换成卡通风格

    摘要:这次是将AnimeGAN部署到Ascend 310,从而实现对自己想要图片的一键转换为我们想看到的卡通风格. 本文分享自华为云社区<[CANN训练营]CANN训练营_昇腾AI趣味应用实现A ...

  7. NOI / 2.3基本算法之递归变递推-6262:流感传染

    OpenJudge - 6262:流感传染http://noi.openjudge.cn/ch0203/6262/ 6262:流感传染​​​​​​ 总时间限制: 1000ms 内存限制: 65536k ...

  8. linux常见命令(七)

    df/du/ln/lsblk/mount磁盘和目录的容量df 列出文件系统整体的磁盘使用量查看磁盘占用量并用易读的格式显示出来df -hdu 列出目录的磁盘占用量查看当前目录下每个目录/文件的占用量, ...

  9. 【深入学习.Net】.泛型集合【体检管理系统】

    基于泛型List的体检管理系统(蜗牛爬坡) 第五章[体检管理系统] 一.项目展示图(基于.net core6.0) 二.首先准备两个Model类 HealthCheckItem(项目类):Name(项 ...

  10. Java学习--流程控制

    Java学习 流程控制 用户交互Scanner Scanner对象 Java通过Scanner类获取用户的输入 基本语法: Scanner scanner = new Scanner(System.i ...