記事を読んでいただきありがとうございます。
モブエンジニア(@mob-engineer)です。
Openshiftで環境構築を行うなかでDeploymentへの環境変数設定(DBへの接続情報など)を行います。そのなかで環境設定方法として3つやり方があります。
- Deploymentへ環境変数をハードコードする
 - ConfigMap経由で環境変数を設定する
 - Secret経由で環境変数を設定する
 
Deploymentへ環境変数をハードコードは運用管理上厳しいので検討から除外されますが、ConfigMapで設定するかSecret経由で設定するかは悩みどころだと思います。
そのうえで、公式ドキュメントではどのように使い分けが必要なのか整理したいと思います。
公式ドキュメントから比較
ConfigMaptについて公式ドキュメントでは以下のとおりまとめられています。
一方、Secretについて公式ドキュメントでは次のとおりまとめられています。
大きな違いとして環境変数を暗号化するか否かですね。
使い分けについて
Kubernetesの公式ドキュメントに使い分けのベストプラクティスについて整理されていました。
すごくざっくりといえば
- 共通で利用する+暗号化の要件がない:ConfigMapを利用
 - 特定のコンテナで利用 or 暗号化要件がある:Secretを利用
 
となります。
そのうえで、メモリ使用量・通信量の違いなどはあると思いますので引き続き検証をっすめていきます。

