基于Kubernetes v1.30.1部署helm v3.15.0

Helm版本支持策略如下链接,可根据k8s版本安装对应helm版本
https://helm.sh/zh/docs/topics/version_skew/

使用Apt (Debian/Ubuntu)

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

初始化

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

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

通过执行helm repo list可以获取添加的repo列表

root@k8smaster1:~# helm repo list
NAME            URL                                     
bitnami         https://charts.bitnami.com/bitnami      
jumpserver      https://jumpserver.github.io/helm-charts

安装Chart示例

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

helm repo update              # 确定我们可以拿到最新的charts列表

可以通过尝试安装验证

helm install bitnami/redis --generate-name

输出如下即正常

NAME: redis-1716445794
LAST DEPLOYED: Thu May 23 14:30:02 2024
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
CHART NAME: redis
CHART VERSION: 19.4.0
APP VERSION: 7.2.5

在上面的例子中,bitnami/redis这个chart被发布,名字是 redis-1716445794
可以通过执行 helm show chart bitnami/redis 命令简单的了解到这个chart的基本信息。 或者您可以执行 helm show all bitnami/redis获取关于该chart的所有信息。
每当执行 helm install 的时候,都会创建一个新的发布版本。 所以一个chart在同一个集群里面可以被安装多次,每一个都可以被独立的管理和升级。
版本发布
通过Helm可以很容易看到哪些chart被发布

helm list

输出如下:

NAME                    NAMESPACE       REVISION        UPDATED                                 STATUS          CHART           APP VERSION
redis-1716445794        default         1               2024-05-23 14:30:02.781226415 +0800 CST deployed        redis-19.4.0    7.2.5  

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

卸载一个版本

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

helm uninstall redis-1716445794
release "redis-1716445794" uninstalled

该命令会从Kubernetes卸载redis-1716445794, 它将删除和该版本相关的所有相关资源(service、deployment、 pod等等)甚至版本历史。
note:如果您在执行 helm uninstall 的时候提供 --keep-history 选项, Helm将会保存版本历史。 可以通过命令查看该版本的信息

root@k8smaster1:~# helm list
NAME                    NAMESPACE       REVISION        UPDATED                                 STATUS          CHART           APP VERSION
redis-1716446770        default         1               2024-05-23 14:46:19.244111696 +0800 CST deployed        redis-19.4.0    7.2.5      
root@k8smaster1:~# helm uninstall redis-1716446770 --keep-history
release "redis-1716446770" uninstalled
root@k8smaster1:~# helm history redis-1716446770
REVISION        UPDATED                         STATUS          CHART           APP VERSION     DESCRIPTION            
1               Thu May 23 14:46:19 2024        uninstalled     redis-19.4.0    7.2.5           Uninstallation complete

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

$ helm status redis-1716448290

输出如下:

NAME: redis-1716448290
LAST DEPLOYED: Thu May 23 15:11:43 2024
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
CHART NAME: redis
CHART VERSION: 19.4.0
APP VERSION: 7.2.5

安装前自定义 chart

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

helm show values bitnami/redis

输出如下内容

root@k8smaster1:~# helm show values bitnami/redis
# Copyright Broadcom, Inc. All Rights Reserved.
# SPDX-License-Identifier: APACHE-2.0

## @section Global parameters
## 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, imagePullSecrets and storageClass
##

## @param global.imageRegistry Global Docker image registry
## @param global.imagePullSecrets Global Docker registry secret names as an array
## @param global.storageClass Global StorageClass for Persistent Volume(s)
## @param global.redis.password Global Redis® password (overrides `auth.password`)

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

$ echo '{xxxxxxxxxx}' > values.yaml
$ helm install -f values.yaml bitnami/redis --generate-name

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

  • –values (或 -f):使用 YAML 文件覆盖配置。可以指定多次,优先使用最右边的文件。
  • –set:通过命令行的方式对指定项进行覆盖。
    如果同时使用两种方式,则 --set 中的值会被合并到 --values 中,但是 --set 中的值优先级更高。在–set 中覆盖的内容会被被保存在 ConfigMap 中。可以通过 helm get values 来查看指定 release 中 --set 设置的值。也可以通过运行 helm upgrade 并指定 --reset-values 字段来清除 --set 中设置的值

拓展

set 的格式和限制
–set 选项使用0或多个 name/value 对。最简单的用法类似于:–set name=value,等价于如下 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:
  - port: 80

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

servers:
  - port: 80
    host: example

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

name: "value1,value2"

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

nodeSelector:
  kubernetes.io/role: master

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

  • 19
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值