アプリケーション ロード バランサーの Google Kubernetes Engine Ingress の使用

クラスターレベルの Ingress コントローラーを使用して、トラフィックを Google Kubernetes Engine (GKE) 上の ArcGIS Enterprise デプロイメントにルーティングします。 詳細については、「クラスターレベルの Ingress コントローラー」をご参照ください。

注意:

このワークフローは、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 コントローラー サービスにアノテーションを追加します。

  1. 次のコマンドを実行して、配置されたサービスにアノテーションを追加し、TLS 通信が使用されるようにします。
    kubectl annotate svc arcgis-ingress-nginx -n <namespace> cloud.google.com/app-protocols='{"https":"HTTPS"}'
    
  2. クラスター内 Ingress コントローラー サービスにその他のアノテーションを追加して、組織のヘルス チェックを構成します。

    これを行うには BackendConfig CRD を使用します。

    1. 次の YAML データをクライアント ワークステーション上のテキスト エディターにコピーして保存します。

      この例では、ファイルは backendconfig.yaml として保存されます。

      apiVersion: cloud.google.com/v1
      kind: BackendConfig
      metadata:
        name: my-backendconfig
        namespace: <deploymentNamespace>
      spec:
        healthCheck:
          type: HTTPS
          requestPath: /<context>/admin
          port: 443
      

      注意:

      組織のニーズに合わせて、その他のヘルス チェックを BackendConfig オブジェクト YAML に追加できます。 BackendConfig 仕様に追加できるその他のヘルス チェック パラメーターを理解するには、Google Cloud のドキュメントをご参照ください。 デプロイメント時に指定したコンテキスト パスと一致するように、requestPath フィールド内にある context の値を更新する必要があります。

    2. 次のコマンドを使用して、BackendConfig オブジェクトを作成します。
      kubectl apply -f backendconfig.yaml
      
    3. 次のアノテーションを使用してクラスター内 Ingress コントローラー サービスにアノテーションを追加します。
      kubectl annotate svc arcgis-ingress-nginx -n <namespace> cloud.google.com/backend-config='{"default": "my-backendconfig"}'
      
      これで、GKE Ingress コントローラーによりデプロイされるロード バランサーが以前に作成したヘルス チェックを使用するようになります。

Ingress オブジェクトの作成

アノテーションがクラスター内 Ingress オブジェクト サービスに追加されたので、次の手順を使用して Ingress オブジェクトを作成します。

  1. 次の YAML データをクライアント コンピューター上のファイルにコピーします。
    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>"
    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
    
  2. 次の値を置き換えます。
    • certificateName - 新しくアップロードされた証明書の名前を指定します。
    • deploymentFQDN - デプロイメント時に指定した完全修飾ドメイン名を指定します。
    • namespace - ArcGIS Enterprise on Kubernetes を配置した名前空間を指定します。
    • context - デプロイメント時に指定したコンテキストを指定します。
  3. この YAML データをクライアント コンピューター上のファイル (例: ingress.yaml というファイル) に保存し、次のコマンドを使用してクラスターに適用します。
    kubectl apply -f ingress.yaml
    

このワークフローを完了したら、arcgis-enterprise-ingress という Ingress オブジェクトが作成されます。 この Ingress オブジェクトを作成すると、GKE Ingress コントローラーは、Google Cloud プロジェクト内のアプリケーション ロード バランサーをプロビジョニングします。 関連するネットワーク エンドポイント グループが作成されます。これには、バックエンドのクラスター内 NGINX Ingress コントローラー ポッドの IP アドレスが含まれます。 このロード バランサーが作成されたら、ArcGIS Enterprise デプロイメントがアクセス可能になり、最初のデプロイメント時に指定した完全修飾ドメイン名からプロビジョニング済みのロード バランサーにクライアントを誘導する A レコードが作成されます。

注意:

新しく作成された Ingress を使用して正しい接続を作成するには、arcgis-ingress-controller デプロイメントを更新する必要がある場合があります。 Ingress を作成した後で ArcGIS Enterprise Manager にアクセスしたときにエラーが表示された場合は、次の操作を実行してみてください。

kubectl rollout restart deployment/arcgis-ingress-controller -n <deploymentNamespace>