É possivel utilizar um Configmap para executar scripts, com isso podemos diminuir o overhead de layers nas imagens.
Para este post vou utilizar o Codeready Containers da Red Hat, o CRC criou um cluster de Openshift 4.3 com a versão v1.16.2 do Kubernetes.
Script Link to heading
O script é bem simples, ele vai checar as informações do tempo em Brasilia.
cat <<'EOF' >> tempo.sh
#!/bin/bash
tempo=$(curl -s wttr.in/Brasilia?format="%l:+%c+%t")
echo $tempo
exit
EOF
O Configmap Link to heading
oc create cm tempo --from-file=tempo.sh
configmap/tempo-cm created
O yaml file do CM ficou assim:
oc get cm tempo-cm -o yaml
apiVersion: v1
data:
tempo.sh: |
#!/bin/bash
tempo=$(curl -s wttr.in/Brasilia?format="%l:+%c+%t")
echo $tempo
exit
kind: ConfigMap
metadata:
creationTimestamp: "2020-03-09T01:44:56Z"
name: tempo-cm
namespace: tempo-cofig-map
resourceVersion: "719737"
selfLink: /api/v1/namespaces/tempo-cofig-map/configmaps/tempo-cm
uid: db715651-10ba-4694-8eca-188a2ca76757
O Job Link to heading
cat <<'EOF' >> tempo.yaml
apiVersion: batch/v1beta1
kind: CronJob
metadata:
name: tempo
spec:
schedule: "*/2 * * * *"
jobTemplate:
spec:
template:
spec:
containers:
- name: tempo
image: fedora
args:
- /bin/bash
- -c
- /script/tempo.sh
volumeMounts:
- name: tempo
mountPath: /script/tempo.sh
subPath: tempo.sh
restartPolicy: OnFailure
volumes:
- name: tempo
configMap:
name: tempo-cm
defaultMode: 0777
EOF
oc create -f tempo.yaml
cronjob.batch/tempo created
Depois de 2 minutos, o job rodou e esse foi o resultado:
oc logs tempo-1583719920-zgw84
Brasilia: 🌦 +30°C
Os jobs no OCP 4 Link to heading
Referência:
1 - https://kubernetes.io/docs/tasks/job/automated-tasks-with-cron-jobs/