KubernetesではSecretで保持した値をPodで動作しているコンテナからファイ ルとして読み取らせることができる。以下では設定を行う。
Secretを登録する
マウントするSecretを登録するためのマニフェストファイルを作成する。値と して設定する内容はBase64エンコードして登録する。
apiVersion: v1 kind: Secret metadata: name: testing-secret namespace: default type: Opaque data: credentials.json: | eyJmb28iOiAxfQ==
マニフェストファイルをapplyする。
$ kubectl apply -f secret.yml
Deploymentを登録する
前述のSecretをマウントするPodを配置するためのDeploymentを定義する。
apiVersion: apps/v1
kind: Deployment
metadata:
name: testing
labels:
app: testing
spec:
replicas: 1
selector:
matchLabels:
app: testing
template:
metadata:
labels:
app: testing
spec:
volumes:
- name: mysecret
secret:
secretName: testing-secret
containers:
- name: testing-main
image: busybox:latest
command:
- tail
- -f
- /dev/null
volumeMounts:
- name: mysecret
mountPath: /secrets
applyする
$ kubectl apply -f deploy.yml
確認する
起動したPod内のコンテナに入ってマウントしたファイルを確認する。
$ kubectl get pods NAME READY STATUS RESTARTS AGE mypod 1/1 Running 0 2d1h testing-7cf74f76fd-ts569 1/1 Running 0 8h $ kubectl exec -it testing-7cf74f76fd-ts569 -- sh / # cat /secrets/ ..2021_06_06_03_33_59.598664468/ ..data/ credentials.json / # cat /secrets/credentials.json {"foo": 1}/ # / #