helm是kubernetes的包管理器,通过chart实现应用的便捷部署与管理,1. 安装helm客户端;2. helm 3无需初始化tiller,直接与api交互;3. 添加chart仓库如bitnami;4. 使用helm search repo搜索chart;5. 用helm install安装chart并创建release;6. 通过helm list查看已安装release;7. 使用helm upgrade升级release,helm uninstall卸载release;自定义chart需修改values.yaml和模板文件,再本地安装;编写自定义chart需掌握chart.yaml、values.yaml和go模板;部署失败时可通过helm lint、kubectl get events、helm get manifest等命令排查配置、语法、资源冲突等问题;helm 3移除了tiller,提升了安全性和易用性,迁移需安装helm 3,使用helm 2to3插件转移配置并升级release,建议优先使用helm 3。

Helm,简单来说,就是 Kubernetes 的包管理器。它能帮你像安装应用一样轻松部署和管理 Kubernetes 应用,告别 YAML 地狱,让应用部署和升级变得简单可控。
解决方案
Helm 通过 Chart 来管理 Kubernetes 应用。Chart 就像一个软件包,包含了所有部署应用所需的 Kubernetes 资源定义(YAML 文件)、模板和依赖关系。
1. 安装 Helm:
首先,你需要安装 Helm。你可以从 Helm 官方网站下载对应平台的安装包,或者使用包管理器安装。例如,在 macOS 上可以使用 Homebrew:
brew install helm
2. 初始化 Helm:
安装完成后,需要初始化 Helm。在 Kubernetes 集群上安装 Tiller(Helm 的服务端组件,Helm 3 已经移除 Tiller,简化了部署流程)。
对于 Helm 3,你不再需要手动初始化 Tiller。Helm 3 直接与 Kubernetes API 服务器交互,简化了部署流程。
3. 添加 Chart 仓库:
Helm 使用 Chart 仓库来存储和分享 Chart。你可以添加官方的 Chart 仓库,也可以添加第三方 Chart 仓库。
helm repo add bitnami https://charts.bitnami.com/bitnami helm repo update
4. 搜索 Chart:
使用
helm search repo
helm search repo wordpress
5. 安装 Chart:
使用
helm install
helm install my-wordpress bitnami/wordpress
这将会安装 WordPress,并创建一个名为
my-wordpress
6. 查看 Release:
使用
helm list
helm list
7. 升级 Release:
使用
helm upgrade
helm upgrade my-wordpress bitnami/wordpress --set service.type=LoadBalancer
8. 卸载 Release:
使用
helm uninstall
helm uninstall my-wordpress
配置演示:自定义 WordPress Chart
让我们深入了解如何自定义 WordPress Chart。
1. 下载 Chart:
首先,下载 WordPress Chart 到本地。
helm pull bitnami/wordpress tar -zxvf wordpress-xxx.tgz # 解压下载的 Chart cd wordpress
2. 修改 values.yaml
values.yaml
# values.yaml
wordpressUsername: "admin"
wordpressPassword: "your_strong_password"
mariadb:
auth:
rootPassword: "your_root_password"
database: wordpress
username: wordpress
password: "your_wordpress_password"3. 修改模板:
你可以修改 Chart 中的模板文件来定制 Kubernetes 资源的定义。例如,你可以修改 Deployment 的资源限制、Service 的类型等。模板文件使用 Go 模板语言编写。
例如,修改
templates/deployment.yaml
# templates/deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: {{ include "wordpress.fullname" . }}
labels:
{{- include "wordpress.labels" . | nindent 4 }}
spec:
replicas: {{ .Values.replicaCount }}
selector:
matchLabels:
{{- include "wordpress.selectorLabels" . | nindent 6 }}
template:
metadata:
labels:
{{- include "wordpress.selectorLabels" . | nindent 8 }}
spec:
containers:
- name: wordpress
image: {{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}
imagePullPolicy: {{ .Values.image.pullPolicy }}
ports:
- name: http
containerPort: 80
protocol: TCP
resources:
requests:
cpu: 200m
memory: 512Mi
limits:
cpu: 500m
memory: 1Gi
livenessProbe:
httpGet:
path: /wp-login.php
port: http
initialDelaySeconds: 30
periodSeconds: 10
readinessProbe:
httpGet:
path: /wp-login.php
port: http
initialDelaySeconds: 30
periodSeconds: 104. 使用自定义 Chart 安装:
现在,你可以使用自定义的 Chart 安装 WordPress。
helm install my-custom-wordpress ./wordpress
这样,你就可以使用 Helm 来管理 Kubernetes 应用的部署,并根据自己的需求进行定制。
Helm 的强大之处在于其灵活性和可扩展性。你可以创建自己的 Chart,也可以使用现有的 Chart,并根据自己的需求进行修改。
如何编写自己的 Helm Chart?
编写自己的 Helm Chart 需要理解 Chart 的结构和 Go 模板语言。一个基本的 Chart 结构如下:
my-chart/
Chart.yaml # Chart 的元数据
values.yaml # 默认配置参数
templates/ # Kubernetes 资源定义模板
deployment.yaml
service.yaml
...
charts/ # 依赖的子 Chart
README.md # Chart 的说明文档Chart.yaml
values.yaml
templates/
编写模板时,可以使用 Go 模板语言来引用
values.yaml
例如,以下是一个简单的 Deployment 模板:
# templates/deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: {{ .Release.Name }}-deployment
spec:
selector:
matchLabels:
app: {{ .Release.Name }}
template:
metadata:
labels:
app: {{ .Release.Name }}
spec:
containers:
- name: my-container
image: {{ .Values.image.repository }}:{{ .Values.image.tag }}在这个模板中,
.Release.Name
.Values.image.repository
.Values.image.tag
values.yaml
image.repository
image.tag
如何解决 Helm Chart 部署失败的问题?
Helm Chart 部署失败的原因有很多,例如:
解决 Helm Chart 部署失败的问题,可以按照以下步骤进行:
helm install
helm upgrade
kubectl get events
values.yaml
helm lint
此外,还可以使用 Helm 的调试功能来帮助你找到问题所在。例如,可以使用
helm get manifest
helm get values
Helm 3 与 Helm 2 的主要区别是什么?如何迁移?
Helm 3 相比 Helm 2 最大的变化是移除了 Tiller 组件。在 Helm 2 中,Tiller 运行在 Kubernetes 集群中,负责接收 Helm 客户端的请求,并操作 Kubernetes 资源。这带来了一些安全问题,因为 Tiller 需要具有较高的权限。
Helm 3 直接与 Kubernetes API 服务器交互,不再需要 Tiller。这简化了部署流程,提高了安全性。
迁移到 Helm 3 的步骤如下:
helm 2to3
helm upgrade
需要注意的是,Helm 3 与 Helm 2 的 Chart 格式略有不同。一些旧的 Chart 可能需要在 Helm 3 中进行修改才能正常工作。
总的来说,Helm 3 更加安全、简单和易于使用。建议尽早迁移到 Helm 3。
以上就是如何用 Helm 管理 Kubernetes 应用部署(含配置演示)的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号