Kubernetes Config & Storageリソース まとめ

Config & Storageリソース

MLOpsを仕事で扱っていきたいので、その周辺の技術を学んでいくシリーズです。

また下記の書籍を参考にしています。
Kubernetes完全ガイド (impress top gear)
もちろんチュートリアルも見ております。
Learn Kubernetes Basics

 

Config & Storageリソース

Podに対して設定をもたせるリソースです。

種類は以下3つです。
①Secret
②ConfigMap
③PersistentVolumeClaim

 

環境変数の扱い

まず、Kubernetesでの環境変数の取扱いについて見ていきます。
定義するためには、env, envFromを使用します。

静的設定

これが一般的な環境変数の使い方だと思います。

下記のようにenvの下に定義します。

Podの情報

fieldRefを使用します。
確認コマンドとしては、kubectl get pods -o yamlが使用できます。

コンテナの情報

resourceFieldRefを使用します。

環境変数利用時の注意点

Podマニフェスト内に限り、$(ENV)という形で呼び出す必要があります。
${ENV}で呼び出した場合、${ENV}がそのまま出力されます。

 

Secret

ユーザー名やパスワードを管理する際に使用されます。

種類

①Generic
②TLS
 Ingressリソースから利用するのが一般的
③Docker レジストリ
④Service Account

従来のユーザー名やパスワードをどのように管理するのか

①Dcokerイメージに埋め込む
 Dcokerhubにpushする際、機密情報をアップロードすることになるので、セキュリティ上好ましくないです。

②KubernetesのPodやDeploymentに書き込む
 マニフェストの管理が困難になります。
 機密情報が書かれているので、Gitにあげることもできないです。そのため管理しにくくなります。

Generic

コマンドにgenericオプションを追加します。
直接値を渡して作成(–from-literal)する例を取り上げます。

下記のようなコマンドで使用することができようになります。

kubesec

上記で挙げた、「KubernetesのPodやDeploymentに書き込む」方法がkubesecによって実現できます。
Secretの暗号化を行ってくれるオープンソフトウェアです。
Secretのマニフェストを暗号化するため、Gitリポジトリにも上げることができます。

使用方法としては、Google Cloud KMSなどを使用します。

【Google Cloud KMS】
Google Cloud KMSは、クラウドで利用できる暗号鍵管理サービスです。

 

ConfigMap

設定情報などの Key-Value で保持できるデータを保存してくリソースです。

ConfigMap作成の方法は以下3つの通り
①ファイルから値を参照して作成(–from-file)
②直接値を渡して作成(–from-literal)
③マニフェストから作成(–f)
 yamlファイルで定義したものです。

ConfigMapをコンテナから利用する場合2つの方法がある。
①環境変数
②Volumeとしてマウント

①、②それぞれ特定のkeyのみに行うのか、全体に行うのかの2通りが存在します。

 

PersistentVolumeClaim

永続化領域を利用するためのリソースです。

疲れた….