Kubernetes|Helm
大约 2 分钟
https://blog.csdn.net/weixin_53072519/article/details/126693667
helm
Helm 为 K8S 提供了包管理工具,如 Linux 下的 yum,apt 等。
Helm 的三个概念:
- Chart:一系列用于创建 K8S 应用的信息。相当于 helm 的安装包。类似于 apt 的 dpkg 或者 Yum 的 RPM。
- config:配置文件
- release:运行 chart 之后生成的实例,与对应的 config 绑定在一起。release 与 chart 类似于 docker 中的容器实例与镜像的关系。
快速开始
安装
下载 helm 包 desired version ,而后解压。
移动到系统的 /usr/local/bin/
即可:
tar -zxvf helm-v3.10.0-linux-amd64.tar.gz
mv linux-amd64/helm /usr/local/bin/helm
其他安装方式参考官网。
测试安装成功:helm help
配置仓库
一般国内的话,配置微软或者阿里云仓库。添加仓库时,通常会因为网络连接问题出现添加不上的情况,可以切换下 VPN 多次尝试添加。
helm repo add stable http://mirror.azure.cn/kubernetes/charts
helm repo update
查看已经配置的仓库:
helm repo list
删除仓库
helm repo remove stable
安装应用
- 搜索应用
在已添加的仓库里搜索你的应用:
helm search repo mysql
在 Artifact Hub 中搜索你的应用(包括你未添加的仓库)
helm search hub mysql
- 查看 chart 的配置属性,如依赖镜像,资源限制,端口服务等。
helm show values stable/mysql
我们可以将 show values 得到的文件进行修改,以配置我们自己的 chart:
helm show values stable/mysql > my_chart_values.yaml
- 安装应用
helm upgrade --cleanup-on-fail \
--install myhub jupyterhub/jupyterhub \
--namespace dev \
--create-namespace \
--values my_config.yaml
除了用 --values 传递配置函数,还可以直接传递 --set
参数。
查看安装进度:
自定义 Chart
helm create mychart
生成一个 mychart 文件夹,里面包括 Chart 模板目录,目录下包括:
- charts 文件夹
- Chart.yaml
- templates 文件夹
- values.yaml(上一节中我们 show value 得到的就是这个文件的内容)
在 templates 中创建服务所需要的各种 yaml
文件。如
- deployment.yaml
- service.yaml
安装 Chart
可以直接使用刚刚的 mychart 文件夹安装:
helm install myapp mychart/
修改 yaml 文件后,同样可以直接使用 helm 升级 app:
helm upgrade myapp mychart/
高效复用 yaml 文件
可以在 values.yaml
中配置参数,而后 helm 会将全局参数引用到 templates 中的文件,从而实现仅通过修改 values.yaml
,就可以部署不同配置的同类型 k8s 服务。
values.yaml 中定义:
replicas: 1
image: myimage
tag: 1.0
label: mylabel
port: 80
在 deployment.yaml
中引用:
apiVersion: apps/v1
kind: Deployment
metadata:
creationTimestamp: null
labels:
app: myweb1
name: {{ .Release.Name}}-deploy
spec:
replicas: {{ .Values.replicas}}
selector:
matchLabels:
app: {{ .Values.label}}
strategy: {}
template:
metadata:
labels:
app: {{ .Values.label}}
spec:
containers:
- image: {{ .Values.image}}
...