Ativar Injeção de Sidecar do Proxy Istio no Ambiente Nativo do Oracle Cloud

Introdução

O istio é uma malha de serviços que fornece uma camada de infraestrutura separada para lidar com a comunicação entre serviços. A comunicação via rede é abstraída dos serviços em si e é tratada por proxies. Istio usa um design sidecar, o que significa que os proxies de comunicação são executados em seus próprios contêineres ao lado de cada contêiner de serviço. Para colocar a injeção automática em vigor, o namespace a ser usado por um aplicativo deve ser rotulado com istio-injection=enabled.

Objetivos

Este tutorial mostra como ativar a injeção automática de proxy lateral e, assim, aproveitar os recursos do Istio no Ambiente Nativo do Oracle Cloud.

Neste tutorial, você implanta um aplicativo sem a injeção automática de sidecar por proxy ativada. Em seguida, ative a injeção automática do lado de proxy e implante o aplicativo novamente. Você pode ver que os pods na malha de serviço estão executando um proxy de Istio sidecar.

Pré-requisitos

O Ambiente Nativo do Oracle Cloud Versão 1.3 foi implantado, incluindo um cluster do Kubernetes. Consulte os tutoriais em:

Implantar um Ambiente Nativo Altamente Disponível do Oracle Cloud

Implantar Ambiente Nativo do Oracle Cloud

Você também precisa implantar uma malha de serviço usando o módulo Istio. Para obter mais informações sobre como implantar o módulo Istio, consulte a Documentação do Ambiente Nativo do Oracle Cloud.

Verificar se o Istio está instalado e em execução

Em um nó do plano de controle, use o comando a seguir para mostrar implantações no namespace istio-system.

kubectl get deployment -n istio-system

A saída deve ser semelhante a:

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

Criar uma implantação simples do NGINX

Use o comando a seguir para criar uma nova implantação chamada hello-world que executa a imagem nginx.

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

Exibir os pods do Kubernetes no namespace padrão

Use o comando a seguir para listar os pods.

kubectl get pods

A saída deve ser semelhante a:

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

Observe que a coluna READY é 1/1 indicando que a injeção automática de proxy Istio não está ativada.

Excluir a implantação do NGINX

Use o comando a seguir para excluir a implantação hello-world.

kubectl delete deployments hello-world

Ativar injeção automática de proxy lateral

Para colocar a injeção automática em vigor, o namespace a ser usado por um aplicativo deve ser rotulado com istio-injection=enabled. O exemplo a seguir rotula o namespace padrão.

kubectl label namespace default istio-injection=enabled

O comando kubectl get namespace confirma que o namespace padrão está rotulado corretamente.

kubectl get namespace -L istio-injection

A saída deve ser semelhante a:

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   

Você pode ver o namespace padrão agora inclui o label ISTIO_INJECTION.

Criar uma implantação simples do NGINX

Use o comando a seguir para criar uma nova implantação chamada hello-world que executa a imagem nginx.

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

Exibir os pods do Kubernetes no namespace padrão

Use o comando kubectl get pods para listar os pods.

kubectl get pods

A saída deve ser semelhante a:

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

Observe que a coluna READY é 2/2, indicando que a injeção automática de proxy de Istio é ativada e que os pods na malha estão executando um proxy de Istio sidecar.

Desativar injeção automática de proxy para o lado

Remova o label istio-injection=enabled do namespace padrão usando kubectl label conforme mostrado.

kubectl label namespace default istio-injection-

O comando kubectl get namespace confirma que o label é removido do namespace padrão.

kubectl get namespace -L istio-injection

A saída deve ser semelhante a:

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 fim, exclua a implantação do NGINX.

kubectl delete deployments hello-world

Para Obter Mais Informações

Mais Recursos de Aprendizagem

Explore outros laboratórios no docs.oracle.com/learn ou acesse conteúdo de aprendizado mais gratuito no canal Oracle Learning YouTube. Além disso, visite education.oracle.com/learning-explorer para se tornar um Oracle Learning Explorer.

Para obter a documentação do produto, visite o Oracle Help Center.