Activar la inyección Sidecar de proxy Istio en el entorno nativo de Oracle Cloud

Introducción

Istio es una malla de servicio que proporciona una capa de infraestructura independiente para gestionar la comunicación entre servicios. La comunicación de red se extrae de los propios servicios y es gestionada por proxies. Istio utiliza un diseño sidecar, lo que significa que los proxies de comunicación se ejecutan en sus propios contenedores junto a cada contenedor de servicio. Para aplicar la inyección sidecar automática, el espacio de nombres que debe utilizar una aplicación debe estar etiquetado con istio-injection=enabled.

Objetivos

En este tutorial se muestra cómo activar la inyección sidecar de proxy automática y, por lo tanto, aprovechar las funciones de Istio en Oracle Cloud Native Environment.

En este tutorial, despliegue una aplicación sin la inyección automática de sidecar de proxy activada. A continuación, active la inyección sidecar de proxy automática y vuelva a desplegar la aplicación. A continuación, puede ver que los pods de la malla de servicio están ejecutando un proxy Istio sidecar.

Requisitos

Se ha desplegado Oracle Cloud Native Environment versión 1.4, incluido un cluster de Kubernetes. Consulte los tutoriales en:

Despliegue un entorno nativo de Oracle Cloud de alta disponibilidad

Despliegue de Oracle Cloud Native Environment

También debe implementar una malla de servicio mediante el módulo Istio. Para obtener más información sobre el despliegue del módulo Istio, consulte la documentación del entorno nativo de Oracle Cloud.

Verificar que Istio está instalado y en ejecución

En un nodo de plano de control, utilice el siguiente comando para mostrar despliegues en el espacio de nombres istio-system.

kubectl get deployment -n istio-system

La salida debe ser similar a la siguiente:

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

Crear un despliegue NGINX simple

Utilice el siguiente comando para crear un nuevo despliegue denominado hello-world que ejecute la imagen nginx.

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

Ver los pods de Kubernetes en el espacio de nombres por defecto

Utilice el siguiente comando para mostrar los pods.

kubectl get pods

La salida debe ser similar a la siguiente:

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

Tenga en cuenta que la columna READY es 1/1, lo que indica que la inyección sidecar de proxy automático de Istio no está activada.

Suprimir el despliegue de NGINX

Utilice el siguiente comando para suprimir el despliegue hello-world.

kubectl delete deployments hello-world

Activar inyección sidecar de proxy automática

Para aplicar la inyección sidecar automática, el espacio de nombres que debe utilizar una aplicación debe estar etiquetado con istio-injection=enabled. El siguiente ejemplo etiqueta el espacio de nombres predeterminado.

kubectl label namespace default istio-injection=enabled

El comando kubectl get namespace confirma que el espacio de nombres predeterminado está etiquetado correctamente.

kubectl get namespace -L istio-injection

La salida debe ser similar a la siguiente:

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   

Puede ver que el espacio de nombres por defecto ahora incluye la etiqueta ISTIO_INJECTION.

Crear un despliegue NGINX simple

Utilice el siguiente comando para crear un nuevo despliegue denominado hello-world que ejecute la imagen nginx.

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

Ver los pods de Kubernetes en el espacio de nombres por defecto

Utilice el comando kubectl get pods para mostrar los pods.

kubectl get pods

La salida debe ser similar a la siguiente:

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

Tenga en cuenta que la columna READY es 2/2, lo que indica que la inyección sidecar de proxy automático de Istio está activada y que los pods de la malla están ejecutando un proxy Istio sidecar.

Desactivar la inyección automática de sidecar proxy

Elimine la etiqueta istio-injection=enabled del espacio de nombres predeterminado utilizando kubectl label como se muestra.

kubectl label namespace default istio-injection-

El comando kubectl get namespace confirma que la etiqueta se elimina del espacio de nombres predeterminado.

kubectl get namespace -L istio-injection

La salida debe ser similar a la siguiente:

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   

Por último, suprima el despliegue de NGINX.

kubectl delete deployments hello-world

Para más información

Más recursos de aprendizaje

Explore otras prácticas en docs.oracle.com/learn o acceda a más contenido de aprendizaje libre en el canal YouTube de Oracle Learning. Además, visite education.oracle.com/learning-explorer para convertirse en Oracle Learning Explorer.

Para obtener documentación sobre el producto, visite Oracle Help Center.