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?
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