KubernetesではSecretで保持した値をPodで動作しているコンテナからファイ ルとして読み取らせることができる。以下では設定を行う。

Secretを登録する

マウントするSecretを登録するためのマニフェストファイルを作成する。値と して設定する内容はBase64エンコードして登録する。

apiVersion: v1
kind: Secret
metadata:
  name: testing-secret
  namespace: default
type: Opaque
data:
  credentials.json: |
    eyJmb28iOiAxfQ==
secret.yml

マニフェストファイルを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
deploy.yml

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}/ #
/ #