首页 > 解决方案 > 通过 helm 部署 Kubernetes 作业

问题描述

我是新手,我尝试部署一些教程图表。有几个疑问:

  1. 我有一个需要部署的 Kubernetes 工作。是否可以通过 helm 部署工作?

  2. 此外,目前我的 kubernetes 作业是从我的自定义 docker 映像部署的,它运行一个 bash 脚本来完成该作业。我想向这个图表/作业传递一些参数,以便 bash 命令采用输入参数。这就是我决定转任掌舵的原因,因为它提供了更大的灵活性。那可能吗?

标签: kuberneteskubernetes-helm

解决方案


您可以使用Helm Hooks来运行作业。根据您设置注释的方式,您可以运行不同类型的挂钩(安装前、安装后、删除前、删除后、升级前、升级后、回滚前、回滚后、crd -安装)。文档中的一个示例如下:

apiVersion: batch/v1
kind: Job
metadata:
  name: "{{.Release.Name}}"
  labels:
    app.kubernetes.io/managed-by: {{.Release.Service | quote }}
    app.kubernetes.io/instance: {{.Release.Name | quote }}
    helm.sh/chart: "{{.Chart.Name}}-{{.Chart.Version}}"
  annotations:
    # This is what defines this resource as a hook. Without this line, the
    # job is considered part of the release.
    "helm.sh/hook": post-install
    "helm.sh/hook-weight": "-5"
    "helm.sh/hook-delete-policy": hook-succeeded
spec:
  template:
    metadata:
      name: "{{.Release.Name}}"
      labels:
        app.kubernetes.io/managed-by: {{.Release.Service | quote }}
        app.kubernetes.io/instance: {{.Release.Name | quote }}
        helm.sh/chart: "{{.Chart.Name}}-{{.Chart.Version}}"
    spec:
      restartPolicy: Never
      containers:
      - name: post-install-job
        image: "alpine:3.3"
        command: ["/bin/sleep","{{default "10" .Values.sleepyTime}}"]

您可以将参数作为secretsconfigMaps传递给作业,就像传递给 pod 一样。


推荐阅读