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
- Documentação do Ambiente Nativo do Oracle Cloud
- Documentação de upstream em https://istio.io/
- Treinamento em Ambiente Nativo do Oracle Cloud
- Conteúdo Programático do Oracle Linux
- Assinatura de Aprendizagem do Oracle Linux
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.
Enable Istio Proxy Sidecar Injection in Oracle Cloud Native Environment
F49723-01
November 2021
Copyright © 2021, Oracle and/or its affiliates.