Mit Istio als Cluster-Add-on arbeiten
Erfahren Sie, wie Sie Istio als Cluster-Add-on installieren, konfigurieren und verwenden, um Trafficmanagement, Sicherheit, Verbindungen und Beobachtbarkeit in Clustern zu vereinfachen, die Sie mit Kubernetes Engine (OKE) erstellt haben.
Die Verwendung von Istio als Cluster-Add-on (das "Istio-Add-on") und nicht als eigenständiges Programm vereinfacht die Konfiguration und laufende Wartung. Einfacher geht's:
- Istio aktivieren oder deaktivieren.
- Melden Sie sich bei automatischen Versionsupdates von Oracle an und deaktivieren Sie diese.
- Wählen Sie Istio Add-on-Versionen.
- Add-on-spezifische Anpassungen mit genehmigten Konfigurationsargumenten für Schlüssel/Wert-Paare verwalten
Wenn Sie Istio mit Kubernetes Engine als Cluster-Add-on bereitstellen, können Sie optional ein Istio-Ingress-Gateway erstellen, um eingehende HTTP- und HTTPS-Anforderungen weiterzuleiten. Alternativ können Sie mit anderen unterstützten Ingresses Traffic an den entsprechenden Service weiterleiten, der im Cluster ausgeführt wird. Beachten Sie, dass die Zugänglichkeit des Istio-Ingress-Gateways vom Typ des Load-Balancer-Subnetzes (öffentlich oder privat) abhängt, das für das Cluster angegeben ist.
Im Fall des Istio-Add-ons verwenden Sie genehmigte Konfigurationsargumente für Schlüssel/Wert-Paare, um zusätzliche spezifische Anpassungen für Mesh-weite Konfigurationsparameter vorzunehmen (siehe Argumente für Istio-Add-on-Konfiguration). Für andere Konfigurationsaufgaben wie die Verwaltung von Mesh-Ressourcen verwenden Sie istioctl (das Istio-Befehlszeilentool) oder andere von Istio unterstützte Tools. Wenn Sie das Istio-Add-on mit den genehmigten Argumenten konfigurieren und die Anpassungen beibehalten möchten, wenn die Add-on-Version automatisch von Oracle aktualisiert wird, setzen Sie das Konfigurationsargument customizeConfigMap
auf true
. Wenn Sie das Konfigurationsargument customizeConfigMap
nicht auf true
setzen, werden die Anpassungen verworfen, wenn Oracle das Add-on aktualisiert. Alle Anpassungen, die Sie mit istioctl (oder einem anderen von Istio unterstützten Tool) vornehmen, werden immer verworfen, wenn Oracle das Add-on aktualisiert.
Wenn Sie Kubernetes-Anwendungen mit Helm- und Helm-Diagrammen konfigurieren und bereitstellen, beachten Sie, dass Helm nur von ihm erstellte Ressourcen aktualisieren oder löschen kann. Damit Helm das Istio Add-on verwalten kann:
- Verwenden Sie Helm-Charts, um die Istio- und Istio-Sidecar-Injektor-Konfigurationsmaps zu generieren.
- Setzen Sie das Konfigurationsargument
customizeConfigMap
auftrue
, wenn Sie das Istio-Add-on bereitstellen.
Wenn Sie das Istio-Add-on von Oracle automatisch aktualisieren lassen, führt Oracle ein In-Place-Upgrade durch, wenn neue Istio-Versionen verfügbar werden. Während des Upgrades aktualisiert Oracle automatisch die Istio-Control Plane (istiod) und das Ingress-Gateway auf die neuere Version. Beachten Sie, dass Oracle keine Istio Data Plane Sidecars automatisch aktualisiert, sodass diese Sidecars in der alten Version verbleiben. Es liegt in Ihrer Verantwortung, die Istio-Datenebene manuell zu aktualisieren, indem Sie alle Pods mit Istio-Seitenwagen mit dem Befehl kubectl rollout restart deployment
neu starten. Obwohl die Istio-Control Plane abwärtskompatibel mit älteren Sidecar-Versionen ist, empfehlen wir, Istio manuell zu aktualisieren, anstatt das Istio-Add-on automatisch von Oracle für Sie aktualisieren zu lassen. Siehe In-Place-Upgrades in der Istio-Dokumentation.
In diesen Abschnitten wird beschrieben, wie Sie mit dem Istio-Add-on arbeiten, um die Kommunikation und Vernetzung zwischen Diensten zu verwalten:
- Bereitstellen des Istio-Add-ons
- Aktualisieren des Istio-Add-ons
- Das Istio-Add-on deaktivieren (und entfernen)
Beachten Sie, dass Service-Mesh-Produkte (wie Oracle Cloud Infrastructure Service Mesh, Istio und Linkerd) bei der Verwendung des OCI-VCN-nativen Podnetzwerk-CNI-Plug-ins für Podnetze unterstützt werden. Beachten Sie, dass der Support mit Ausnahme des Istio-Add-ons derzeit auf Oracle Linux 7 beschränkt ist (Oracle Linux 8-Support ist geplant). Das Add-on Istio wird sowohl mit Oracle Linux 7 als auch mit Oracle Linux 8 unterstützt. Worker-Knoten müssen Kubernetes 1.26 (oder höher) ausführen.
Beachten Sie außerdem, dass Sie das Istio-Add-on nicht mit Clustern verwenden können, bei denen Istio bereits als Standalone-Programm installiert ist, oder in Clustern, bei denen Oracle Cloud Infrastructure Service Mesh installiert ist.
Sie können Istio mit verwalteten Knotenpools verwenden, jedoch nicht mit virtuellen Knotenpools.
Bereitstellen des Istio-Add-ons
In den folgenden Schritten wird beschrieben, wie Istio Service Mesh als Cluster-Add-on (das "Istio-Add-on") bereitgestellt wird, um Trafficmanagement, Sicherheit, Verbindungen und Beobachtbarkeit in Clustern zu vereinfachen, die Sie mit Kubernetes Engine erstellt haben:
- Schritt 1: Erstellen Sie die Istio Add-on-Konfigurationsdatei
- Schritt 2: Stellen Sie das Istio-Add-on auf dem Cluster bereit, und bestätigen Sie die erfolgreiche Bereitstellung
- Schritt 3: Envoy-Sidecar-Injektion aktivieren
- Schritt 4: Anwendung bereitstellen und Envoy-Sidecar-Container beobachten
Ein praktisches Beispiel finden Sie unter Beispiel: Istio als Cluster-Add-on bereitstellen.
Schritt 1: Erstellen Sie die Istio Add-on-Konfigurationsdatei
In diesen Anweisungen wird beschrieben, wie Sie eine Istio-Add-on-Konfigurationsdatei erstellen, damit Sie das Istio-Add-on mit der CLI bereitstellen können. Die Konfigurationsdatei enthält genehmigte Konfigurationsargumente für Schlüssel/Wert-Paare. Sie müssen eine Konfigurationsdatei erstellen, wenn Sie das Add-on über die CLI (oder über die API) bereitstellen. Sie können das Add-on Istio auch über die Konsole bereitstellen. In diesem Fall geben Sie Konfigurationsargumente in der Benutzeroberfläche an. Weitere Informationen zum Deployment des Istio-Add-ons mit der Konsole finden Sie unter Cluster-Add-on installieren.
-
Erstellen Sie in einem geeigneten Editor eine JSON-Datei mit einem Namen Ihrer Wahl (bei diesen Anweisungen wird davon ausgegangen, dass die Datei
enableistio.json
heißt), die Folgendes enthält:{ "addonName": "Istio", "configurations": [ ] }
Dieser Inhalt reicht aus, um das Istio-Add-on zu aktivieren.
- (Optional) Geben Sie in der Datei
enableistio.json
wie folgt an, ob das Istio-Ingress-Gateway installiert werden soll:- Um das Istio-Ingress-Gateway zu installieren, aktualisieren Sie die Datei
enableistio.json
wie folgt:{ "addonName": "Istio", "configurations": [ { "key": "enableIngressGateway", "value": "true" } ] }
- Wenn Sie das Istio-Ingress-Gateway nicht installieren möchten, aktualisieren Sie die Datei
enableistio.json
wie folgt:{ "addonName": "Istio", "configurations": [ { "key": "enableIngressGateway", "value": "false" } ] }
Wenn Sie
enableIngressGateway
nicht in die Konfigurationsdatei aufnehmen, besteht das Standardverhalten nicht darin, das Istio-Ingress-Gateway zu installieren (entspricht der Einstellung vonenableIngressGateway
auffalse
) - Um das Istio-Ingress-Gateway zu installieren, aktualisieren Sie die Datei
-
(Optional) Geben Sie in der von Ihnen erstellten Datei
enableistio.json
andere Konfigurationsargumente an, um das Istio-Add-on anzupassen. Informationen zu den Konfigurationsargumenten, die Sie festlegen können, finden Sie unter Istio Add-on-Konfigurationsargumente. - (Optional) Wenn Sie Anpassungen beibehalten möchten, die Sie am Istio-Add-on vornehmen, wenn die Add-on-Version automatisch von Oracle aktualisiert wird, setzen Sie das Argument
customizeConfigMap
auftrue
. Beispiel:- Um das Istio-Ingress-Gateway zu installieren und Anpassungen beizubehalten, aktualisieren Sie die Datei
enableistio.json
wie folgt:{ "addonName": "Istio", "configurations": [ { "key": "enableIngressGateway", "value": "true" }, { "key": "customizeConfigMap", "value": "true" } ] }
- Wenn Sie das Istio-Ingress-Gateway nicht installieren möchten, die Anpassungen jedoch beibehalten möchten, aktualisieren Sie die Datei
enableistio.json
wie folgt:{ "addonName": "Istio", "configurations": [ { "key": "enableIngressGateway", "value": "false" }, { "key": "customizeConfigMap", "value": "true" } ] }
Wenn Sie
customizeConfigMap
nicht in die Konfigurationsdatei aufnehmen, werden Anpassungen standardmäßig verworfen, wenn die Add-on-Version automatisch von Oracle aktualisiert wird (entspricht der EinstellungcustomizeConfigMap
auffalse
)
- Um das Istio-Ingress-Gateway zu installieren und Anpassungen beizubehalten, aktualisieren Sie die Datei
- Speichern und schließen Sie die Datei
enableistio.json
.
Schritt 2: Stellen Sie das Istio-Add-on auf dem Cluster bereit, und bestätigen Sie die erfolgreiche Bereitstellung
In diesen Anweisungen wird beschrieben, wie das Istio-Add-on mit der CLI und einer Konfigurationsdatei bereitgestellt wird. Sie können das Add-on auch über die Konsole und die API bereitstellen. Weitere Informationen finden Sie unter Cluster-Add-on installieren.
-
Falls noch nicht geschehen, führen Sie die Schritte zum Einrichten der kubeconfig-Konfigurationsdatei des Clusters aus, und legen Sie (gegebenenfalls) die Umgebungsvariable KUBECONFIG so fest, dass sie auf die Datei verweist. Beachten Sie, dass Sie Ihre eigene kubeconfig-Datei einrichten müssen. Sie können nicht mit einer kubeconfig-Datei, die von einem anderen Benutzer eingerichtet wurde, auf ein Cluster zugreifen. Siehe Clusterzugriff einrichten.
- Vergewissern Sie sich, dass das Istio-Add-on noch nicht auf dem Cluster installiert wurde, indem Sie Folgendes eingeben:
oci ce cluster list-addons --cluster-id <cluster-ocid>
Dabei ist
<cluster-ocid>
die OCID des Clusters, auf dem Sie das Istio-Add-on bereitstellen möchten. -
Stellen Sie das Istio-Add-on auf dem Cluster bereit, indem Sie Folgendes eingeben:
oci ce cluster install-addon --addon-name Istio --cluster-id <cluster-ocid> --from-json file://./<path-to-config-file>
Hierbei gilt:
--cluster-id <cluster-ocid>
ist die OCID des Clusters, in dem Sie das Istio-Add-on bereitstellen möchten.--from-json file://<path-to-config-file>
gibt den Speicherort der zuvor erstellten Istio-Add-on-Konfigurationsdatei an. Beispiel:--from-json file://./enableistio.json
Beispiel:
oci ce cluster install-addon --addon-name Istio --from-json file://./enableistio.json --cluster-id ocid1.cluster.oc1.iad.aaaaaaaam______dfr
Eine Anforderung zum Bereitstellen des Istio-Add-ons wird erstellt.
-
Bestätigen Sie die erfolgreiche Bereitstellung des Istio-Add-ons (und des Istio-Ingress-Gateways, wenn Sie es in der Istio-Add-on-Konfigurationsdatei angegeben haben), wie folgt:
- Vergewissern Sie sich, dass das Istio-Add-on auf dem Cluster installiert wurde, indem Sie Folgendes eingeben:
oci ce cluster list-addons --cluster-id <cluster-ocid>
Unter der Annahme einer erfolgreichen Bereitstellung zeigt die Ausgabe das Istio-Add-on mit dem Lebenszyklusstatus ACTIVE an. Beispiel:
{ "data": [ { "addon-error": null, "current-installed-version": "v1.19.0", "lifecycle-state": "ACTIVE", "name": "Istio", "time-created": "2023-11-06T11:21:11+00:00", "version": null } ] }
- Bestätigen Sie, dass der Istiod-Pod (die Istio-Control-Plane) sowie der Istio-ingressgateway-Pod, wenn Sie ihn in der Konfigurationsdatei angegeben haben, im Istio-System-Namespace ausgeführt werden, indem Sie Folgendes eingeben:
kubectl get pods -n istio-system
Bei erfolgreichem Deployment werden in der Ausgabe die Pods mit dem Status "Wird ausgeführt" angezeigt. Beispiel:
NAME READY STATUS RESTARTS AGE istio-ingressgateway-df7d86548-n2vxr 1/1 Running 0 102s istiod-65d95bd5f9-vb2qk 1/1 Running 0 101s
- Wenn Sie das Istio-Ingress-Gateway in der Konfigurationsdatei angegeben haben, bestätigen Sie, dass der istio-ingressgateway-Service erfolgreich bereitgestellt wurde, indem Sie Folgendes eingeben:
kubectl get svc istio-ingressgateway -n istio-system
Bei einem erfolgreichen Deployment zeigt die Ausgabe den istio-ingressgateway-Service als Service vom Typ LoadBalancer und (wenn das Load-Balancer-Subnetz des Clusters öffentlich ist) mit einer öffentlich zugänglichen IP-Adresse an. Beispiel:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE istio-ingressgateway LoadBalancer 10.96.31.174 <EXTERNAL-IP> 15021:30089/TCP,80:31662/TCP,443:32217/TCP 2m50s
- Vergewissern Sie sich, dass das Istio-Add-on auf dem Cluster installiert wurde, indem Sie Folgendes eingeben:
Schritt 3: Envoy-Sidecar-Injektion aktivieren
Damit Istio den Envoy-Sidecar in jeden Service injizieren kann, um Kommunikation, Konfiguration und Sicherheit bereitzustellen:
- Erstellen Sie den Namespace, in dem Anwendungen bereitgestellt werden sollen (sofern der Namespace noch nicht vorhanden ist), indem Sie Folgendes eingeben:
kubectl create namespace <namespace-name>
- Legen Sie den Namespace, in dem Anwendungen bereitgestellt werden sollen, als Standard-Namespace fest, indem Sie Folgendes eingeben:
kubectl config set-context --current --namespace=<namespace-name>
- Vergewissern Sie sich, dass der Namespace, in dem Anwendungen bereitgestellt werden sollen, der Standard-Namespace ist, indem Sie Folgendes eingeben:
kubectl config view --minify | grep namespace
- Fügen Sie dem Namespace das Label
istio-injection=enabled
hinzu, um das Envoy-Sidecar automatisch in neue Anwendungspods zu installieren, die im Namespace bereitgestellt werden, indem Sie Folgendes eingeben:kubectl label namespace <namespace-name> istio-injection=enabled
- Vergewissern Sie sich, dass der Namespace ordnungsgemäß gekennzeichnet ist, indem Sie Folgendes eingeben:
kubectl get namespace -L istio-injection
Schritt 4: Anwendung bereitstellen und Envoy-Sidecar-Container beobachten
So bestätigen Sie, dass Istio zur Bereitstellung von Kommunikation, Konfiguration und Sicherheit für eine Anwendung verwendet wird:
- Anwendung bereitstellen. Beispiel: Geben Sie Folgendes ein:
kubectl apply -f <manifest-name>
- Vergewissern Sie sich, dass die Services der Anwendung erfolgreich erstellt wurden, indem Sie Folgendes eingeben:
kubectl get services
- Bestätigen Sie, dass die Pods der Anwendung den Status "Wird ausgeführt" aufweisen, indem Sie Folgendes eingeben:
kubectl get pods
Die Ausgabe zeigt, dass jeder Anwendungspod zwei Container enthält. Für jeden Pod ist ein Container der Anwendungscontainer und der andere Container der Envoy-Sidecar, den Istio injiziert hat.
- Stellen Sie sicher, dass einer der Pods der Anwendung zwei Container enthält (einer davon ist der Anwendungscontainer, der andere ist der von Istio eingespritzte Envoy-Sidecar), indem Sie Folgendes eingeben:
kubectl get pods <application-pod-name> -o jsonpath='{.spec.containers[*].name}'
Beachten Sie, dass nach dem Aktivieren des Ingress-Gateways standardmäßig nicht von außerhalb des Clusters auf Anwendungen zugegriffen werden kann. Ein Beispiel, wie Sie eine Anwendung zugänglich machen, finden Sie unter Beispiel: Istio als Cluster-Add-on bereitstellen.
Beispiel: Istio als Cluster-Add-on bereitstellen
In diesem Beispiel installieren Sie das Add-on Istio und das Ingress-Gateway Istio auf einem Cluster, das Sie mit der Kubernetes-Engine erstellt haben. Nachdem Sie das Istio-Add-on und das Ingress-Gateway installiert haben, stellen Sie die Istio-Beispielanwendung Bookinfo bereit und machen die Anwendung von außerhalb des Clusters zugänglich:
- Legen Sie der Einfachheit halber eine Umgebungsvariable namens CLUSTER_ID auf den Wert der OCID des Clusters fest, indem Sie Folgendes eingeben:
export CLUSTER_ID=<cluster-ocid>
- Erstellen Sie eine JSON-Datei mit dem Namen
enableistio-ig.json
, die Folgendes enthält:{ "addonName": "Istio", "configurations": [ { "key": "enableIngressGateway", "value": "true" } ] }
Diese Konfigurationsdatei installiert das Istio-Add-on und das Istio-Ingress-Gateway.
- Installieren Sie das Istio-Add-on und das Istio-Ingress-Gateway auf dem Cluster, indem Sie Folgendes eingeben:
oci ce cluster install-addon --addon-name Istio --cluster-id $CLUSTER_ID --from-json file://./enableistio-ig.json
Eine Anforderung zum Installieren des Istio-Add-ons wird erstellt.
- Überprüfen Sie die erfolgreiche Installation des Istion-Add-ons und des Istio-Ingress-Gateways:
- Bestätigen Sie, dass das Istio-Add-on erfolgreich installiert wurde, indem Sie Folgendes eingeben:
oci ce cluster list-addons --cluster-id $CLUSTER_ID
Unter der Annahme einer erfolgreichen Bereitstellung zeigt die Ausgabe das Istio-Add-on mit dem Lebenszyklusstatus ACTIVE an. Die folgenden Ausgaben zeigen beispielsweise das Istio-Add-on sowie eine Reihe wichtiger Cluster-Add-ons:
{ "data": [ { "addon-error": null, "current-installed-version": "v1.10.1-multiarch-7", "lifecycle-state": "ACTIVE", "name": "CoreDNS", "time-created": "2023-11-06T10:35:26+00:00", "version": null }, { "addon-error": null, "current-installed-version": "v1.19.0", "lifecycle-state": "ACTIVE", "name": "Istio", "time-created": "2023-11-06T11:21:11+00:00", "version": null }, { "addon-error": null, "current-installed-version": "v1.27.2-oke.0.2.20-multiarch-98", "lifecycle-state": "ACTIVE", "name": "KubeProxy", "time-created": "2023-11-06T10:35:26+00:00", "version": null }, { "addon-error": null, "current-installed-version": "v2.0.1", "lifecycle-state": "ACTIVE", "name": "OciVcnIpNative", "time-created": "2023-11-06T10:35:26+00:00", "version": null } ] }
- Bestätigen Sie, dass der Istio Control Plane (istiod) Pod und der istio-ingressgateway Pod im Istio-System Namespace ausgeführt werden, indem Sie Folgendes eingeben:
kubectl get pods -n istio-system
Bei erfolgreichem Deployment werden in der Ausgabe beide Pods mit dem Status "Wird ausgeführt" angezeigt. Beispiel:
NAME READY STATUS RESTARTS AGE istio-ingressgateway-df7d86548-n2vxr 1/1 Running 0 102s istiod-65d95bd5f9-vb2qk 1/1 Running 0 101s
- Vergewissern Sie sich, dass der Dienst istio-ingressgateway erfolgreich bereitgestellt wurde, indem Sie Folgendes eingeben:
kubectl get svc istio-ingressgateway -n istio-system
Bei einem erfolgreichen Deployment zeigt die Ausgabe den istio-ingressgateway-Service als Service vom Typ LoadBalancer und (wenn das Load-Balancer-Subnetz des Clusters öffentlich ist) mit einer öffentlich zugänglichen IP-Adresse an. Beispiel:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE istio-ingressgateway LoadBalancer 10.96.31.174 <EXTERNAL-IP> 15021:30089/TCP,80:31662/TCP,443:32217/TCP 2m50s
- Bestätigen Sie, dass das Istio-Add-on erfolgreich installiert wurde, indem Sie Folgendes eingeben:
- Erstellen Sie einen neuen Namespace, in dem die Bookinfo-Beispielanwendung bereitgestellt werden soll:
- Erstellen Sie den Namespace
bookinfo
, indem Sie Folgendes eingeben:kubectl create namespace bookinfo
- Machen Sie den
bookinfo
-Namespace zum Standard-Namespace, indem Sie Folgendes eingeben:kubectl config set-context --current --namespace=bookinfo
- Bestätigen Sie, dass bookinfo der Standard-Namespace ist, indem Sie Folgendes eingeben:
kubectl config view --minify | grep namespace
- Erstellen Sie den Namespace
- Fügen Sie dem Bookinfo-Namespace das Label
istio-injection=enabled
hinzu, um das Envoy-Sidecar automatisch in neue Anwendungspods zu installieren, die im Namespace bereitgestellt werden:- Fügen Sie dem Bookinfo-Namespace das Label hinzu, indem Sie Folgendes eingeben:
kubectl label namespace bookinfo istio-injection=enabled
- Bestätigen Sie, dass der Bookinfo-Namespace ordnungsgemäß gekennzeichnet ist, indem Sie Folgendes eingeben:
kubectl get namespace -L istio-injection
- Fügen Sie dem Bookinfo-Namespace das Label hinzu, indem Sie Folgendes eingeben:
- Stellen Sie die Bookinfo-Beispielanwendung bereit, indem Sie Folgendes eingeben:
kubectl apply -f https://raw.githubusercontent.com/istio/istio/release-1.19/samples/bookinfo/platform/kube/bookinfo.yaml
Bei einem erfolgreichen Deployment werden in der Ausgabe verschiedene Deployments und Services angezeigt, die im Cluster erstellt wurden:
service/details created serviceaccount/bookinfo-details created deployment.apps/details-v1 created service/ratings created serviceaccount/bookinfo-ratings created deployment.apps/ratings-v1 created service/reviews created serviceaccount/bookinfo-reviews created deployment.apps/reviews-v1 created deployment.apps/reviews-v2 created deployment.apps/reviews-v3 created service/productpage created serviceaccount/bookinfo-productpage created deployment.apps/productpage-v1 created
- Prüfen Sie die erfolgreiche Bereitstellung der Bookinfo-Beispielanwendung:
- Bestätigen Sie, dass die Services erfolgreich erstellt wurden, indem Sie Folgendes eingeben:
kubectl get services
Bei einem erfolgreichen Deployment werden in der Ausgabe die im Cluster erstellten Services wie folgt angezeigt:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE details ClusterIP 10.96.72.219 <none> 9080/TCP 54s productpage ClusterIP 10.96.65.83 <none> 9080/TCP 54s ratings ClusterIP 10.96.101.51 <none> 9080/TCP 54s reviews ClusterIP 10.96.14.9 <none> 9080/TCP 54s
- Bestätigen Sie, dass alle Pods den Status "Wird ausgeführt" aufweisen, indem Sie Folgendes eingeben:
kubectl get pods
Bei einem erfolgreichen Deployment werden in der Ausgabe die ausgeführten Pods wie folgt angezeigt:
NAME READY STATUS RESTARTS AGE details-v1-5f4d584748-hcm9t 2/2 Running 0 81s productpage-v1-564d4686f-48lpw 2/2 Running 0 80s ratings-v1-686ccfb5d8-bpl8t 2/2 Running 0 81s reviews-v1-86896b7648-6c8d4 2/2 Running 0 81s reviews-v2-b7dcd98fb-fsv7c 2/2 Running 0 81s reviews-v3-5c5cc7b6d-qgrv2 2/2 Running 0 81s
Die Ausgabe zeigt, dass jeder Anwendungspod zwei Container enthält. Für jeden Pod ist ein Container der Anwendungscontainer und der andere Container der von Istio eingespritzte Envoy-Sidecar.
- Stellen Sie sicher, dass der
ratings
-Pod zwei Container enthält (einer davon ist der Anwendungscontainer, der andere ist der von Istio injizierte Envoy-Sidecar). Beispiel: Geben Sie Folgendes ein:kubectl get pods ratings-v1-686ccfb5d8-bpl8t -o jsonpath='{.spec.containers[*].name}'
Die Ausgabe zeigt zwei Container, den Applikationscontainer (Bewertungen) und den von Istio (istio-proxy) eingespritzten Envoy-Seitenwagencontainer:
ratings istio-proxy
- Vergewissern Sie sich, dass die Anwendung ausgeführt wird, indem Sie einen curl-Befehl von einem Pod senden:
kubectl exec "$(kubectl get pod -l app=ratings -o jsonpath='{.items[0].metadata.name}')" -c ratings -- curl -sS productpage:9080/productpage | grep -o "<title>.*</title>" <title>Simple Bookstore App</title>
Beachten Sie, dass die Bookinfo-Beispielanwendung noch nicht von außerhalb des Clusters zugänglich ist, selbst nachdem das Ingress-Gateway aktiviert wurde. Beachten Sie auch, dass die Barrierefreiheit des Istio-Ingress-Gateways vom Typ des für das Cluster angegebenen Load-Balancer-Subnetzes (öffentlich oder privat) abhängt.
- Bestätigen Sie, dass die Services erfolgreich erstellt wurden, indem Sie Folgendes eingeben:
-
Machen Sie die Bookinfo-Beispielanwendung von außerhalb des Clusters zugänglich:
- Ordnen Sie den Ingress des Beispiel-Deployments dem Istio-Ingress-Gateway zu, indem Sie Folgendes eingeben:
kubectl apply -f https://raw.githubusercontent.com/istio/istio/release-1.19/samples/bookinfo/networking/bookinfo-gateway.yaml
Die Ausgabe zeigt, dass die Kubernetes-Gateway- und VirtualService-Ressourcen erstellt wurden:
gateway.networking.istio.io/bookinfo-gateway created virtualservice.networking.istio.io/bookinfo created
- Ordnen Sie den Ingress des Beispiel-Deployments dem Istio-Ingress-Gateway zu, indem Sie Folgendes eingeben:
- Prüfen Sie, ob auf die Bookinfo-Beispielanwendung zugegriffen werden kann und verwenden Sie das Istio-Ingress-Gateway:
- Legen Sie Umgebungsvariablen für den Ingress-Host und den Ingress-Port fest, indem Sie Folgendes eingeben:
export INGRESS_NAME=istio-ingressgateway
export INGRESS_NS=istio-system
export INGRESS_HOST=$(kubectl -n "$INGRESS_NS" get service "$INGRESS_NAME" -o jsonpath='{.status.loadBalancer.ingress[0].ip}')
export INGRESS_PORT=$(kubectl -n "$INGRESS_NS" get service "$INGRESS_NAME" -o jsonpath='{.spec.ports[?(@.name=="http2")].port}')
- Bestätigen Sie, dass auf die Bookinfo-Beispielanwendung zugegriffen werden kann und das Istio-Ingress-Gateway verwendet wird, indem Sie Folgendes eingeben:
curl -s "http://${INGRESS_HOST}:${INGRESS_PORT}/productpage" | grep -o "<title>.*</title>"
Bei einem erfolgreichen Deployment werden in der Ausgabe die im Cluster erstellten Services wie folgt angezeigt:
<title>Simple Bookstore App</title>
- Zeigen Sie die Bookinfo-Webseite in einem Browser an, indem Sie die folgende URL öffnen:
http://${INGRESS_HOST}:${INGRESS_PORT}/productpage
- Aktualisieren Sie die Bookinfo-Webseite im Browser mehrmals, um verschiedene Versionen von Bewertungen anzuzeigen, die auf der Seite angezeigt werden.
- Legen Sie Umgebungsvariablen für den Ingress-Host und den Ingress-Port fest, indem Sie Folgendes eingeben:
- (Optional) Nachdem Sie das Beispiel abgeschlossen haben, können Sie jetzt die erstellten Ressourcen löschen:
- Löschen Sie die Bookinfo-Beispielanwendung, indem Sie Folgendes eingeben:
kubectl delete -f https://raw.githubusercontent.com/istio/istio/release-1.19/samples/bookinfo/platform/kube/bookinfo.yaml
-
Deaktivieren (und optional) Sie das Istio-Add-on mit dem Befehl oci ce cluster disable-addon, indem Sie Folgendes eingeben:
oci ce cluster disable-addon --addon-name Istio --cluster-id $CLUSTER_ID --is-remove-existing-add-on <true|false>
wobei
--is-remove-existing-add-on <true|false>
angibt, dass das Istio-Add-on entweder vollständig entfernt werden soll (wenn es auftrue
gesetzt ist) oder dass das Add-on nicht entfernt werden soll, aber einfach deaktiviert und nicht verwendet werden soll (wenn es auffalse
gesetzt ist). Wenn Sie das Add-on deaktivieren, aktualisiert Oracle die Add-on-Version nicht mehr automatisch, wenn neue Versionen verfügbar sind.Beispiel:
oci ce cluster disable-addon --addon-name Istio --cluster-id $CLUSTER_ID --is-remove-existing-add-on true
Eine Arbeitsanforderung wird erstellt, um das Istio-Add-on zu deaktivieren (und optional zu entfernen).
- Entfernen Sie Istio CustomResourceDefinitions (CRDs), die nicht standardmäßig gelöscht werden, indem Sie Folgendes eingeben:
kubectl delete crd $(kubectl get crd -A | grep "istio.io" | awk '{print $1}')
- Entfernen Sie Istio-Mesh-Ressourcen (wie das Kubernetes-Gateway und die VirtualService-Ressourcen), die nicht vom Istio-Add-on verwaltet werden, indem Sie Folgendes eingeben:
kubectl delete -f https://raw.githubusercontent.com/istio/istio/release-1.19/samples/bookinfo/networking/bookinfo-gateway.yaml
- Löschen Sie die Bookinfo-Beispielanwendung, indem Sie Folgendes eingeben:
Aktualisieren des Istio-Add-ons
In diesen Anweisungen wird beschrieben, wie Sie das Istio-Add-on mit der CLI und einer Konfigurationsdatei aktualisieren. Sie können das Add-on auch über die Konsole und die API aktualisieren. Weitere Informationen finden Sie unter Cluster-Add-on aktualisieren.
-
Öffnen Sie die Istio Add-on-Konfigurationsdatei in einem geeigneten Editor.
-
Fügen Sie Konfigurationsargumente in der Konfigurationsdatei nach Bedarf hinzu, entfernen oder ändern Sie sie. Informationen zu den Argumenten, die Sie festlegen können, finden Sie unter Istio Add-on-Konfigurationsargumente.
- Wenn Sie angegeben haben, dass Oracle die Istio-Add-on-Version automatisch aktualisieren soll und Sie die Konfigurationsänderungen beibehalten möchten, setzen Sie das Konfigurationsargument
customizeConfigMap
auftrue
(wenn es noch nicht festgelegt ist). - Aktualisieren Sie das Istio-Add-on mit dem Befehl oci ce cluster update-addon, indem Sie Folgendes eingeben:
oci ce cluster update-addon --addon-name Istio --from-json file://<path-to-config-file> --cluster-id <cluster-ocid>
Hierbei gilt:
--cluster-id <cluster-ocid>
ist die OCID des Clusters, in dem Sie das Istio-Add-on aktualisieren möchten.--from-json file://<path-to-config-file>
gibt den Speicherort der Istio-Add-on-Konfigurationsdatei an, die beim Aktualisieren des Add-ons verwendet werden soll. Beispiel:--from-json file://./istio-add-on.json
Beispiel:
oci ce cluster update-addon --addon-name Istio --from-json file://./istio-add-on.json --cluster-id ocid1.cluster.oc1.iad.aaaaaaaam______dfr
Eine Anforderung zum Aktualisieren des Istio-Add-ons wird erstellt.
- (Optional) Zeigen Sie den Status der Istiod- und Istio-ingressgateway-Pods an, um den Fortschritt zu beobachten, indem Sie Folgendes eingeben:
kubectl get pods -n istio-system
Das Istio-Add-on deaktivieren (und entfernen)
In diesen Anweisungen wird beschrieben, wie Sie das Istio-Add-on mit der CLI und einer Konfigurationsdatei deaktivieren und entfernen. Sie können das Add-on auch über die Konsole und die API aktualisieren. Weitere Informationen finden Sie unter Cluster-Add-on deaktivieren (und entfernen).
-
Deaktivieren (und optional) Sie das Istio-Add-on mit dem Befehl oci ce cluster disable-addon, indem Sie Folgendes eingeben:
oci ce cluster disable-addon --addon-name Istio --cluster-id <cluster-ocid> --is-remove-existing-add-on <true|false>
Hierbei gilt:
--cluster-id <cluster-ocid>
ist die OCID des Clusters, in dem Sie das Istio-Add-on deaktivieren (und optional entfernen) möchten.--is-remove-existing-add-on <true|false>
gibt an, dass das Istio-Add-on entweder vollständig entfernt werden soll (wenn es auftrue
gesetzt ist) oder dass das Add-on nicht entfernt werden soll, sondern einfach deaktiviert und nicht verwendet werden soll (wenn es auffalse
gesetzt ist). Wenn Sie das Istio-Add-on deaktivieren, aktualisiert Oracle die Add-on-Version nicht mehr automatisch, wenn neue Versionen verfügbar werden.
Beispiel:
oci ce cluster disable-addon --addon-name Istio --cluster-id ocid1.cluster.oc1.iad.aaaaaaaam______dfr --is-remove-existing-add-on true
Eine Arbeitsanforderung wird erstellt, um das Istio-Add-on zu deaktivieren (und optional zu entfernen).
- (Optional) Zeigen Sie den Status der Istiod- und Istio-ingressgateway-Pods an, um den Fortschritt zu beobachten, indem Sie Folgendes eingeben:
kubectl get pods -n istio-system
- (Optional) Entfernen Sie Istio CustomResourceDefinitions (CRDs), die nicht standardmäßig gelöscht werden, indem Sie Folgendes eingeben:
kubectl delete crd $(kubectl get crd -A | grep "istio.io" | awk '{print $1}')
- (Optional) Entfernen Sie Istio-Mesh-Ressourcen (wie die Kubernetes Gateway- und VirtualService-Ressourcen), die nicht vom Istio-Add-on verwaltet werden, mit dem Befehl
kubectl delete
.