Application Load Balancing auf Amazon Elastic Kubernetes Service

Mit einem Ingress-Controller auf Clusterebene lässt sich Datenverkehr zu einer ArcGIS Enterprise-Bereitstellung auf Amazon Elastic Kubernetes Service (EKS) weiterleiten. Weitere Informationen finden Sie unter Ingress-Controller auf Clusterebene.

Hinweis:

Dieser Workflow sollte vor der Konfiguration einer ArcGIS Enterprise-Organisation durchgeführt werden. ArcGIS Enterprise Manager kann über einen Browser aufgerufen werden, nachdem ein Load Balancer bereitgestellt und konfiguriert wurde.

Voraussetzungen

Beachten Sie die allgemeinen Voraussetzungen und stellen Sie sicher, dass die folgenden EKS-spezifischen Voraussetzungen erfüllt werden:

  • Sie müssen einen Kubernetes-Cluster in Amazon AKS vorbereitet haben. Dazu zählt auch die Bereitstellung des AWS Load Balancer Controllers.
  • Die AWS CLI muss auf dem Client-Computer installiert sein. Stellen Sie sicher, dass Sie sich über die CLI bei dem Konto authentifizieren können, in dem sich der EKS-Cluster befindet.
  • Kubectl muss auf dem Client-Computer installiert sein. Stellen Sie sicher, dass Sie eine Verbindung mit dem Kubernetes-API-Server, der mit dem erstellten Cluster verknüpft ist, herstellen und Befehle an diesen ausgeben können.
  • Der EKS-Cluster, die VPC und die verknüpften Ressourcen erfüllen die Anforderungen, die unter Application Load Balancing auf Amazon beschrieben sind.
  • Sie benötigen ein TLS-Zertifikat. Mit Amazon Certificate Manager (ACM) können Sie dieses Zertifikat erstellen oder importieren.

Implementieren eines Ingress-Controllers auf Clusterebene

Führen Sie die folgenden Schritte aus, um einen Ingress-Controller auf Clusterebene zum Weiterleiten des Datenverkehrs an eine ArcGIS Enterprise-Bereitstellung auf Amazon EKS zu implementieren:

  1. Rufen Sie den Amazon-Ressourcennamen (ARN), der mit dem ACM-Zertifikat verknüpft ist, mit einer der in der AWS-Dokumentation beschriebenen Methoden ab.
  2. Kopieren Sie die folgenden YAML-Daten in eine Datei auf dem Client-Computer:
    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
    

    Weitere Informationen zu einigen der Annotationen finden Sie im Abschnitt Annotations-Beschreibungen weiter unten.

  3. Ersetzen Sie die folgenden Werte:
    • alb.ingress.kubernetes.io/certificate-arn: Geben Sie den Amazon-Ressourcennamen an, den Sie in Schritt 1 abgerufen haben.
    • namespace: Geben Sie den Namespace an, in dem Sie ArcGIS Enterprise on Kubernetes bereitgestellt haben.
    • deploymentFQDN: Geben Sie den vollständig qualifizierten Domänennamen an, der bei der ursprünglichen Bereitstellung festgelegt wurde.
    • context: Geben Sie den Kontext an, der bei der Bereitstellung festgelegt wurde.
      Hinweis:

      Dieser Wert wird zweimal in den YAML-Daten angezeigt und beide Vorkommnisse müssen ersetzt werden. Stellen Sie sicher, dass Sie den Wert in der alb.ingress.kubernetes.io/healthcheck-path-Annotation aktualisieren.

  4. Speichern Sie diese YAML-Daten in eine Datei auf dem Client-Computer.

    Beispiel: ingress.yaml.

  5. Wenden Sie die YAML-Daten mit dem folgenden Befehl auf den Cluster an:
    kubectl apply -f ingress.yaml
    

Nach Abschluss dieses Workflows wird ein Ingress-Objekt mit dem Namen "arcgis-enterprise-ingress" erstellt. Wenn Sie zum ersten Mal einen Ingress-Controller verwenden, um den externen Zugriff auf den EKS-Cluster zu verwalten, müsste ein Application Load Balancer im Bereitstellungsstatus im AWS-Konto, in dem Sie gerade arbeiten, angezeigt werden. Der AWS Load Balancer Controller stellt diesen Application Load Balancer und die zusätzlichen Komponenten gemäß den YAML-Daten, die auf den Namespace angewendet wurden, bereit. Sobald der Load Balancer aktiv ist, sollte die ArcGIS Enterprise-Bereitstellung verfügbar sein und es kann ein CNAME-DNS-Eintrag erstellt werden. Mit diesem werden Clients vom vollständig qualifizierten Domänennamen, der bei der ursprünglichen Bereitstellung angegeben wurde, zum bereitgestellten Load Balancer weitergeleitet.

Hinweis:

Die Bereitstellung von "arcgis-ingress-controller" muss möglicherweise aktualisiert werden, damit die Verbindung über den neu erstellten Ingress ordnungsgemäß hergestellt wird. Wenn Sie nach der Erstellung des Ingress eine Fehlermeldung beim Zugriff auf ArcGIS Enterprise Manager erhalten, versuchen Sie Folgendes:

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

Annotations-Beschreibungen

Im Folgenden finden Sie weitere Informationen zu einigen der Annotationen:

  • alb.ingress.kubernetes.io/scheme: internet-facing: Hiermit wird ein Application Load Balancer (ALB) erstellt, der über das Internet aufgerufen werden kann. Wenn der ALB nur von Ihrem VPC aus verfügbar sein soll, können Sie alternativ die Annotation alb.ingress.kubernetes.io/scheme: internal angeben.
  • alb.ingress.kubernetes.io/target-type: ip: Mit dieser Annotation wird zugelassen, dass Datenverkehr im Load-Balancing-Verfahren direkt an Back-End-Pod-IP-Adressen weitergeleitet wird.