helm repo add
helm repo add stable https://charts.helm.sh/stable
helm search repo wordpress
helm show chart stable/wordpress
helm install my-wordpress stable/wordpress
helm list
helm uninstall my-wordpress
helm upgrade my-wordpress stable/wordpress --version 9.0.0
helm rollback my-wordpress 1
├── Chart.yaml # Chart 的元信息,包括版本、名称、描述等
├── values.yaml # 默认的配置值
├── charts/ # 用于存放其他依赖的 Helm Charts
└── templates/ # 存放模板文件,生成 Kubernetes 资源
.Values
apiVersion: apps/v1
kind: Deployment
metadata:
name: {{ .Values.appName }}
appName: my-app
replicas: 3
image:
repository: myregistry/my-app
tag: latest
Helm Hooks 允许您在特定阶段执行脚本,例如在安装、升级或删除 Helm Release 的不同生命周期中。这对于执行应用程序初始化、数据库迁移、配置更新等操作非常有用。
使用 Helm Hooks 的一般步骤:
使用示例:
假设您有一个 pre-install.yaml 文件,其中包含以下内容:
apiVersion: batch/v1
kind: Job
metadata:
name: {{ .Release.Name }}-pre-install-job
spec:
template:
spec:
containers:
- name: pre-install
image: busybox
command: ['sh', '-c', 'echo "Pre-install hook executed"']
restartPolicy: Never
在 Chart.yaml 文件的 hooks 部分,添加以下内容:
hooks:
pre-install:
- name: pre-install-job
manifest: templates/pre-install.yaml
这样,在安装 Release 之前,Helm 将创建一个名为 pre-install-job 的 Job,并在其中执行定义的操作。
Helm Secrets 是一个 Helm 插件,用于管理加密的敏感信息,如密码、证书等。它使用 PGP 密钥对敏感数据进行加密,确保在 Chart 中不明文存储敏感信息。
使用 Helm Secrets 的一般步骤:
helm plugin install https://github.com/zendesk/helm-secrets
helm secrets init
helm secrets enc values.yaml
helm secrets dec values.yaml
使用示例:
假设您在 values.yaml 文件中有以下敏感信息:
password: mysecretpassword
使用以下命令对其进行加密:
helm secrets enc values.yaml
这将生成一个名为 values.yaml.dec 的加密文件。在使用 Chart 时,Helm Secrets 会自动解密这些敏感信息。
Helm 插件是一种扩展 Helm 功能的方式,它允许您添加自定义命令或功能。可以使用 Helm 插件来扩展 Helm 的能力,实现特定的自动化或增强用户体验。
首先,您需要编写自己的 Helm 插件,这通常是一个独立的可执行文件。
编写 Helm 插件需要以下步骤:
go
package main
import (
"fmt"
"os"
"github.com/mitchellh/cli"
)
type Plugin struct{}
func (p *Plugin) Help() string {
return "This is a Helm plugin example"
}
func (p *Plugin) Synopsis() string {
return "A brief description of the plugin"
}
func (p *Plugin) Run(args []string) int {
fmt.Println("Running the Helm plugin example")
return 0
}
func main() {
plugin := &Plugin{}
cli := &cli.CLI{
Args: os.Args[1:],
Commands: map[string]cli.CommandFactory{},
HelpFunc: cli.BasicHelpFunc("helm-plugin-example"),
Synopsis: "A brief description of the plugin",
}
exitCode, err := cli.Run()
if err != nil {
fmt.Fprintf(os.Stderr, "Error: %s\n", err)
}
os.Exit(exitCode)
}
这是一个非常简单的例子,实际的 Helm 插件可能包含更多复杂的逻辑和功能。
编写完 Helm 插件的代码后,您需要构建它,生成一个可执行的二进制文件。
go build -o helm-plugin-example
将编写的插件二进制文件放置在 Helm 客户端可以访问的位置,例如将其添加到系统 PATH 或放在 Helm 客户端所在目录。
在构建好插件后,您需要将它安装到 Helm 客户端,以便 Helm 可以识别并调用您的插件。
现在您的 Helm 插件已经安装,您可以在 Helm 命令前加上插件名称,调用您编写的自定义 Helm 命令。
使用示例:
假设您编写了一个名为 helm-plugin-example 的 Helm 插件,并将其安装到系统 PATH。然后,您可以执行以下命令运行插件:
helm plugin-example
插件将输出 "Running the Helm plugin example"。
更复杂的 Helm 插件功能:
您可以通过编写更复杂的 Helm 插件来实现更多功能,例如: