コンテンツにスキップ

プラクティス集@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方式エンコード値に復号化する。