Detaillierte Verfahren zur Einrichtung einer Service-Mesh-Topologie

Die Voraussetzungen für die Bereitstellung der Service-Mesh-Topologie finden Sie unter Einrichten eines Service-Graphen.

Statische Routen in NetScaler® ADM konfigurieren

Innerhalb des Kubernetes-Clusters verwenden alle containerisierten Pods ein Overlay-Netzwerk. Eine direkte Kommunikation über diese privaten IP-Adressen ist nicht möglich. Um die Kommunikation von NetScaler ADM zum Kubernetes-Cluster zu ermöglichen, müssen Sie statisches Routing in NetScaler ADM konfigurieren.

Hinweis

Wenn Sie einen lokalen Agenten verwenden, stellen Sie sicher, dass Sie statische Routen auf dem Agenten konfigurieren. Melden Sie sich mit einem SSH-Client beim NetScaler-Agenten an und konfigurieren Sie die statischen Routen.

Angenommen, Sie haben die folgenden IP-Adressen für Ihren Kubernetes-Cluster:

  • Kubernetes-Master – 101.xx.xx.112

  • Kubernetes-Worker 1 – 101.xx.xx.111

  • Kubernetes-Worker 2 – 101.xx.xx.110

Führen Sie auf dem Kubernetes-Master den folgenden Befehl aus, um das Pod-Netzwerk für das statische Routing zu identifizieren:

kubectl get nodes -o jsonpath="{range .items[*]}{'podNetwork: '}{.spec.podCIDR}{'\t'}{'gateway: '}{.status.addresses[0].address}{'\n'}{end}"

Das Folgende ist eine Beispielausgabe, nachdem Sie den Befehl ausgeführt haben:

Beispielbefehl

  1. Melden Sie sich mit einem SSH-Client bei NetScaler ADM an.

  2. Konfigurieren Sie das statische Routing mit dem Befehl route add -net <public IP address range> <Kubernetes IP address>.

    Zum Beispiel:

    route add -net 192.168.0.0/24 101.xx.xx.112

    route add -net 192.168.1.0/24 101.xx.xx.111

    route add -net 192.168.2.0/24 101.xx.xx.110

  3. Überprüfen Sie die Konfiguration mit netstat -rn.

    Statisches Routing

  4. Fügen Sie diese Routenbefehle in die Datei /mpsconfig/svm.conf ein.

    1. Greifen Sie in NetScaler ADM mit dem folgenden Befehl auf die Datei svm.conf zu:

      vim /mpsconfig/svm.conf

    2. Fügen Sie die statischen Routen in die Datei svm.conf ein.

      Zum Beispiel: route add -net 192.168.0.0/24 101.xx.xx.112.

Erforderliche Parameter konfigurieren

Im Kubernetes-Master:

  1. Erstellen Sie ein Secret mit ADM-Agent-Anmeldeinformationen in jedem Namespace, in dem CPX als Ingress-Gateway / Sidecar bereitgestellt wird.

    kubectl create secret generic admlogin --from-literal=username=<username> --from-literal=password=<password> -n <namespace>

  2. helm repo add citrix https://citrix.github.io/citrix-helm-charts/

  3. Stellen Sie den NetScaler CPX als Ingress-Gateway bereit.

    helm install citrix-adc-istio-ingress-gateway citrix/citrix-adc-istio-ingress-gateway --version 1.2.1 --namespace <namespace> --set ingressGateway.EULA=YES,citrixCPX=true,ADMSettings.ADMFingerPrint=XX:00:X1:00:XX:0X:X0,ADMSettings.ADMIP=<xx.xx.xx.xx>, ingressGateway.image=quay.io/citrix/citrix-k8s-cpx-ingress,ingressGateway.tag=13.0-58.30

    Die folgende Tabelle listet die konfigurierbaren Parameter im Helm-Chart und ihre Standardwerte auf:

    Parameter Beschreibung Standardwert Optional/Obligatorisch (Helm)
    citrixCPX NetScaler CPX FALSE Obligatorisch für NetScaler CPX
    xDSAdaptor.image Image des Citrix xDS Adaptor-Containers quay.io/citrix/citrix-istio-adaptor:1.2.1 Obligatorisch
    ADMSettings.ADMIP NetScaler ADM IP-Adresse null Obligatorisch für NetScaler CPX
    ADMSettings.ADMFingerPrint Der NetScaler ADM Fingerprint. Navigieren Sie zu Einstellungen > Administration und klicken Sie unter Systemkonfigurationen auf Fingerprint anzeigen. null Optional
    ingressGateway.EULA Endbenutzer-Lizenzvereinbarung (EULA) Bedingungen. Wenn ja, stimmt der Benutzer den EULA-Bedingungen zu. NEIN Obligatorisch für NetScaler CPX
    ingressGateway.image Image des NetScaler CPX, der als Ingress-Gateway ausgeführt werden soll quay.io/citrix/citrix-k8s-cpx-ingress:13.0–58.30 Obligatorisch für NetScaler CPX
  4. Stellen Sie den Citrix SideCar Injector bereit.

    helm install cpx-sidecar-injector citrix/citrix-cpx-istio-sidecar-injector --version 1.2.1 --namespace <namespace> set cpxProxy.EULA=YES,ADMSettings.ADMFingerPrint=xx:xx:xx:xx,ADMSettings.ADMIP=<xx.xx.xx.xx>,cpxProxy.image=quay.io/citrix/citrix-k8s-cpx-ingress,cpxProxy.tag=13.0-58.30

    Die folgende Tabelle listet die konfigurierbaren Parameter im Helm-Chart und ihre Standardwerte auf:

    Parameter Beschreibung Standardwert
    ADMSettings.ADMIP Die NetScaler ADM IP-Adresse NIL
    cpxProxy.image NetScaler CPX Image, das als Sidecar-Proxy verwendet wird quay.io/citrix/citrix-k8s-cpx-ingress:13.0–58.30
    cpxProxy.imagePullPolicy Image-Pull-Richtlinie für NetScaler IfNotPresent
    cpxProxy.EULA Endbenutzer-Lizenzvereinbarung (EULA) Bedingungen. Wenn ja, stimmt der Benutzer den EULA-Bedingungen zu. NEIN
    cpxProxy.cpxSidecarMode Umgebungsvariable für NetScaler CPX. Sie gibt an, ob NetScaler CPX im Sidecar-Modus ausgeführt wird oder nicht. JA
  5. Legen Sie das Label für jeden Namespace fest, der eine CPX-Sidecar-Injektion benötigt.

    kubectl label namespace <app-namespace> cpx-injection=enabled

    Nach Durchführung von Schritt 3 und 5 sehen Sie, dass der NetScaler CPX in NetScaler ADM registriert ist.

Eine Beispielanwendung bereitstellen

Angenommen, Sie möchten die folgenden Anwendungen bereitstellen:

Beispiel-Apps bereitstellen

Führen Sie das folgende Verfahren aus, um eine Beispielanwendung bereitzustellen:

  1. kubectl create namespace citrix-system

  2. kubectl create namespace bookinfo

  3. kubectl label namespace bookinfo cpx-injection=enabled

  4. kubectl create secret generic admlogin --from-literal=username=<uername> --from-literal=password=<password> -n citrix-system

    Hinweis

    Sie können einen Benutzernamen und ein Passwort Ihrer Wahl eingeben.

  5. kubectl create secret generic admlogin --from-literal=username=<username> --from-literal=password=<password> -n bookinfo

    Hinweis

    Sie können einen Benutzernamen und ein Passwort Ihrer Wahl eingeben.

  6. helm install citrix-adc-istio-ingress-gateway citrix/citrix-adc-istio-ingress-gateway --version 1.2.1 --namespace citrix-system --set ingressGateway.EULA=YES,citrixCPX=true,ADMSettings.ADMFingerPrint=xx:xx:xx:xx,ADMSettings.ADMIP=<ADM agent IP address>,ingressGateway.image=quay.io/citrix/citrix-k8s-cpx-ingress,ingressGateway.tag=13.0-58.30

    Hinweis

    Sie müssen Ihren ADM-Fingerprint und die IP-Adresse des ADM-Agenten oder ADM angeben.

  7. helm install cpx-sidecar-injector citrix/citrix-cpx-istio-sidecar-injector --namespace citrix-system --set cpxProxy.EULA=YES,ADMSettings.ADMFingerPrint=xx:xx:xx:xx,ADMSettings.ADMIP=<ADM agent IP address>,cpxProxy.image=quay.io/citrix/citrix-k8s-cpx-ingress,cpxProxy.tag=13.0-58.30

    Hinweis

    Sie müssen Ihren ADM-Fingerprint und die IP-Adresse des ADM-Agenten oder ADM angeben.

  8. helm install bookinfo bookinfo/ --namespace bookinfo --set citrixIngressGateway.namespace=citrix-system

Kubernetes-Cluster in NetScaler ADM hinzufügen

So fügen Sie den Kubernetes-Cluster hinzu:

  1. Melden Sie sich mit Administratoranmeldeinformationen bei NetScaler ADM an.

  2. Navigieren Sie zu Orchestrierung > Kubernetes > Cluster. Die Seite “Cluster” wird angezeigt.

  3. Klicken Sie auf Hinzufügen.

  4. Geben Sie auf der Seite Cluster hinzufügen die folgenden Parameter an:

    1. Name – Geben Sie einen Namen Ihrer Wahl an.

    2. API-Server-URL – Sie können die Details der API-Server-URL vom Kubernetes-Master-Knoten abrufen.

      1. Führen Sie auf dem Kubernetes-Master-Knoten den Befehl kubectl cluster-info aus.

        API-Server-URL

      2. Geben Sie die URL ein, die für „Kubernetes master is running at.“ angezeigt wird.

    3. Authentifizierungstoken – Geben Sie das Authentifizierungstoken an. Das Authentifizierungstoken ist erforderlich, um den Zugriff für die Kommunikation zwischen dem Kubernetes-Cluster und NetScaler ADM zu validieren. So generieren Sie ein Authentifizierungstoken:

      Auf dem Kubernetes-Master-Knoten:

      1. Verwenden Sie das folgende YAML, um ein Service-Konto zu erstellen:

        apiVersion: v1
        kind: ServiceAccount
        metadata:
          name: <name>
          namespace: <namespace>
        <!--NeedCopy-->
        
      2. Führen Sie kubectl create -f <yaml file> aus.

        Das Service-Konto wird erstellt.

      3. Führen Sie kubectl create clusterrolebinding <name> --clusterrole=cluster-admin --serviceaccount=<namespace>:<name> aus, um die Cluster-Rolle an das Service-Konto zu binden.

        Das Service-Konto hat nun clusterweiten Zugriff.

        Ein Token wird automatisch generiert, wenn das Service-Konto erstellt wird.

      4. Führen Sie kubectl describe sa <name> aus, um das Token anzuzeigen.

      5. Um die Secret-Zeichenfolge zu erhalten, führen Sie kubectl describe secret <token-name> aus.

        Token generieren

    4. Wählen Sie den Agenten aus der Liste aus.

      Hinweis

      Wenn Sie einen ADM-Agenten verwenden, stellen Sie sicher, dass Sie denselben Agenten auswählen, den Sie in der CPX-YAML hinzugefügt haben.

    5. Klicken Sie auf Erstellen.

      Cluster hinzufügen

Automatische Auswahl virtueller Server für die Lizenzierung aktivieren

Hinweis

Stellen Sie sicher, dass Sie über ausreichende Lizenzen für virtuelle Server verfügen. Weitere Informationen finden Sie unter Lizenzierung.

Nachdem Sie den Kubernetes-Cluster in NetScaler ADM hinzugefügt haben, müssen Sie sicherstellen, dass virtuelle Server für die Lizenzierung automatisch ausgewählt werden. Virtuelle Server müssen lizenziert sein, um Daten im Service-Graphen anzuzeigen. So wählen Sie virtuelle Server automatisch aus:

  1. Navigieren Sie zu Einstellungen > Lizenzierungs- und Analysekonfiguration.

  2. Aktivieren Sie unter Zusammenfassung der virtuellen Serverlizenzen die Optionen Virtuelle Server automatisch auswählen und Nicht adressierbare virtuelle Server automatisch auswählen.

    Virtuellen Server automatisch auswählen

Web-Transaktions- und TCP-Transaktionseinstellungen aktivieren

Nachdem Sie den Kubernetes-Cluster hinzugefügt und die automatische Auswahl virtueller Server aktiviert haben, ändern Sie die Web-Transaktionseinstellungen und TCP-Transaktionseinstellungen auf Alle.

  1. Navigieren Sie zu Einstellungen > Analyseeinstellungen.

    Die Seite Analyseeinstellungen wird angezeigt.

  2. Klicken Sie auf Funktionen für Analysen aktivieren.

  3. Wählen Sie unter Web-Transaktionseinstellungen die Option Alle aus.

  4. Wählen Sie unter TCP-Transaktionseinstellungen die Option Alle aus.

    TCP

  5. Klicken Sie auf OK.

Traffic an Microservices senden

Als Nächstes müssen Sie Traffic an Microservices senden, damit der Service-Graph in NetScaler ADM gefüllt wird.

  1. Bestimmen Sie die Ingress-IP und den Port.

    export INGRESS_HOST=$(kubectl get pods -l app=citrix-ingressgateway -n citrix-system -o 'jsonpath={.items[0].status.hostIP}')

    export INGRESS_PORT=$(kubectl -n citrix-system get service citrix-ingressgateway -o jsonpath='{.spec.ports[?(@.name=="http2")].nodePort}')

    export SECURE_INGRESS_PORT=$(kubectl -n citrix-system get service citrix-ingressgateway -o jsonpath='{.spec.ports[?(@.name=="https")].nodePort}')

  2. Greifen Sie mit cURL auf die Bookinfo-Frontend-Anwendung zu. Der Dienst productpage muss eine 200 OK-Antwort zurückgeben.

    curl -kv https://$INGRESS_HOST:$SECURE_INGRESS_PORT/productpage

    curl -v http://$INGRESS_HOST:$INGRESS_PORT/productpage

  3. Besuchen Sie https://$INGRESS_HOST:$SECURE_INGRESS_PORT/productpage in einem Browser.

    Die Seite Bookinfo wird angezeigt.

  4. Stellen Sie sicher, dass $INGRESS_HOST und $SECURE_INGRESS_PORT durch eine IP-Adresse und einen Portwert ersetzt werden.

Nachdem Sie Traffic an Microservices gesendet haben, wird der Service-Graph innerhalb von etwa 10 Minuten gefüllt.

Beispiel

Mithilfe des Service-Graphen können Sie verschiedene Servicedetails wie Metriken, Fehler usw. analysieren. Weitere Informationen finden Sie unter Service-Graph.