É 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

Jobs

Referência:

1 - https://kubernetes.io/docs/tasks/job/automated-tasks-with-cron-jobs/

2 - https://github.com/kubernetes/kubernetes/issues/71356

3 - https://kubernetes.io/docs/tasks/configure-pod-container/configure-pod-configmap/#add-configmap-data-to-a-volume