クラスターの準備

ArcGIS Enterprise on Kubernetes をデプロイする前に、クラスターを準備するための下記のガイダンスをご参照ください。

名前空間

ArcGIS Enterprise on Kubernetes は、独自の専用名前空間が必要です。 名前空間は、デプロイメントスクリプトの実行前に作成しておく必要があります。 1 つのクラスターで複数の ArcGIS Enterprise on Kubernetes のデプロイメントを実行するには、デプロイメントごとに一意の名前空間が必要です。

リソース クォータ

ArcGIS Enterprise on Kubernetes のポッドには、CPU とメモリへの要求と制限が定義されています。 名前空間に ResourceQuota オブジェクトがある場合は、クォータはすべてのポッドの要求と制限の合計より高い必要があります。 これらの値は、下で説明するように、選択したアーキテクチャ プロファイルによって異なります。

注意:

11.1 へのアップグレードを実行している場合は、まず名前空間のリソース クォータ値を 11.1 の要件に更新する必要があります。

次に示す推奨値は、各アーキテクチャ プロファイルの最小要件です。 自分の組織のスケーラビリティ要件に対応するには、これらの値の増加が必要になる場合があることを考慮してください。

高い可用性プロファイル:

spec: 
    hard: 
      limits.cpu: "230" 
      limits.memory: 394Gi 
      requests.cpu: "36" 
      requests.memory: 188Gi

標準の可用性プロファイル:

spec: 
    hard: 
      limits.cpu: "198" 
      limits.memory: 326Gi 
      requests.cpu: "32" 
      requests.memory: 130Gi

開発プロファイル:

spec: 
    hard: 
      limits.cpu: "144" 
      limits.memory: 226Gi 
      requests.cpu: "20" 
      requests.memory: 86Gi

名前空間のネットワーク要件

KubernetesNetworkPolicies を使用する場合、中断されないポッド間通信とポッドからサービスへの通信が ArcGIS Enterprise の名前空間で許可されていることを確認します。

さらに、名前空間内のポッドが Kubernetes API サーバーにアクセスできることを確認します。 API サーバーには、デフォルトの名前空間内にある Kubernetes という名前のサービスを通じてアクセス可能です。 ArcGIS Enterprise ポッドでは完全修飾ドメイン名 (FQDN) kubernetes.default.svc.cluster.local を使用して API サーバーのクエリを実行します。

注意:

クラスターのデフォルト ドメインは cluter.local です。

ポッド セキュリティ ポリシー

注意:

PodSecurityPolicyKubernetes v1.25 で削除されました。

ArcGIS Enterprise on Kubernetes は Elasticsearch をデプロイして ArcGIS Enterprise 組織のさまざまな機能をサポートします。 デフォルトでは、Elasticsearch は mmapfs ディレクトリを使用して必要なインデックスを格納します。 オペレーティング システムのデフォルトのマップ数の制限は、デプロイメントには不十分です。 Elasticsearch は、vm.max_map_count のデフォルト値として 262144 を推奨します。 デフォルト値を変更するには、各ノードで上位 (ルート) 権限が必要です。

Kubernetes クラスターにポッド セキュリティ ポリシーが含まれており、コンテナーを権限付きまたは権限なしとして実行できるかどうかに応じて、次のアクションが必要です。

  • Kubernetes クラスターにポッド セキュリティ ポリシーが含まれていないが、コンテナーを権限付きとして実行できる場合は、アクションは必要ありません。
  • 権限付きで実行 - Kubernetes クラスターにポッド セキュリティが定義されており、コンテナーを権限付きとして実行できる場合は、Elasticsearch サービス アカウントがコンテナーを権限付きとして実行できるようにする必要があります。 他のサービス アカウントは、コンテナーを権限付きとして実行する必要はありません。 ArcGIS Enterprise on Kubernetes は Elasticsearch を実行しているノードで権限付きの init コンテナーを実行できます。これにより、vm.max_map_count 値が変更されます。 ArcGIS Enterprise on Kubernetes デプロイメントスクリプトが名前空間の下にサービス アカウントを作成し、ポッド内のプロセスに対して API Server 認証を使用します。 Elasticsearch のポッドでは独自のサービス アカウントを使用しますが、これは他のワークロードとは共有されません。 デフォルトの Elasticsearch サービス アカウントは arcgis-elastic-serviceaccount です。 RBAC ロールと RoleBindings を使用し、サービス アカウントにポッド セキュリティ ポリシーへのアクセス権を付与できます。 OpenShift の場合は、ユーザー セクションに以下を追加することで、このサービス アカウントに、権限付きのセキュリティ コンテキスト制約へのアクセスを許可することができます。
    “-system:serviceaccount: <Namespace>:arcgis-elastic-serviceaccount"
    
  • 権限なしで実行 - Kubernetes クラスターにポッド セキュリティが定義されており、ElasticSearch サービス アカウントでコンテナーを権限付きで実行することを許可できない場合、ルートで次のコマンドを実行し、各ノードを手動で準備する必要があります。
    sysctl -w vm.max_map_count=262144
    
  • PodSecurityPolicy リソースを作成した場合、ArcGIS Enterprise 名前空間で次のサービス アカウントを認証する必要があります。
    • arcgis-admin-serviceaccount
    • arcgis-elastic-serviceaccount
    • arcgis-ingress-serviceaccount
    • arcgis-prometheus-serviceaccount
    • arcgis-queue-serviceaccount
    • default

    ArcGIS Enterprise on Kubernetes コンテナーは、ルート権限なしで実行できます。 ただし、PodSecurityPolicyfsGroup および supplementalGroups の制御面には、以下の例に示すように、RunAsAny か、値 117932853 を含む範囲が必要です。

    supplementalGroups:
        rule: 'RunAsAny'
    fsGroup:
        rule: 'RunAsAny'
    
    supplementalGroups:
      rule: 'MustRunAs'
      ranges:
        # Forbid adding the root group.
        - min: 117932853
          max: 117932853
    
    fsGroup:
      rule: 'MustRunAs'
      ranges:
        # Forbid adding the root group.
        - min: 117932853
          max: 117932853
    

注意:

クラスター内のポッドは、FSGroup および SupplementalGroup ID が 117932853 での実行を許可されている必要があります。

ポッド セキュリティ標準

ポッド セキュリティ標準は、ポッドがクラスター内でスケジュールされる前にそれらのポッドに対して一連のセキュリティ規則を管理者が適用できるようにする Kubernetes の機能です。 デフォルトでは、権限付き、ベースライン、制限付きの 3 つのレベルを使用できます。 これらの標準の警告および適用は名前空間単位で制御されます。

ベースラインまたは制限付きの適用レベルが設定された場合、これらのレベルのセキュリティ要件を満たさないポッドの実行は許可されません。 各レベルの詳細については、下記をご参照ください。

  • 権限付き - 権限付きは、幅広い権限への無制限アクセスを許可する無制限のポッド セキュリティ標準です。 このレベルでは、構成を変更せずに ArcGIS Enterprise を実行できます。 このレベルでは、クラスター内での既知の権限エスカレーションが可能になるため、このレベルでの実行は推奨されていません。
  • ベースライン - ベースラインは、より制限されたポッド セキュリティ標準であり、ポッドからホスト ファイルシステムへのアクセスを禁止し、他のボリュームおよびケーパビリティのタイプを制限します。 ベースライン適用レベルでは、実行中のアプリケーションのコンテキスト外にある基本のワーカー ノードを変更し、デプロイメントの前にデプロイメント プロパティファイル内の ALLOW_PRIVILEGED_CONTAINERS プロパティを false に設定することで ArcGIS Enterprise を実行できます。

    ワーカー ノード グループの弾力性を一致させるために、管理者はスクリプト化されたプロセスを使用して、新規にプロビジョニングされたノードごとに起動テンプレートを直接変更して vm.max_map_count 設定を 262144 まで上げる必要があります。

  • 制限付き - 制限付きポッド セキュリティ標準では、ポッドのセキュリティに対して最も厳格な制限が提示され、大部分の securityContext が明示的に設定される必要があります。 このリリースでは、ArcGIS Enterprise を制限付きレベルで実行することはできません。

詳細については、「Pod のセキュリティ アドミッション」および「Pod セキュリティの標準」をご参照ください。

メトリクス サーバー

ArcGIS Enterprise on Kubernetes水平ポッド自動スケーリングを利用するには、メトリクス サーバーが、実行中のノードごとに kubelet プロセスからポッドのリソース消費メトリクスをスクレイピングする必要があります。 詳細については、「Kubernetes メトリクス サーバー」をご参照ください。