CronJob で認証付きの WebAPI を叩きたい。Secrets に秘匿情報を入れて、それを環境変数として参照するのが良さそうということでやってみた。
まず、key=value
の形式でファイルを作る。
$ cat > env-secrets.txt
USER=hoge
PASSWORD=fugafuga
kubectl create secret generic <名前> --from-env-file <filename>
で登録する。
$ kubectl create secret generic secrets-sample --from-env-file env-secrets.txt
secret/secrets-sample created
これを secretRef
で参照すると、そのまま環境変数として参照できるようになる
secretstest.yaml
apiVersion: batch/v1beta1
kind: CronJob
metadata:
name: secretstest
spec:
schedule: "*/1 * * * *"
jobTemplate:
spec:
template:
spec:
containers:
- name: busybox
image: busybox
envFrom:
- secretRef:
name: secrets-sample
args:
- /bin/sh
- -c
- echo $USER; echo $PASSWORD
restartPolicy: OnFailure
$ kubectl apply -f secretstest.yaml
$ kubectl get pods # 実行されるまで最大1分待つ
NAME READY STATUS RESTARTS AGE
secretstest-1234567890-ababa 0/1 Completed 0 10s
$ kubectl logs secretstest-1234567890-ababa
hoge
fugafuga
後片付け
$ rm env-secrets.txt
$ kubectl delete cronjob secretstest
$ kubectl delete secrets secrets-sample