Config Controller のスケーラビリティ ガイドライン

このページでは、Config Controller インスタンスの構成管理アーキテクチャを計画し、Google Cloud リソースの作成と管理をサービスレベル目標(SLO)内に維持するための推奨事項について説明します。

スケーラビリティのターゲット

Config Controller のスケーラビリティのターゲットは、Config Sync GitOps を使用して Google でテスト済みのリソースのグループです。これらのターゲットは構成管理アーキテクチャを計画する際に役立ちます。

これらのターゲットはハードリミットではありません。1 種類のリソースの量を増やしても Config Controller インスタンスが使用できなくなるわけではありませんが、同じ Config Controller インスタンスにデプロイできる他のリソースの種類の合計量が減る可能性があります。

このページの表は説明を目的としたもので、すべてを網羅しているものではありません。

単一の Namespace

次の例は、クラスタ内に 1 つの Config Connector Namespace を持つ Config Controller インスタンスを示しています。Config Connector は、その Namespace に次の数のリソースを作成して管理できます。

リソースの種類

推奨の上限

SQLInstance

450

SQLDatabase

2,250

SQLUser

2,500

StorageBucket

5,000

ContainerCluster

50

ContainerNodepool

200

IAMServiceAccount

2,500

IAMPartialPolicy

7,500

複数の Namespace

次の例は、クラスタ内に 50 個の Config Connector Namespace を持つ Config Controller インスタンスを示しています。Config Connector は、各 Namespace に次の数のリソースを作成して管理できます。

リソースの種類

推奨の上限

SQLInstance

9

SQLDatabase 45
SQLUser 45
StorageBucket 100
ContainerCluster 1
ContainerNodepool 4
IAMServiceAccount 50
IAMPartialPolicy 150

Config Connector の Namespace

Config Controller は、デフォルトで Config Connector 名前空間モードを使用します。次の表は、単一の Config Connector インスタンスに含めることができる Config Connector の Namespace の数の例を示しています。

--cluster-ipv4-cidr-block

ノードの数

Config Connector の Namespace の数

/18

64

600

/19

32

300

/20(デフォルトおよび推奨)

16

120

/21

8

60

スケーラビリティのターゲットの確認

次のリソースを使用して、スケーラビリティのターゲットに達成したかどうかを判断できます。

Google Cloud APIs の割り当て

Google Cloud APIs の割り当ては Google Cloud コンソールで確認できます。一部の割り当てが上限に近づいたら、Google Cloud プロジェクトによる API 割り当てのシャーディングを検討してください。割り当て指標のモニタリングとアラートの詳細については、割り当て指標のモニタリングとアラートをご覧ください。

Config Connector のメモリ使用量

GKE モニタリング ダッシュボードで Config Connector のメモリ使用量を確認できます。Config Connector のメモリ使用量が上限に近づいた場合は、Namespace によるシャーディングを検討してください。

Config Controller のスケールアップ

スケーラビリティのターゲットに達した場合は、Config Controller インスタンスのさらなるスケールアップを検討する必要があります。このセクションでは、Config Controller インスタンスのスケールアップに使用できるさまざまな方法の概要を示します。

Namespace によるシャーディング

1 つの Config Connector の Namespace でスケーラビリティのターゲットに到達する場合は、Namespace のリソースを管理するように Config Connector を構成できます。

各 Namespace では独自のサービス アカウントとオペレーター ワークロードが使用されるため、Config Connector は大規模なリソースを管理できます。1 つの Config Connector インスタンスを使用して複数の Google Cloud プロジェクトを管理する場合は、1 つの Config Connector の Namespace を使用して各 Google Cloud プロジェクトを管理できます。

Google Cloud プロジェクトによる API 割り当てのシャーディング

Google Cloud APIs の割り当てに達してスケーラビリティのターゲットに到達した場合は、Config Connector が名前空間モードでインストールされているさまざまな Namespace に、異なる Google Cloud プロジェクトが所有する複数の IAM サービス アカウントをバインドできます。その後、リソースを複数のプロジェクトに分割できます。

Config Connector インスタンスによるシャーディング

Config Connector の複数の Namespace でスケーラビリティのターゲットに到達した場合は、複数の Config Controller インスタンスを作成して使用できます。複数の Config Controller インスタンスを使用すると、組織内の異なる開発環境、アプリケーション チーム、GitOps ディレクトリなどでリソース構成の管理をシャーディングできます。

スケーラビリティに関するその他の考慮事項

Google Cloud APIs の割り当て

API 割り当ての上限を超えていることを示すエラーが発生した場合は、1 つのプロジェクトで同じ種類の Config Connector リソースが多すぎる可能性があります。Config Connector の調整方法のため、これらのリソースで同じ API エンドポイントにして非常に多くの API リクエストが生成される可能性があります。

この問題を解決するには、Google Cloud プロジェクトごとに API の割り当てをシャーディングするか、割り当ての上限の引き上げをリクエストします。

GKE の制限事項

Config Controller は GKE の上に構築されているため、GKE で考慮すべき制限がいくつかあります。以降のセクションでは、Config Controller に関する特定の考慮事項について説明します。大規模な GKE クラスタの一般的な制限とベスト プラクティスについては、大規模な GKE クラスタの計画をご覧ください。

Kubernetes サービス アカウントの上限

単一の GKE クラスタで作成された Kubernetes サービス アカウント(KSA)の数が 3,000 を超えると、gke-metadata-server Pod のクラッシュに関する問題が発生する可能性があります。

Config Connector の Namespace を追加すると、Kubernetes サービス アカウントも作成されます。

GKE コントロール プレーンのパフォーマンスの問題

Config Controller インスタンスで Config Connector の Namespace が多すぎる場合、GKE クラスタのコントロール プレーンでパフォーマンスの問題が発生することがあります。Config Connector の Namespace の数は、クラスタごとに 500 未満にする必要があります。

Config Connector の Namespace を追加すると、コントローラ Pod も作成されます。

次のステップ