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: /secretsapplyする
$ 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}/ #
/ #