✅ Secretとは?
シークレット (Secret) は、コンフィグマップ (ConfigMap) と同様に環境変数を分離して管理するためのオブジェクトである。大きな違いは、シークレットがパスワードやトークンのようにセキュリティ上重要な値(機密情報)を管理するために特化している点である。
✅ Secretを活用して「機密情報」を分離する
既存のManifestファイルの確認
spring-config.yaml
apiVersion: v1
kind: ConfigMap
# ConfigMap の基本情報
metadata:
name: spring-config
# Key-Value 形式で設定値を保存
data:
my-account: suhwan
my-password: password123 # セキュリティ上重要な値
上記のマニフェストファイルにおいて、my-password の値がセキュリティ上重要な情報であると仮定する。この場合、my-password はコンフィグマップではなく、シークレット (Secret) で管理すべきである。
既存ファイルの修正および新規ファイルの作成
修正 (spring-config.yaml)
apiVersion: v1
kind: ConfigMap
metadata:
name: spring-config
data:
my-account: suhwan
# my-password はここから削除する
新規作成 (spring-secret.yaml)
apiVersion: v1
kind: Secret
# Secret の基本情報
metadata:
name: spring-secret # Secret の名前
# Key-Value 形式で値を保存
stringData:
my-password: my-secret-password
参考:シークレットが正しく適用されたか確認するため、my-password の値を変更している。
修正 (spring-deployment.yaml)
apiVersion: apps/v1
kind: Deployment
metadata:
name: spring-deployment
spec:
replicas: 5
selector:
matchLabels:
app: backend-app
template:
metadata:
labels:
app: backend-app
spec:
containers:
- name: spring-container
image: spring-server
imagePullPolicy: IfNotPresent
ports:
- containerPort: 8080
env:
- name: MY_ACCOUNT
valueFrom:
configMapKeyRef:
name: spring-config
key: my-account
- name: MY_PASSWORD
valueFrom:
secretKeyRef: # ConfigMap ではなく Secret を参照
name: spring-secret # Secret の名前
key: my-password # Secret 内の Key 値
Manifestファイルの反映
$ kubectl apply -f spring-secret.yaml
$ kubectl apply -f spring-config.yaml
$ kubectl apply -f spring-deployment.yaml
# Deployment の再起動
$ kubectl rollout restart deployment spring-deployment
正常に反映されたか確認
問題なく反映されていることが確認できる

'k8s > archive_1' 카테고리의 다른 글
| 14.Deployment - MySQL(Volume未設定) (0) | 2026.03.18 |
|---|---|
| 13.Volumeとは? (0) | 2026.03.18 |
| 11.ConfigMap (0) | 2026.03.18 |
| 10.環境変数登録 (0) | 2026.03.18 |
| 9.Service - Spring Bootと通信 (0) | 2026.03.17 |