🌐 そもそも何のため?
| 項目 | Secret | ConfigMap |
|---|---|---|
| 役割 | **機密情報(パスワード、APIキー、トークンなど)**を安全に管理する | **設定値や環境変数(環境ごとに変わる定数、オプション)**を管理する |
| 例 | – Freee APIのClient ID/Secret – データベース接続パスワード – OAuthトークン | – APIエンドポイントURL – ログレベル(DEBUG/INFO) – バッチサイズなどの定数 |
🌐 どうやって作る?
🔐 Secret の作成(CLI例)
kubectl create secret generic freee-credentials -n dev \
--from-literal=client_id=dev-client-id \
--from-literal=client_secret=dev-client-secret \
--from-literal=access_token=dev-access-token
🗂 ConfigMap の作成(CLI例)
kubectl create configmap odoo-settings -n dev \
--from-literal=FREEE_API_URL=https://api.sandbox.freee.co.jp \
--from-literal=LOG_LEVEL=DEBUG
🌐 どうやって使う?
Podへの渡し方(環境変数として渡す例)
env:
- name: FREEE_CLIENT_ID
valueFrom:
secretKeyRef:
name: freee-credentials
key: client_id
- name: FREEE_API_URL
valueFrom:
configMapKeyRef:
name: odoo-settings
key: FREEE_API_URL
🌐 Odoo開発での具体的な使い方例
| 項目 | Secretで管理 | ConfigMapで管理 |
|---|---|---|
| Freee APIのClient ID/Secret | ✅ | ❌ |
| Freee APIのアクセストークン | ✅ | ❌ |
| Freee APIのエンドポイントURL(sandbox or 本番) | ❌ | ✅ |
| バッチ処理のレコード件数上限 | ❌ | ✅ |
| ログレベル(DEBUG/INFO) | ❌ | ✅ |
| データベース接続パスワード | ✅ | ❌ |
| データベースのホスト名 | ❌ | ✅ (必要なら) |
🌐 環境ごとの管理方針(Namespace活用)
| 環境 | Namespace | Secret | ConfigMap |
|---|---|---|---|
| 開発環境 | dev | Freee開発用のID/Secret | sandbox用のAPI URL, LOG_LEVEL=DEBUG |
| 本番環境 | prod | Freee本番用のID/Secret | 本番API URL, LOG_LEVEL=INFO |
🌐 最後に(運用のポイント)
✅ Secretは絶対にコードに書かない(Secretに保存してPodに渡す)
✅ ConfigMapは設定値の変更を柔軟にするために使う(値が増えたら便利さが際立つ)
✅ Namespaceで環境ごとにSecret/ConfigMapを完全分離し、事故を防ぐ
✅ 環境変数で受け渡し → アプリ内で os.environ.get() で参照
✅ APIのURLすらConfigMapで管理すると、sandboxと本番の切り替えが簡単になる
コメントを残す