Abilita inserimento Sidecar proxy istio in Oracle Cloud Native Environment

Introduzione

Istio è una rete di servizi che fornisce un livello di infrastruttura separato per gestire la comunicazione tra i servizi. La comunicazione di rete è astratta dai servizi stessi ed è gestita dai proxy. Istio utilizza un design sidecar, il che significa che i proxy di comunicazione vengono eseguiti nei propri contenitori accanto a ogni contenitore di servizi. Per rendere effettiva l'iniezione sidecar automatica, lo spazio di nomi utilizzato da un'applicazione deve essere etichettato con istio-injection=enabled.

Obiettivi

Questa esercitazione descrive come abilitare l'iniezione automatica di sidecar proxy e, quindi, sfruttare le funzioni di Istio in Oracle Cloud Native Environment.

In questa esercitazione viene distribuita un'applicazione senza l'iniezione automatica di sidecar proxy abilitata. Quindi abilitare l'iniezione automatica sidecar proxy e distribuire di nuovo l'applicazione. È quindi possibile verificare che i pod presenti nella rete del servizio eseguano un proxy sidecar Istio.

Prerequisiti

Oracle Cloud Native Environment Release 1.4 distribuito, incluso un cluster Kubernetes. Vedere le esercitazioni all'indirizzo:

Distribuisci un ambiente nativo Oracle Cloud ad alta disponibilità

Distribuisci ambiente nativo Oracle Cloud

È inoltre necessario distribuire una rete di servizi utilizzando il modulo Istio. Per ulteriori informazioni sulla distribuzione del modulo Istio, consulta la documentazione di Oracle Cloud Native Environment.

Verificare che Istio sia installato e in esecuzione

In un nodo del piano di controllo utilizzare il comando riportato di seguito per mostrare le distribuzioni nello spazio di nomi istio-system.

kubectl get deployment -n istio-system

L'output deve essere simile al seguente:

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

Crea una distribuzione NGINX semplice

Utilizzare il comando seguente per creare una nuova distribuzione denominata hello-world che esegua l'immagine nginx.

kubectl create deployment --image container-registry.oracle.com/olcne/nginx:1.17.7 hello-world

Visualizza i pod Kubernetes nello spazio di nomi predefinito

Usare il comando seguente per elencare i pod.

kubectl get pods

L'output deve essere simile al seguente:

NAME              READY   STATUS    RESTARTS   AGE
hello-world-...   1/1     Running   0          18s

Si noti che la colonna READY è 1/1 che indica che l'iniezione automatica sidecar proxy Istio non è abilitata.

Elimina la distribuzione NGINX

Utilizzare il comando seguente per eliminare la distribuzione hello-world.

kubectl delete deployments hello-world

Abilita iniezione sidecar proxy automatica

Per rendere effettiva l'iniezione sidecar automatica, lo spazio di nomi utilizzato da un'applicazione deve essere etichettato con istio-injection=enabled. L'esempio seguente assegna etichette allo spazio dei nomi predefinito.

kubectl label namespace default istio-injection=enabled

Il comando kubectl get namespace conferma che l'etichetta dello spazio di nomi predefinito è corretta.

kubectl get namespace -L istio-injection

L'output deve essere simile al seguente:

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   

È ora possibile visualizzare lo spazio di nomi predefinito include l'etichetta ISTIO_INJECTION.

Crea una distribuzione NGINX semplice

Utilizzare il comando seguente per creare una nuova distribuzione denominata hello-world che esegua l'immagine nginx.

kubectl create deployment --image container-registry.oracle.com/olcne/nginx:1.17.7 hello-world

Visualizza i pod Kubernetes nello spazio di nomi predefinito

Utilizzare il comando kubectl get pods per elencare i pod.

kubectl get pods

L'output deve essere simile al seguente:

NAME              READY   STATUS    RESTARTS   AGE
hello-world-...   2/2     Running   0          20s

Si noti che la colonna READY è 2/2, indicando che l'iniezione automatica sidecar proxy istio è abilitata e che i pod nella mesh eseguono un proxy sidecar Istio.

Disabilita iniezione sidecar proxy automatica

Rimuovere l'etichetta istio-injection=enabled dallo spazio di nomi predefinito utilizzando kubectl label come mostrato.

kubectl label namespace default istio-injection-

Il comando kubectl get namespace conferma che l'etichetta viene rimossa dallo spazio di nomi predefinito.

kubectl get namespace -L istio-injection

L'output deve essere simile al seguente:

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   

Eliminare infine la distribuzione NGINX.

kubectl delete deployments hello-world

Per ulteriori informazioni

Altre risorse di apprendimento

Esplora altri laboratori su docs.oracle.com/learn o accedi a più contenuti di apprendimento gratuito sul canale Oracle Learning YouTube. Inoltre, visitare education.oracle.com/learning-explorer per diventare Oracle Learning Explorer.

Per la documentazione del prodotto, visitare il sito Oracle Help Center.