web-dev-qa-db-fra.com

Déployer un travail Kubernetes via Helm

Je suis nouveau à la barre et j'ai essayé de déployer quelques tableaux de tutoriels. Eu quelques requêtes:

1) J'ai un travail kubernets que je dois déployer. Est-il possible de déployer un travail via un poste de pilotage?

2) De plus, actuellement mon travail kubernetes est déployé à partir de mon image de docker personnalisé et il exécute un script bash pour terminer le travail. Je voulais transmettre quelques paramètres à ce graphique/travail afin que les commandes bash prennent les paramètres d'entrée. C'est la raison pour laquelle j'ai décidé de passer à la barre car cela offrait plus de flexibilité. Est-ce possible?

5
codec

Vous pouvez utiliser la barre. Helm installe toutes les ressources kubernetes telles que job, pods, configmaps, secrets dans le dossier des modèles. Vous pouvez contrôler l'ordre d'installation par des crochets de barre. Helm propose des crochets comme pré-installation, post-installation, pré-suppression en ce qui concerne le déploiement. si deux travaux ou plus sont pré-installés, leurs poids seront comparés pour l'installation.

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

Plusieurs fois, vous devez modifier les variables dans le script selon l'environnement. Ainsi, au lieu de coder en dur la variable dans le script, vous pouvez également passer des paramètres au script en les définissant comme variables d'environnement dans votre image Docker personnalisée. Modifiez les valeurs dans values.yaml au lieu de les modifier dans votre script.

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