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:

- Melden Sie sich mit einem SSH-Client bei NetScaler Console an.
-
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--> -
Überprüfen Sie die Konfiguration mit
`netstat -rn`.
-
Fügen Sie diese Routenbefehle in die Datei
`/mpsconfig/svm.conf`ein.-
Greifen Sie in NetScaler Console mit dem folgenden Befehl auf die Datei svm.conf zu:
vim /mpsconfig/svm.conf <!--NeedCopy--> -
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:
-
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--> -
`helm repo add citrix https://citrix.github.io/citrix-helm-charts/` -
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 -
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 -
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:

Führen Sie das folgende Verfahren aus, um eine Beispielanwendung bereitzustellen:
`kubectl create namespace citrix-system``kubectl create namespace bookinfo``kubectl label namespace bookinfo cpx-injection=enabled`-
`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.
-
`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.
-
`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.
-
`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.
`helm install bookinfo bookinfo/ --namespace bookinfo --set citrixIngressGateway.namespace=citrix-system`
Kubernetes-Cluster in NetScaler Console hinzufügen
Um den Kubernetes-Cluster hinzuzufügen:
- Melden Sie sich mit Administratoranmeldeinformationen bei NetScaler Console an.
- Navigieren Sie zu Orchestrierung > Kubernetes > Cluster. Die Seite “Cluster” wird angezeigt.
- Klicken Sie auf Hinzufügen.
-
Geben Sie auf der Seite Cluster hinzufügen die folgenden Parameter an:
- Name – Geben Sie einen Namen Ihrer Wahl an.
-
API-Server-URL – Die Details zur API-Server-URL erhalten Sie vom Kubernetes Master-Knoten.
-
Führen Sie auf dem Kubernetes Master-Knoten den Befehl
`kubectl cluster-info`aus.
-
Geben Sie die URL ein, die für „Kubernetes master is running at.“ angezeigt wird.
-
-
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:
-
Verwenden Sie die folgende YAML-Datei, um ein Service-Konto zu erstellen:
apiVersion: v1 kind: ServiceAccount metadata: name: <name> namespace: <namespace> <!--NeedCopy--> -
Führen Sie
`kubectl create -f <yaml file>`aus.Das Service-Konto wird erstellt.
-
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.
-
Führen Sie
`kubectl describe sa <name>`aus, um das Token anzuzeigen. -
Um die Secret-Zeichenfolge zu erhalten, führen Sie
`kubectl describe secret <token-name>`aus.
-
-
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.
-
Klicken Sie auf Erstellen.

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:
- Navigieren Sie zu Einstellungen > Lizenzierungs- und Analysekonsfiguration.
-
Aktivieren Sie unter Zusammenfassung der virtuellen Serverlizenzen die Optionen Virtuelle Server automatisch auswählen und Nicht adressierbare virtuelle 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.
-
Navigieren Sie zu Einstellungen > Analyseeinstellungen.
Die Seite Analyseeinstellungen wird angezeigt.
- Klicken Sie auf Funktionen für Analysen aktivieren.
- Wählen Sie unter Web-Transaktionseinstellungen die Option Alle aus.
-
Wählen Sie unter TCP-Transaktionseinstellungen die Option Alle aus.

- 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.
-
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--> -
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--> -
Besuchen Sie
`https://$INGRESS_HOST:$SECURE_INGRESS_PORT/productpage`in einem Browser.Die Seite Bookinfo wird angezeigt.
-
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.

Mithilfe des Service-Graphen können Sie verschiedene Servicedetails wie Metriken, Fehler usw. analysieren. Weitere Informationen finden Sie unter Service-Graph.
In diesem Artikel
- Statische Routen in NetScaler Console konfigurieren
- Die erforderlichen Parameter konfigurieren
- Eine Beispielanwendung bereitstellen
- Kubernetes-Cluster in NetScaler Console hinzufügen
- Automatische Auswahl virtueller Server für die Lizenzierung aktivieren
- Web-Transaktions- und TCP-Transaktionseinstellungen aktivieren
- Traffic an Microservices senden