Amazon Elastic Kubernetes Service でのアプリケーション負荷分散の使用

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

注意:

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

前提条件

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

  • AWS Load Balancer Controller の配置を含め、Amazon EKS に Kubernetes クラスターを準備している必要があります。
  • AWS CLI はクライアント コンピューターにインストールする必要があります。 EKS クラスターが存在するアカウントに対して CLI から認証できることを確認してください。
  • Kubectl はクライアント コンピューターにインストールする必要があります。 作成したクラスターに関連付けられている Kubernetes API Server に接続してコマンドを発行できることを確認してください。
  • EKS クラスター、VPC、関連リソースは「Amazon EKS でのアプリケーション負荷分散」に記載された要件を満たします。
  • TLS 証明書が必要です。 Amazon Certificate Manager (ACM) を使用してこの証明書を作成またはインポートできます。

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

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

  1. AWS のドキュメントに記載されている方法のいずれかを使用して ACM 証明書に関連付けられている Amazon Resource Name (ARN) を取得します。
  2. 次の YAML データをクライアント コンピューター上のファイルにコピーします。
    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      namespace: <deploymentNamespace>
      name: arcgis-enterprise-ingress
      annotations:
        alb.ingress.kubernetes.io/scheme: internet-facing
        alb.ingress.kubernetes.io/target-type: ip
        alb.ingress.kubernetes.io/backend-protocol: HTTPS
        alb.ingress.kubernetes.io/listen-ports: '[{"HTTPS":443}]'
        alb.ingress.kubernetes.io/healthcheck-port: '443'
        alb.ingress.kubernetes.io/healthcheck-protocol: HTTPS
        alb.ingress.kubernetes.io/healthcheck-path: /<context>/admin
        alb.ingress.kubernetes.io/success-codes: '200-399'
        alb.ingress.kubernetes.io/certificate-arn: <ACMCertificateARN>
    spec:
      ingressClassName: alb
      rules:
      - host: <deploymentFQDN>
        http:
          paths:
          - path: /<context>
            pathType: Prefix
            backend:
              service:
                name: arcgis-ingress-nginx
                port:
                  number: 443
    

    いくつかのアノテーションの詳細については、下記の「アノテーションの説明」セクションをご参照ください。

  3. 次の値を置き換えます。
    • alb.ingress.kubernetes.io/certificate-arn - 手順 1 で取得した Amazon Resource Name を指定します。
    • namespace - ArcGIS Enterprise on Kubernetes をデプロイした名前空間を指定します。
    • deploymentFQDN - 最初のデプロイメント時に指定した完全修飾ドメイン名を指定します。
    • context - デプロイメント時に指定したコンテキストを指定します。
      注意:

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

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

    例: ingress.yaml

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

このワークフローを完了したら、arcgis-enterprise-ingress という Ingress オブジェクトが作成されます。 初めて Ingress コントローラーを使用して EKS クラスターへの外部アクセスを管理する場合は、現在作業している AWS アカウント内でプロビジョニング状態にあるアプリケーション ロード バランサーが表示されます。 AWS Load Balancer Controller は、名前空間に適用された YAML データに従って、このアプリケーション ロード バランサーと補助コンポーネントをプロビジョニングします。 このロード バランサーがアクティブな状態になったら、ArcGIS Enterprise デプロイメントがアクセス可能になり、最初のデプロイメント時に指定した完全修飾ドメイン名からプロビジョニング済みのロード バランサーにクライアントを誘導する CNAME DNS レコードが作成されます。

注意:

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

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

アノテーションの説明

いくつかのアノテーションの詳細については、下記をご参照ください。

  • alb.ingress.kubernetes.io/scheme: internet-facing - これにより、インターネット上でアクセス可能なアプリケーション ロード バランサーが作成されます。 ALB の公開を VPC 内からのみにするには、代わりにアノテーション alb.ingress.kubernetes.io/scheme: internal を使用できます。
  • alb.ingress.kubernetes.io/target-type: ip - このアノテーションにより、トラフィックをバックエンド ポッドの IP アドレスに直接負荷分散できます。