web-dev-qa-db-ja.com

Helm経由でのkubernetesジョブのデプロイ

私はヘルムを始めたばかりで、いくつかのチュートリアルチャートを展開しようとしました。いくつかのクエリがありました:

1)デプロイする必要があるkubernetsジョブがあります。 helmを介してジョブをデプロイすることは可能ですか?

2)また、現在、私のkubernetesジョブはカスタムDockerイメージからデプロイされており、bashスクリプトを実行してジョブを完了します。 bashコマンドが入力パラメーターを取得できるように、このチャート/ジョブにいくつかのパラメーターを渡したかったのです。それが私が実権を握ることに決めた理由です。それは可能ですか?

5
codec

ヘルムを使用できます。 Helmは、jobs、pods、configmaps、secretsなどのすべてのkubernetesリソースをテンプレートフォルダー内にインストールします。ヘルムフックによってインストールの順序を制御できます。 Helmは、導入に関して、インストール前、インストール後、削除前のようなフックを提供します。 2つ以上のジョブがプレインストールされている場合、それらの重量がインストールのために比較されます。

|-scripts/runjob.sh
|-templates/post-install.yaml
|-Chart.yaml
|-values.yaml

多くの場合、環境に応じてスクリプトの変数を変更する必要があります。そのため、スクリプトで変数をハードコーディングする代わりに、パラメーターをカスタムDockerイメージの環境変数として設定することで、スクリプトにパラメーターを渡すこともできます。スクリプトを変更する代わりに、values.yamlの値を変更します。

values.yaml

key1:
  someKey1: value1
key2:
  someKey2: value1

post-install.yaml

apiVersion: batch/v1
kind: Job
metadata:
  name: post-install-job
  labels:
    provider: stackoverflow
    microservice: {{ template "name" . }}
    release: "{{ .Release.Name }}"
    chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
  annotations:
    "helm.sh/hook": pre-install,pre-upgrade,pre-rollback
    "helm.sh/hook-delete-policy": before-hook-creation
    "helm.sh/hook-weight": "3"
spec:
  template:
    metadata:
      name: "{{.Release.Name}}"
      labels:
        provider: stackoverflow
        microservice: {{ template "name" . }}
        release: "{{ .Release.Name }}"
        app: {{ template "fullname" . }}
    spec:
      restartPolicy: Never
      containers:
        - name: post-install-job
          image: "custom-docker-image:v1"
          command: ["/bin/sh", "-c", {{ .Files.Get "scripts/runjob.sh" | quote }} ]
          env:
          #setting KEY1 as environment variable in the container,value of KEY1 in container is value1(read from values.yaml)
          - name: KEY1
            value: {{ .Values.key1.someKey1 }}
          - name: KEY2
            value: {{ .Values.key2.someKey2 }}

runjob.sh

# you can access the variable from env variable
echo $KEY1
echo $KEY2
# some stuff
1
Manikanta P