Microsoft Azure Kubernetes Serviceでのアプリケーション ゲートウェイ Ingress コントローラーの使用

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

注意:

このワークフローは、ArcGIS Enterprise 組織を構成する前に実行する必要があります。 ロード バランサーが配置されて構成されたら、ArcGIS Enterprise Manager にはブラウザーからアクセスできます。

前提条件

一般的な前提条件を確認し、次の AKS 固有の前提条件が満たされていることを確認してください。

  • AKS に Kubernetes クラスターを準備している必要があります。
  • アプリケーション ゲートウェイ Ingress コントローラーをクラスターにデプロイする必要があります。 Azure Application Gateway をサブスクリプション内に配置している必要もあります。 アプリケーション ゲートウェイで使用するためにアプリケーション ゲートウェイ Ingress コントローラーを適切に配置し構成する方法に関する詳細については、Azure のドキュメントをご参照ください。
  • Azure CLI はクライアント コンピューターにインストールする必要があります。 AKS クラスターが存在するサブスクリプションに対して CLI から認証できることを確認してください。
  • Kubectl はクライアント コンピューターにインストールする必要があります。 作成したクラスターに関連付けられている Kubernetes API Server に接続してコマンドを発行できることを確認してください。
  • Ingress オブジェクトの証明書情報を格納するための TLS シークレットを作成しておく必要があります。 このシークレット内に格納された TLS 証明書は、ArcGIS Enterprise on Kubernetes デプロイメント名前空間用に選択した完全修飾ドメイン名に対して有効である必要があります。
  • 選択肢の DNS プロバイダーに DNS レコードを作成しておく必要があります。これは、ArcGIS Enterprise on Kubernetes デプロイメント用に選択した完全修飾ドメイン名にアプリケーション ゲートウェイのフロントエンド IP アドレスをマッピングします。

クラスターレベルの Ingress コントローラーの実装

クラスターレベルの Ingress コントローラーを実装して、トラフィックを Microsoft AKS 上の ArcGIS Enterprise デプロイメントにルーティングするには、次の手順を実行します。

  1. 次の YAML データをクライアント コンピューター上のファイルにコピーします。
    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: arcgis-enterprise-ingress
      namespace: <deploymentNamespace>
      annotations:
        kubernetes.io/ingress.class: azure/application-gateway
        appgw.ingress.kubernetes.io/ssl-redirect: "true"
        appgw.ingress.kubernetes.io/backend-protocol: "https"
        appgw.ingress.kubernetes.io/backend-hostname: <deploymentFQDN>
        appgw.ingress.kubernetes.io/health-probe-hostname: <deploymentFQDN>
        appgw.ingress.kubernetes.io/health-probe-port: "443"
        appgw.ingress.kubernetes.io/health-probe-status-codes: "200-399"
        appgw.ingress.kubernetes.io/health-probe-path: "/<context>/admin
    spec:
      tls:
        - hosts:
            - <deploymentFQDN>
          secretName: <tlsSecretName>
      rules:
        - host: <deploymentFQDN>
          http:
            paths:
              - backend:
                 service:
                   name: arcgis-ingress-nginx
                   port:
                     number: 443
                path: /<context>
                pathType: Prefix
    
  2. 次の値を置き換えます。
    • deploymentFQDN - 最初のデプロイメント時に指定した完全修飾ドメイン名を指定します。
    • tlsSecretName - デプロイメント名前空間内に作成された TLS シークレットの名前を指定します。
    • namespace - ArcGIS Enterprise on Kubernetes を配置した名前空間を指定します。
    • context - デプロイメント時に指定したコンテキストを指定します。
      注意:

      この値は、YAML データ内の 2 か所に表示され、両方のインスタンスで置き換えられる必要があります。 appgw.ingress.kubernetes.io/health-probe-path アノテーション内の値を更新していることを確認してください。

  3. この YAML データをクライアント コンピューター上のファイルに保存します。

    例: ingress.yaml

  4. 次のコマンドを使用して、YAML データをクラスターに適用します。
    kubectl apply -f ingress.yaml
    

このワークフローを完了したら、arcgis-enterprise-ingress という Ingress オブジェクトが作成されます。 アプリケーション ゲートウェイ Ingress コントローラーはこの Ingress オブジェクト YAML に定義されている情報を使用して、トラフィックを ArcGIS Enterprise デプロイメントにルーティングするよう関連するアプリケーション ゲートウェイを構成します。 この Ingress が正常に適用されると、ArcGIS Enterprise デプロイメントはアプリケーション ゲートウェイを通じてアクセスできるようになります。

注意:

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

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