Google Kubernetes Engine Ingress für Application Load Balancer

Mit einem Ingress-Controller auf Clusterebene lässt sich Datenverkehr zu einer ArcGIS Enterprise-Bereitstellung auf Google Kubernetes Engine (GKE) 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 GKE-spezifischen Voraussetzungen erfüllt werden:

  • Sie müssen einen Cluster in GKE erstellt haben.
  • Das HTTP-Load-Balancing-Add-on muss im Cluster aktiviert worden sein.
  • 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.
  • Die Google Cloud Platform CLI muss auf dem Client-Computer installiert sein. Stellen Sie sicher, dass Sie sich bei dem Projekt authentifizieren können, in dem sich der GKE-Cluster befindet.
  • Sie müssen ein selbstverwaltetes Zertifikat im Google Cloud-Projekt erstellt haben. Notieren Sie sich den Namen des Zertifikats, nachdem es im Projekt erstellt wurde. Alternativ kann dieses Zertifikat für die spätere Verwendung in einem Kubernetes-Secret angegeben werden, das im Bereitstellungs-Namespace erstellt werden muss.

Hinzufügen von Annotation zum Ingress-Controller-Service im Cluster

Fügen Sie dem Ingress-Controller-Service im Cluster nach der Erstbereitstellung von ArcGIS Enterprise auf Google Kubernetes Engine Annotation hinzu.

  1. Führen Sie den folgenden Befehl aus, um dem bereitgestellten Service eine Annotation hinzuzufügen, die sicherstellt, dass TLS-Kommunikation verwendet wird:
    kubectl annotate svc arcgis-ingress-nginx -n <namespace> cloud.google.com/app-protocols='{"https":"HTTPS"}'
    
  2. Fügen Sie dem Controller-Service im Cluster eine weitere Annotation hinzu, um eine Integritätsprüfung für die Organisation zu konfigurieren.

    Dies ist mit BackendConfig CRD möglich.

    1. Kopieren und speichern Sie die folgenden YAML-Daten in einen Texteditor auf der Client-Workstation.

      In diesem Beispiel wird die Datei unter dem Namen backendconfig.yaml gespeichert.

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

      Hinweis:

      Der YAML des BackendConfig-Objekts können weitere Parameter für Integritätsprüfungen hinzugefügt werden, um die Organisationsanforderungen zu erfüllen. Ausführliche Informationen zu weiteren Parametern für Integritätsprüfungen, die der BackendConfig-Spezifikation hinzugefügt werden können, finden Sie in der Google Cloud-Dokumentation. Sie müssen den Wert für context im Feld requestPath ändern, damit er mit dem Kontextpfad übereinstimmt, der bei der Bereitstellung angegeben wurde.

    2. Erstellen Sie das BackendConfig-Objekt mit dem folgenden Befehl:
      kubectl apply -f backendconfig.yaml
      
    3. Fügen Sie dem Ingress-Controller-Service im Cluster die folgende Annotation hinzu:
      kubectl annotate svc arcgis-ingress-nginx -n <namespace> cloud.google.com/backend-config='{"default": "my-backendconfig"}'
      
      Auf diese Weise wird sichergestellt, dass die zuvor erstellte Integritätsprüfung von dem Load Balancer verwendet wird, der durch den GKE-Ingress-Controller bereitgestellt wird.

Erstellen des Ingress-Objekts

Nachdem nun alle Annotationen dem Ingress-Controller-Service im Cluster hinzugefügt wurden, erstellen Sie das Ingress-Objekt mit den folgenden Schritten:

  1. Kopieren Sie die folgenden YAML-Daten in eine Datei auf dem Client-Computer:
    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. Ersetzen Sie die folgenden Werte:
    • certificateName: Geben Sie den Namen des neu hochgeladenen Zertifikats an.
    • deploymentFQDN: Geben Sie den vollständig qualifizierten Domänennamen an, der bei der Bereitstellung festgelegt wurde.
    • namespace: Geben Sie den Namespace an, in dem Sie ArcGIS Enterprise on Kubernetes bereitgestellt haben.
    • context: Geben Sie den Kontext an, der bei der Bereitstellung festgelegt wurde.
  3. Speichern Sie diese YAML-Daten in einer Datei auf dem Client-Computer (z. B. in einer Datei namens "ingress.yaml"), und wenden Sie sie 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. Nach der Erstellung dieses Ingress-Objekts stellt der GKE-Ingress-Controller einen Application Load Balancer im Google Cloud Platform-Projekt bereit. Eine verknüpfte Netzwerk-Endpunktgruppe wird erstellt. Sie enthält die Pod-IP-Adresse des Backend-NGINX-Ingress-Controllers im Cluster. Sobald der Load Balancer erstellt wurde, ist die ArcGIS Enterprise-Bereitstellung verfügbar und es kann ein A-Record 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>