Detaillierte Verfahren zur Einrichtung einer Service-Mesh-Topologie

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

Statische Routen in NetScaler Console 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 Console zum Kubernetes-Cluster zu ermöglichen, müssen Sie statisches Routing in NetScaler Console 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}"
<!--NeedCopy-->

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

Beispielbefehl

  1. Melden Sie sich mit einem SSH-Client bei NetScaler Console 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
    <!--NeedCopy-->
    
  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 Console mit dem folgenden Befehl auf die Datei svm.conf zu:

      vim /mpsconfig/svm.conf
      <!--NeedCopy-->
      
    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`.

Die erforderlichen Parameter konfigurieren

Im Kubernetes Master:

  1. Erstellen Sie ein Secret mit 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>
    <!--NeedCopy-->
    
  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
    <!--NeedCopy-->
    

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

    Parameter Beschreibung Standard 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 IP-Adresse der NetScaler Console null Obligatorisch für NetScaler CPX
    ADMSettings.ADMFingerPrint Der NetScaler Console 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
    <!--NeedCopy-->
    

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

    Parameter Beschreibung Standardwert
    ADMSettings.ADMIP Die IP-Adresse der NetScaler Console 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-Policy 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. YES
  5. Setzen Sie das Label für jeden Namespace, der eine CPX Sidecar Injection benötigt.

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

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

Eine Beispielanwendung bereitstellen

Angenommen, Sie möchten die folgenden Anwendungen bereitstellen:

Beispielanwendungen 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=<agent IP address>,ingressGateway.image=quay.io/citrix/citrix-k8s-cpx-ingress,ingressGateway.tag=13.0-58.30`

    Hinweis

    Sie müssen Ihren Konsolen-Fingerprint und die IP-Adresse des Agenten oder der Konsole 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 Konsolen-Fingerprint und die IP-Adresse des ADM-Agenten oder der Konsole angeben.

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

Kubernetes-Cluster in NetScaler Console hinzufügen

Um den Kubernetes-Cluster hinzuzufügen:

  1. Melden Sie sich mit Administratoranmeldeinformationen bei NetScaler Console 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 – Die Details zur API-Server-URL erhalten Sie vom Kubernetes Master-Knoten.

      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 der NetScaler Console zu validieren. So generieren Sie ein Authentifizierungstoken:

      Auf dem Kubernetes Master-Knoten:

      1. Verwenden Sie die folgende YAML-Datei, 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, während 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 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 Console 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 Analysekonsfiguration.
  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 Console 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}')
    <!--NeedCopy-->
    
  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
    <!--NeedCopy-->
    
  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.