プラクティス集@Kubernetesリソース¶
はじめに¶
本サイトにつきまして、以下をご認識のほど宜しくお願いいたします。
01. Pod¶
安全性¶
▼ 認証/認可の実施¶
RoleやClusterRoleを使用して、ServiceAccountに適切な認可スコープを付与する。
可用性¶
▼ 冗長化¶
ReplicaSetでPodを冗長化し、可用性を担保する。
▼ 水平スケーリング¶
HorizontalPodAutoscalerでPodを水平スケーリングし、可用性を担保する。
水平スケーリングは、Podの負荷が高くなると冗長化してくれ、高負荷でいずれかのPodで障害が起こっても正常なPodがこれを埋め合わせしてくれるため、システム全体として稼働時間を長くできる。
安全性¶
▼ Secretの変数を暗号化する¶
Secretの .data
キーには、base64
方式でエンコードされた値を設定する必要がある。
この base64
方式エンコード値をどのように管理するかには選択肢がある。
方法 | リポジトリ | リポジトリ + キーバリュー型ストア | リポジトリ + クラウドキーバリュー型ストア |
---|---|---|---|
バージョン管理 | 管理できる。 | 管理できる。 | 管理できない。 |
暗号化 | base64 方式エンコード値をリポジトリ内でそのまま管理する。 |
base64 方式エンコード値を暗号化キー (例:AWS KMS、Google Cloud CKM、GnuPG、PGP、など) で暗号化する。 |
base64 方式エンコード値を暗号化キー (例:AWS KMS、Google Cloud CKM、GnuPG、PGP、など) で暗号化する。 |
Secretストア | なし | リポジトリ上でキーバリュー型ストア (例:SOPS、kubesec、Hashicorp Vault) で管理する。 Apply時にbase64方式エンコード値に復号化する。 | クラウドプロバイダー内のキーバリュー型ストア (例:AWS パラメーターストア、Google Cloud SecretManager、など) で管理する。 Apply時に、ストア仲介ツール (例:SecretsStoreCSIDriver、External SecretsOperator) を使用してSecretのデータを取得しつつ、base64 方式エンコード値に復号化する。 |