创建Helm脚本
一、创建脚本
Helm 是 Kubernetes 的包管理工具,它可以帮助您简化和自动化 Kubernetes 应用程序的部署和管理。使用 Helm,您可以创建和管理称为 Helm Chart 的应用程序打包,这些 Chart 包含了 Kubernetes 资源和配置信息,可以在不同的 Kubernetes 集群上部署和管理应用程序。
在 Helm 中,通过执行 `helm create` 命令,您可以快速创建一个新的 Helm Chart。这个命令会生成一个初始的 Helm Chart 目录结构,并包含一些示例文件,让您可以快速开始构建自己的应用程序。
以下是使用 `helm create` 命令初步生成 Helm Chart 文件的步骤:
1. 打开终端或命令行界面。
2. 进入您希望创建 Helm Chart 的目录,例如:`cd /path/to/charts`
3. 执行 `helm create` 命令并指定 Chart 的名称,例如:helm create rabbitmq-management
执行上述命令后,Helm 将在当前目录下创建名为 `rabbitmq-management` 的 Helm Chart 目录,并生成以下文件和目录:
rabbitmq-management
├── Chart.yaml
├── charts
├── templates
│ ├── _helpers.tpl
│ ├── deployment.yaml
│ ├── service.yaml
│ └── tests
│ └── test-connection.yaml
└── values.yaml
生成的文件中,`templates` 目录包含了一些示例模板文件,您可以根据需要修改或添加更多的模板文件来定义要部署的 Kubernetes 资源。`values.yaml` 文件包含了一些默认的配置值,您可以在这里定义 Chart 的默认配置,并在模板中使用这些配置。
一旦生成了初始的 Helm Chart 文件,您可以根据需要编辑和定制 Chart,然后使用 `helm install` 命令将应用程序部署到 Kubernetes 集群中。
二、测试语法
helm lint
helm lint ./rabbitmq-management
==> Linting ./rabbitmq-management
[INFO] Chart.yaml: icon is recommended1 chart(s) linted, 0 chart(s) failed
三、 查看脚本内容
helm template
helm template rabbitmq-management ./rabbitmq-management---
# Source: rabbitmq-management/templates/service.yaml
apiVersion: v1
kind: Service
metadata:name: rabbitmq-managementlabels:dce.daocloud.io/app: rabbitmq-managementhelm.sh/chart: rabbitmq-management-0.1.0app.kubernetes.io/name: rabbitmq-managementapp.kubernetes.io/instance: rabbitmq-managementapp.kubernetes.io/version: "1.16.0"app.kubernetes.io/managed-by: Helm
spec:type: NodePortports:- port: 5672targetPort: 5672protocol: TCPname: connection- port: 15672targetPort: 15672protocol: TCPname: managementselector:app.kubernetes.io/name: rabbitmq-managementapp.kubernetes.io/instance: rabbitmq-management
---
# Source: rabbitmq-management/templates/deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:name: rabbitmq-managementlabels:dce.daocloud.io/app: rabbitmq-managementdce.daocloud.io/component: rabbitmq-managementhelm.sh/chart: rabbitmq-management-0.1.0app.kubernetes.io/name: rabbitmq-managementapp.kubernetes.io/instance: rabbitmq-managementapp.kubernetes.io/version: "1.16.0"app.kubernetes.io/managed-by: Helm
spec:replicas: 1selector:matchLabels:app.kubernetes.io/name: rabbitmq-managementapp.kubernetes.io/instance: rabbitmq-managementtemplate:metadata:labels:dce.daocloud.io/app: rabbitmq-managementdce.daocloud.io/component: rabbitmq-managementapp.kubernetes.io/name: rabbitmq-managementapp.kubernetes.io/instance: rabbitmq-managementspec:securityContext:{}containers:- name: rabbitmq-managementsecurityContext:{}image: "10.32.224.129/rabbitmq/rabbitmq:3.6.2-management"imagePullPolicy: IfNotPresentports:- name: connectioncontainerPort: 5672protocol: TCP- name: managementcontainerPort: 15672protocol: TCPlivenessProbe:tcpSocket:port: 5672initialDelaySeconds: 45timeoutSeconds: 1periodSeconds: 10successThreshold: 1failureThreshold: 3readinessProbe:tcpSocket:port: 5672initialDelaySeconds: 30timeoutSeconds: 1periodSeconds: 10successThreshold: 1failureThreshold: 9resources:limits:cpu: 1memory: 1Girequests:cpu: 100mmemory: 1Gi
---
# Source: rabbitmq-management/templates/tests/test-connection.yaml
apiVersion: v1
kind: Pod
metadata:name: "rabbitmq-management-test-connection"labels:helm.sh/chart: rabbitmq-management-0.1.0app.kubernetes.io/name: rabbitmq-managementapp.kubernetes.io/instance: rabbitmq-managementapp.kubernetes.io/version: "1.16.0"app.kubernetes.io/managed-by: Helmannotations:"helm.sh/hook": test
spec:containers:- name: wgetimage: busyboxcommand: ['wget']args: ['rabbitmq-management:5672']restartPolicy: Never