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

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.