Istio Proxy Sidecar Injection in Oracle Cloud Native Environment aktivieren
Einführung
Istio ist ein Service-Mesh, das eine separate Infrastrukturschicht für die dienststellenübergreifende Kommunikation bereitstellt. Die Netzwerkkommunikation wird von den Services selbst abstrahiert und von Proxys verarbeitet. Istio verwendet ein Sidecar-Design, das bedeutet, dass Kommunikationsproxys in eigenen Behältern neben jedem Servicecontainer ausgeführt werden. Um die automatische Sidecar-Injection in Kraft zu setzen, muss der von einer Anwendung zu verwendende Namespace mit istio-injection=enabled
gekennzeichnet sein.
Ziele
In diesem Tutorial erfahren Sie, wie Sie die automatische Proxy-Sidecar-Injection aktivieren und somit die Istio-Features in Oracle Cloud Native Environment nutzen.
In diesem Tutorial stellen Sie eine Anwendung bereit, ohne dass die automatische Proxy-Sidecar-Injection aktiviert ist. Anschließend aktivieren Sie die automatische Proxy Sidecar Injection und stellen die Anwendung erneut bereit. Sie können dann sehen, dass die Pods im Servicemesh einen Istio-Sidecar-Proxy ausführen.
Voraussetzungen
Oracle Cloud Native Environment Release 1.4 wurde bereitgestellt, einschließlich Kubernetes-Cluster. Weitere Informationen finden Sie in den Tutorials unter:
Hochverfügbare Oracle Cloud Native-Umgebung bereitstellen
Oracle Cloud Native Environment bereitstellen
Außerdem müssen Sie ein Servicemesh mit dem Istio-Modul bereitstellen. Weitere Informationen zum Deployment des Istio-Moduls finden Sie in der Oracle Cloud Native Environment-Dokumentation.
Prüfen, ob Istio installiert ist und ausgeführt wird
Verwenden Sie auf einem Control-Plane-Knoten den folgenden Befehl, um Deployments im Namespace istio-system
anzuzeigen.
kubectl get deployment -n istio-system
Die Ausgabe sollte folgendermaßen aussehen:
NAME READY UP-TO-DATE AVAILABLE AGE
grafana 2/2 2 2 2m44s
istio-egressgateway 2/2 2 2 2m48s
istio-ingressgateway 2/2 2 2 2m48s
istiod 2/2 2 2 3m2s
prometheus-server 2/2 2 2 2m44s
Einfache NGINX-Bereitstellung erstellen
Verwenden Sie den folgenden Befehl, um ein neues Deployment mit dem Namen hello-world
zu erstellen, das das nginx
-Image ausführt.
kubectl create deployment --image container-registry.oracle.com/olcne/nginx:1.17.7 hello-world
Kubernetes-Pods im Standard-Namespace anzeigen
Verwenden Sie den folgenden Befehl, um die Pods aufzulisten.
kubectl get pods
Die Ausgabe sollte folgendermaßen aussehen:
NAME READY STATUS RESTARTS AGE
hello-world-... 1/1 Running 0 18s
Beachten Sie, dass in der Spalte READY der Wert 1/1 angegeben ist, dass die automatische Istio-Proxy-Sidecar-Injektion nicht aktiviert ist.
NGINX-Deployment löschen
Verwenden Sie den folgenden Befehl, um das Deployment hello-world
zu löschen.
kubectl delete deployments hello-world
Automatische Proxy Sidecar-Injektion aktivieren
Um die automatische Sidecar-Injection in Kraft zu setzen, muss der von einer Anwendung zu verwendende Namespace mit istio-injection=enabled
gekennzeichnet sein. Im folgenden Beispiel wird der Standard-Namespace beschriftet.
kubectl label namespace default istio-injection=enabled
Der Befehl kubectl get namespace
bestätigt, dass der Standard-Namespace ordnungsgemäß beschriftet ist.
kubectl get namespace -L istio-injection
Die Ausgabe sollte folgendermaßen aussehen:
NAME STATUS AGE ISTIO-INJECTION
default Active 23m enabled
externalip-validation-system Active 22m
istio-system Active 19m
kube-node-lease Active 23m
kube-public Active 23m
kube-system Active 23m
kubernetes-dashboard Active 22m
Der Standard-Namespace enthält jetzt das Label ISTIO_INJECTION.
Einfache NGINX-Bereitstellung erstellen
Verwenden Sie den folgenden Befehl, um ein neues Deployment mit dem Namen hello-world
zu erstellen, das das nginx
-Image ausführt.
kubectl create deployment --image container-registry.oracle.com/olcne/nginx:1.17.7 hello-world
Kubernetes-Pods im Standard-Namespace anzeigen
Verwenden Sie den Befehl kubectl get pods
, um die Pods aufzulisten.
kubectl get pods
Die Ausgabe sollte folgendermaßen aussehen:
NAME READY STATUS RESTARTS AGE
hello-world-... 2/2 Running 0 20s
Beachten Sie, dass die Spalte READY den Wert 2/2 hat, was darauf hinweist, dass die automatische Proxy-Sidecar-Injektion aktiviert ist und dass die Pods im Netz einen Istio-Sidecar-Proxy ausführen.
Automatische Proxy Sidecar-Injection deaktivieren
Entfernen Sie das istio-injection=enabled
-Label aus dem Standard-Namespace. Verwenden Sie dazu kubectl label
wie gezeigt.
kubectl label namespace default istio-injection-
Der Befehl kubectl get namespace
bestätigt, dass das Label aus dem Standard-Namespace entfernt wird.
kubectl get namespace -L istio-injection
Die Ausgabe sollte folgendermaßen aussehen:
NAME STATUS AGE ISTIO-INJECTION
default Active 39m
externalip-validation-system Active 38m
istio-system Active 36m
kube-node-lease Active 39m
kube-public Active 39m
kube-system Active 39m
kubernetes-dashboard Active 38m
Löschen Sie schließlich das NGINX-Deployment.
kubectl delete deployments hello-world
Weitere Informationen
- Oracle Cloud Native Environment-Dokumentation
- Upstream-Dokumentation unter https://istio.io/
- Schulung zu Oracle Cloud Native Environment
- Oracle Linux – Schulungsunterlagen
- Oracle Linux Learning Subscription
Weitere Lernressourcen
Sehen Sie sich andere Übungen unter docs.oracle.com/learn an, oder greifen Sie auf kostenlosere Lerninhalte im Oracle Learning YouTube-Kanal zu. Unter education.oracle.com/learning-explorer können Sie außerdem zum Oracle Learning Explorer werden.
Weitere Informationen zur Produktdokumentation finden Sie unter Oracle Help Center.
Enable Istio Proxy Sidecar Injection in Oracle Cloud Native Environment
F49717-02
November 2021
Copyright © 2021, Oracle and/or its affiliates.