要将你提供的 Docker 命令转换为 Helm Chart,你需要将相关的配置转化为 Kubernetes 资源文件,并使用 Helm 的模板语法进行参数化配置。以下是一个基本的 Helm Chart 示例,包括 Deployment
、Service
和 Values.yaml
文件。
helm create xxl-job-admin
1. values.yaml
这是 Helm Chart 中用于定义默认值的文件。你可以在这里配置镜像、端口和环境变量等。
image:
repository: xuxueli/xxl-job-admin
tag: "2.3.0"
pullPolicy: IfNotPresent
service:
port: 8080
env:
params: "--spring.datasource.url=jdbc:mysql://my-stack-mysql:3306/xxl_job?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai"
volumeMounts:
logPath: /tmp
resources: {}
2. deployment.yaml
用于定义容器的 Deployment
资源。
apiVersion: apps/v1
kind: Deployment
metadata:
name: {{ .Release.Name }}-xxl-job-admin
labels:
app: {{ .Release.Name }}-xxl-job-admin
spec:
replicas: 1
selector:
matchLabels:
app: {{ .Release.Name }}-xxl-job-admin
template:
metadata:
labels:
app: {{ .Release.Name }}-xxl-job-admin
spec:
containers:
- name: xxl-job-admin
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
imagePullPolicy: {{ .Values.image.pullPolicy }}
ports:
- containerPort: {{ .Values.service.port }}
env:
- name: PARAMS
value: {{ .Values.env.params | quote }}
volumeMounts:
- name: applogs
mountPath: /data/applogs
volumes:
- name: applogs
hostPath:
path: {{ .Values.volumeMounts.logPath }}
3. service.yaml
用于定义容器的 Service
资源。
apiVersion: v1
kind: Service
metadata:
name: {{ .Release.Name }}-xxl-job-admin
labels:
app: {{ .Release.Name }}-xxl-job-admin
spec:
type: ClusterIP
ports:
- port: 8080
targetPort: 8080
protocol: TCP
name: http
selector:
app: {{ .Release.Name }}-xxl-job-admin
4. Chart.yaml
用于定义 Helm Chart 的基本信息。
apiVersion: v2
name: xxl-job-admin
description: A Helm chart for XXL-Job Admin
version: 0.1.0
appVersion: "2.3.0"
5. templates/_helpers.tpl
可以包含一些通用的模板帮助方法。
默认就够了
部署步骤
-
创建 Helm Chart:
helm create xxl-job-admin
-
替换生成的
values.yaml
、deployment.yaml
和service.yaml
: 将上面的内容替换到生成的values.yaml
和模板文件中。 -
安装 Chart:
helm install my-xxl-job-admin