0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

PodからSecret参照する方法を理解する

Posted at

目的

  • PodからSecretを参照する方法を理解する

手段

killercodaで手を動かす

環境

killercoda

PodからSecretを参照するとは

PodからSecret(パスワードやAPIキーなどの機密情報)を参照するには、主に環境変数として読み込む方法と、**ファイル(ボリューム)**としてマウントする方法の2つがあります。
どちらの方法を使う場合でも、まずは参照したいSecretリソースをKubernetesクラスター内に作成しておく必要があります。

つまり、先に Secret を作成して、作成した Secret を Pod から参照する形ですね。

設定例は以下の通りです

  • Pod 内の環境変数として Secret を設定する
  • Pod 内のファイル(volume)としてマウントする

それぞれサンプル設定を確認します。

  • Pod 内の環境変数として Secret を設定する
  • Pod 内のファイル(volume)としてマウントする

まずは Secret を作成します。

controlplane:~$ k create secret generic holy --from-literal=creditcard=1111222233334444
secret/holy created
controlplane:~$ k get secrets holy -o yaml
apiVersion: v1
data:
  creditcard: MTExMTIyMjIzMzMzNDQ0NA==
kind: Secret
metadata:
  creationTimestamp: "2025-10-16T09:42:39Z"
  name: holy
  namespace: default
  resourceVersion: "2990"
  uid: dc2167a9-5fde-4427-9f13-ae6c6a6c93af
type: Opaque
# secret 作成

controlplane:~$ echo MTExMTIyMjIzMzMzNDQ0NA== |base64 --decode
1111222233334444 

続いて yaml ファイルから secret を作成します。

controlplane:~$ k apply -f /opt/ks/secret-diver.yaml 
secret/diver created

作成する pod に対して環境変数とvolumeで secret をマウントします。

controlplane:~$ cat pod1.yaml 
apiVersion: v1
kind: Pod
metadata:
  creationTimestamp: null
  labels:
    run: pod1
  name: pod1
spec:
  volumes:
    - name: diver
      secret:
        secretName: diver
  # 作成済み secret をマウント
  containers:
  - image: nginx
    name: pod1
    resources: {}
    volumeMounts:
      - name: diver
        readOnly: true
        mountPath: "/etc/diver"
    # 作成済み secret をマウント
    env:
      - name: HOLY
        valueFrom:
          secretKeyRef:
            name: holy
            key: creditcard
    # 作成済み secret を環境変数として設定
  dnsPolicy: ClusterFirst
  restartPolicy: Always
status: {}

controlplane:~$ k apply -f pod1.yaml 
pod/pod1 created

マウントしたボリュームを確認します。

controlplane:~$ k exec pod1 -- cat /etc/diver/hosts
127.0.0.1       localhost
127.0.1.1       host01

# The following lines are desirable for IPv6 capable hosts
::1     localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

controlplane:~$ k describe pod pod1
--- snip ---
    Environment:
      HOLY:  <set to the key 'creditcard' in secret 'holy'>  Optional: false
    Mounts:
      /etc/diver from diver (ro)
--- snip ---

続いて環境変数を確認します。

controlplane:~$ k exec pod1 -- env |grep HOLY
HOLY=1111222233334444
# 環境変数として creditcard(key)が HOLY として渡されています

あとがき

Kubernetes は奥が深い...

ソース

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?