アプリケーション ロード バランサーの Google Kubernetes Engine Ingress の使用
クラスターレベルの Ingress コントローラーを使用して、トラフィックを GKE (Google Kubernetes Engine) 上の ArcGIS Enterprise デプロイメントにルーティングできます。 詳細については、「クラスターレベルの Ingress コントローラー」をご参照ください。
このワークフローによって作成された従来のアプリケーション ロード バランサーは、バックエンド サービスのタイムアウト値が切れると、アクティブおよびアイドル状態の WebSocket 接続の両方を切断します。 これにより、ワークフロー管理サービスやノートブック サービスなど、WebSocket 接続を必要とする機能を使用しているクライアントからの接続が中断されることがあります。 切断された WebSocket 接続は再確立できますが、クライアント アプリケーションから返されるタイムアウト エラーによってユーザーのワークフローが中断されることがあります。 詳細については、Google Cloud Platform のドキュメントをご参照ください。
クラスターレベルの Ingress コントローラーを作成する前に、このオプションの利点が、組織にとって WebSocket 接続の中断による潜在的な影響を上回るかどうかを評価してください。 WebSocket 接続を開いたままにすることが重要な場合は、クラスターレベルの Ingress コントローラーを使用する代わりに、ArcGIS Enterprise on Kubernetes のデプロイメント スクリプトの実行時に LoadBalancer サービスを作成してください。
注意:
このワークフローは、ArcGIS Enterprise 組織を作成する前に実行してください。 ロード バランサーをデプロイおよび構成した後は、ブラウザーで ArcGIS Enterprise Manager にアクセスできます。
前提条件
一般的な前提条件を確認し、次の GKE 固有の前提条件が満たされていることを確認してください。
GKE でクラスターを作成しておく必要があります。
クラスターで HTTP 負荷分散アドオンが有効化されている必要があります。
Kubectl はクライアント コンピューターにインストールする必要があります。 作成されたクラスターに関連付けられている Kubernetes API Server に接続してコマンドを発行できることを確認してください。
Google Cloud Platform CLI はクライアント コンピューターにインストールする必要があります。 GKE クラスターが存在するプロジェクトに対して認証できることを確認してください。
Google Cloud プロジェクト内に自己管理証明書を作成しておく必要があります。 証明書をプロジェクト内に作成したら、その名前を記録しておきます。 この証明書を Kubernetes シークレット内で指定して、後で使用することもできます。これはデプロイメント名前空間内に作成する必要があります。
クラスター内 Ingress コントローラー サービスへのアノテーションの追加
最初に Google Kubernetes Engine 上に ArcGIS Enterprise をデプロイした後、クラスター内 Ingress コントローラー サービスにアノテーションを追加します。
次のコマンドを実行して、配置されたサービスにアノテーションを追加し、TLS 通信が使用されるようにします。
kubectl annotate svc arcgis-ingress-nginx -n <namespace> cloud.google.com/app-protocols='{"https":"HTTPS"}'クラスター内 Ingress コントローラー サービスにその他のアノテーションを追加して、組織のヘルス チェックを構成します。
このステップでは BackendConfig CRD を使用できます。
次の YAML データをクライアント ワークステーション上のテキスト エディターにコピーして保存します。
この例では、ファイルは
backendconfig.yamlとして保存されます。apiVersion: cloud.google.com/v1 kind: BackendConfig metadata: name: my-backendconfig namespace: <deploymentNamespace> spec: timeoutSec: 600 healthCheck: type: HTTPS requestPath: /<context>/admin port: 443注意:
組織のニーズに合わせて、その他のヘルス チェックを BackendConfig オブジェクト YAML に追加できます。 BackendConfig 仕様に追加できるその他のヘルス チェック パラメーターを理解するには、Google Cloud のドキュメントをご参照ください。 デプロイメント時に指定したコンテキスト パスと一致するように、
requestPathフィールド内にあるcontextの値を更新する必要があります。次のコマンドを使用して、BackendConfig オブジェクトを作成します。
kubectl apply -f backendconfig.yaml次のアノテーションを使用してクラスター内 Ingress コントローラー サービスにアノテーションを追加します。
kubectl annotate svc arcgis-ingress-nginx -n <namespace> cloud.google.com/backend-config='{"default": "my-backendconfig"}'これで、GKE Ingress コントローラーによりデプロイされるロード バランサーが以前に作成したヘルス チェックを使用するようになります。
Ingress オブジェクトの作成
アノテーションがクラスター内 Ingress オブジェクト サービスに追加されたので、次の手順を使用して Ingress オブジェクトを作成します:
layer-7-templatesフォルダーに含まれるテンプレートを開くか、次の例をクライアント コンピューター上のファイルにコピーします:apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: arcgis-enterprise-ingress namespace: <deploymentNamespace> annotations: kubernetes.io/ingress.class: "gce" kubernetes.io/ingress.allow-http: "false" ingress.gcp.kubernetes.io/pre-shared-cert: "<certificateName>" labels: id: custom-ingress-resource spec: defaultBackend: service: name: arcgis-ingress-nginx port: number: 443 rules: - host: <deploymentFQDN> http: paths: - path: /<context> pathType: Prefix backend: service: name: arcgis-ingress-nginx port: number: 443次の値を置き換えます。
certificateName- 新しくアップロードされた証明書の名前を指定します。deploymentFQDN- デプロイメント時に指定した完全修飾ドメイン名を指定します。namespace- ArcGIS Enterprise on Kubernetes をデプロイした名前空間を指定します。context- デプロイメント時に指定したコンテキストを指定します。
ファイルをクライアント ワークステーションに保存します。
たとえば、「
ingress.yaml」と入力します。次のいずれかを実行して、Ingress オブジェクトを作成します。
次のコマンドを使用して、Ingress YAML データをクラスターに適用します。
kubectl apply -f ingress.yamlサイレントにデプロイメント スクリプトを実行する際は、
CLUSTER_INGRESS_CONTROLLER_YAML_FILENAMEを Ingress YAML ファイルの場所に設定します。
このワークフローを完了したら、arcgis-enterprise-ingress という Ingress オブジェクトが作成されます。 この Ingress オブジェクトを作成すると、GKE Ingress コントローラーは、Google Cloud プロジェクト内のアプリケーション ロード バランサーをプロビジョニングします。 また、バックエンドのクラスター内 NGINX Ingress コントローラー ポッドの IP アドレスを含む、関連するネットワーク エンドポイント グループも作成されます。 ロード バランサーの作成後に、ArcGIS Enterprise デプロイメントにアクセスできるようになります。 その後、最初のデプロイメント時に指定した完全修飾ドメイン名からプロビジョニング済みのロード バランサーにクライアントを誘導する A レコードを作成できます。
注意:
新しく作成された Ingress を使用して正しい接続を作成するには、arcgis-ingress-controller デプロイメントを更新する必要がある場合があります。 Ingress を作成した後で ArcGIS Enterprise にアクセスしたときにエラーが表示された場合は、次の操作を実行してみてください:
kubectl rollout restart deployment/arcgis-ingress-controller -n <deploymentNamespace>