Mantenha tudo organizado com as coleções
Salve e categorize o conteúdo com base nas suas preferências.
Injetar proxies sidecar com o Cloud Service Mesh
Neste documento, explicamos como configurar a injeção de proxy sidecar com o Cloud Service Mesh
para melhorar a segurança, a confiabilidade e a observabilidade da rede. Essas funções são
abstraídas do contêiner principal do aplicativo e implementadas em um
proxy comum fora do processo (o sidecar), entregue como um contêiner separado no
mesmo pod. Isso fornece os recursos do Cloud Service Mesh sem reformular seus aplicativos de produção para participar de uma malha de serviço.
A injeção automática de proxy sidecar ocorre quando o Cloud Service Mesh
detecta um rótulo de namespace que você configura para o pod da carga de trabalho. O proxy
intercepta todo o tráfego de entrada e saída das cargas de trabalho e se comunica
com o Cloud Service Mesh.
Permissões necessárias para as tarefas
Para executar as tarefas descritas nesta página, você precisa ter o papel
roles/container.clusterAdmin ou um superior a esse. Consulte
Papéis do Google Kubernetes Engine para
ver detalhes sobre as permissões incluídas nesse papel.
Como ativar a injeção automática de sidecar
A maneira recomendada de injetar proxies sidecar ários é usar o injetor automático de sidecar baseado em webhooks, embora você possa atualizar manualmente a configuração do Kubernetes dos pods.
Para ativar a injeção automática, rotule os namespaces com os
rótulos de injeção padrão
se a tag padrão estiver configurada ou com o
rótulo de revisão ao namespace.
O rótulo adicionado também depende se você implantou o
Cloud Service Mesh gerenciado (com a
API Fleet ou com
asmcli]) ou se
instalou o plano de controle no cluster. O rótulo é usado pelo webhook do injetor do arquivo secundário para associar os arquivos secundários injetados
a uma revisão específica do plano de controle.
Para ativar a injeção automática:
No cluster
Use o seguinte comando para localizar o rótulo de revisão em istiod:
kubectl -n istio-system get pods -l app=istiod --show-labels
Na saída, na coluna LABELS, anote o valor do rótulo de revisão
istiod, que segue o prefixo istio.io/rev=. Neste
exemplo, o valor é asm-1264-1.
Aplique o rótulo de revisão aos namespaces e remova o rótulo istio-injection
(se houver). No comando a seguir, NAMESPACE é
o nome do namespace no qual quer ativar a injeção automática, e
REVISION, o rótulo de revisão que você anotou na
etapa anterior.
Você pode ignorar a mensagem "istio-injection not found" na
saída. Isso significa que o namespace não tinha o rótulo
istio-injection anteriormente, que é esperado em novas
instalações do Cloud Service Mesh ou em novas implantações. Como o comportamento da injeção automática é indefinido quando um namespace tem os rótulos istio-injection e de revisão, todos os comandos kubectl label na documentação do Cloud Service Mesh garantem explicitamente que apenas um seja definido.
Reinicie os pods afetados usando as etapas da próxima seção.
Malha de serviço gerenciada
Use o seguinte comando para localizar os canais de lançamento disponíveis:
kubectl -n istio-system get controlplanerevision
O resultado será assim:
NAME AGE
asm-managed 6d7h
Na saída, o valor na coluna NAME é o rótulo REVISION
que corresponde ao
canal de lançamento
disponível para a versão do Cloud Service Mesh. Aplique esse rótulo aos seus namespaces e
remova o rótulo istio-injection (se houver).
No comando a seguir, substitua REVISION pelo
rótulo de revisão que você anotou acima e substitua
NAMESPACE pelo nome do namespace em que você
quer ativar a injeção automática:
Você pode ignorar a mensagem "istio-injection not found" na
saída. Isso significa que o namespace não tinha o rótulo
istio-injection anteriormente, que é esperado em novas
instalações do Cloud Service Mesh ou em novas implantações. Como o comportamento da injeção automática é indefinido quando um namespace tem os rótulos istio-injection e de revisão, todos os comandos kubectl label na documentação do Cloud Service Mesh garantem explicitamente que apenas um seja definido.
Reinicie os pods afetados usando as etapas da próxima seção.
Se você não usou uma implantação, exclua os pods. Eles serão recriados
automaticamente com os sidecars:
kubectl delete pod -n YOUR_NAMESPACE --all
Confira se todos os pods no namespace têm sidecars injetados:
kubectl get pod -n YOUR_NAMESPACE
Neste exemplo de saída do comando anterior, observe que a
coluna READY indica que há dois contêineres para cada uma das
cargas de trabalho: o principal e o contêiner do proxy sidecar.
NAME READY STATUS RESTARTS AGE
YOUR_WORKLOAD 2/2 Running 0 20s
...
[[["Fácil de entender","easyToUnderstand","thumb-up"],["Meu problema foi resolvido","solvedMyProblem","thumb-up"],["Outro","otherUp","thumb-up"]],[["Difícil de entender","hardToUnderstand","thumb-down"],["Informações incorretas ou exemplo de código","incorrectInformationOrSampleCode","thumb-down"],["Não contém as informações/amostras de que eu preciso","missingTheInformationSamplesINeed","thumb-down"],["Problema na tradução","translationIssue","thumb-down"],["Outro","otherDown","thumb-down"]],["Última atualização 2025-09-04 UTC."],[],[],null,["Inject sidecar proxies with Cloud Service Mesh\n\nThis document covers how to configure sidecar proxy injection with Cloud Service Mesh\nto enhance network security, reliability, and observability. These functions are\nabstracted away from the application's primary container and implemented in a\ncommon out-of-process proxy (the sidecar), delivered as a separate container in\nthe same Pod. This provides the\n[Cloud Service Mesh's features](/service-mesh/v1.20/docs/overview) without redesigning your\nproduction applications to participate in a service mesh.\n\nAutomatic sidecar proxy injection (auto-injection) occurs when Cloud Service Mesh\ndetects a namespace label you configure for the workload's Pod. The proxy\nintercepts all inbound and outbound traffic to the workloads and communicates\nwith Cloud Service Mesh.\n\nPermissions required for these tasks\n\n\nTo perform the tasks on this page, you must have the\n`roles/container.clusterAdmin` or a higher role. See\n[Google Kubernetes Engine roles](/iam/docs/understanding-roles#container) for\ndetails on the permissions included in this role.\n\nEnabling automatic sidecar injection\n\nThe recommended way to inject sidecar proxies is to use the webhooks-based\nautomatic sidecar injector, although you can manually update your Pods'\nKubernetes configuration.\n\nTo enable auto-injection, you label your namespaces with the\n*[default injection labels](https://istio.io/latest/docs/setup/upgrade/canary/#default-tag)*\nif the default tag is set up, or with the\n[revision label](/service-mesh/v1.20/docs/revisions-overview) to your namespace.\nThe label that you add also depends on whether you deployed\nmanaged Cloud Service Mesh (with the\n[fleet API](/service-mesh/docs/managed/provision-managed-anthos-service-mesh) or with\n[`asmcli`](/service-mesh/docs/managed/provision-managed-anthos-service-mesh-asmcli)), or\ninstalled the in-cluster control plane. The label is used by the sidecar\ninjector webhook to associate injected sidecars with a particular control plane\nrevision.\n\nTo enable auto-injection: \n\nIn-cluster\n\n1. Use the following command to locate the revision label on `istiod`:\n\n kubectl -n istio-system get pods -l app=istiod --show-labels\n\n The output looks similar to the following: \n\n ```bash\n NAME READY STATUS RESTARTS AGE LABELS\n istiod-asm-1264-1-5788d57586-bljj4 1/1 Running 0 23h app=istiod,istio.io/rev=asm-1264-1,istio=istiod,pod-template-hash=5788d57586\n istiod-asm-1264-1-5788d57586-vsklm 1/1 Running 1 23h app=istiod,istio.io/rev=asm-1264-1,istio=istiod,pod-template-hash=5788d57586\n ```\n\n In the output, under the `LABELS` column, note the value of the `istiod`\n revision label, which follows the prefix `istio.io/rev=`. In this\n example, the value is `asm-1264-1`.\n\n\n | **Note:** You can substitute `istio.io/rev` with the `istio-injection=enabled` label if the [default tag](https://istio.io/latest/docs/setup/upgrade/canary/#default-tag) is configured. Verify the default tag exists by running ` istioctl tag list` with the `istioctl` from \u003cvar translate=\"no\"\u003eOUTPUT_DIR\u003c/var\u003e.\n\n \u003cbr /\u003e\n\n2. Apply the revision label to namespaces and remove the istio-injection label\n (if it exists). In the following command, \u003cvar translate=\"no\"\u003eNAMESPACE\u003c/var\u003e is\n the name of the namespace where you want to enable auto-injection, and\n \u003cvar translate=\"no\"\u003eREVISION\u003c/var\u003e is the revision label you noted in the\n previous step.\n\n kubectl label namespace \u003cvar translate=\"no\"\u003eNAMESPACE\u003c/var\u003e istio-injection- istio.io/rev=\u003cvar translate=\"no\"\u003eREVISION\u003c/var\u003e --overwrite\n\n\n You can ignore the message `\"istio-injection not found\"` in the\n output. That means that the namespace didn't previously have the\n `istio-injection` label, which you should expect in new\n installations of Cloud Service Mesh or new deployments. Because auto-injection\n behavior is undefined when a namespace has both the `istio-injection`\n and the revision label, all `kubectl label` commands in the\n Cloud Service Mesh documentation explicitly ensure that only one is set.\n3. Restart the affected pods, using the steps in the next section.\n\nManaged service mesh\n\n1. Use the following command to locate the available release channels:\n\n kubectl -n istio-system get controlplanerevision\n\n The output is similar to the following: \n\n NAME AGE\n asm-managed 6d7h\n\n In the output, select the value under the `NAME` column is the\n \u003cvar translate=\"no\"\u003eREVISION\u003c/var\u003e label that corresponds to the available\n [release channel](/service-mesh/docs/managed/select-a-release-channel#anthos_service_mesh_versions_per_channel)\n for the Cloud Service Mesh version. Apply this label to your namespaces, and\n remove the `istio-injection` label (if it exists).\n In the following command, replace \u003cvar translate=\"no\"\u003eREVISION\u003c/var\u003e with the\n revision label you noted above, and replace\n \u003cvar translate=\"no\"\u003eNAMESPACE\u003c/var\u003e` ` with the name of the namespace where you\n want to enable auto-injection: \n\n kubectl label namespace \u003cvar translate=\"no\"\u003eNAMESPACE\u003c/var\u003e istio-injection- istio.io/rev=\u003cvar translate=\"no\"\u003eREVISION\u003c/var\u003e --overwrite\n\n\n You can ignore the message `\"istio-injection not found\"` in the\n output. That means that the namespace didn't previously have the\n `istio-injection` label, which you should expect in new\n installations of Cloud Service Mesh or new deployments. Because auto-injection\n behavior is undefined when a namespace has both the `istio-injection`\n and the revision label, all `kubectl label` commands in the\n Cloud Service Mesh documentation explicitly ensure that only one is set.\n2. Restart the affected pods, using the steps in the next section.\n\n3. If you also deployed the optional\n [Google-managed data plane](/service-mesh/docs/managed/provision-managed-anthos-service-mesh#managed-data-plane),\n annotate the `demo` namespace as follows:\n\n kubectl annotate --overwrite namespace \u003cvar translate=\"no\"\u003eYOUR_NAMESPACE\u003c/var\u003e \\\n mesh.cloud.google.com/proxy='{\"managed\":\"true\"}'\n\nRestart Pods to update sidecar proxies **Warning:** Unless you have a load balancer or router setup for [blue-green deployments](https://martinfowler.com/bliki/BlueGreenDeployment.html), make sure you test restarting Pods in a staging environment to verify that your services can handle any potential traffic interruption.\n\nWith automatic sidecar injection, you can update the sidecars for existing Pods\nwith a Pod restart:\n\nHow you restart Pods depends on if they were created as part of a\n[Deployment](https://kubernetes.io/docs/concepts/workloads/controllers/deployment/).\n\n1. If you used a Deployment, restart the Deployment, which restarts all Pods\n with sidecars:\n\n ```\n kubectl rollout restart deployment -n YOUR_NAMESPACE\n ```\n\n If you didn't use a Deployment, delete the Pods, and they are automatically\n recreated with sidecars: \n\n ```\n kubectl delete pod -n YOUR_NAMESPACE --all\n ```\n2. Check that all the Pods in the namespace have sidecars injected:\n\n ```\n kubectl get pod -n YOUR_NAMESPACE\n ```\n\n In the following example output from the previous command, notice that the\n `READY` column indicates there are two containers for each of your\n workloads: the primary container and the container for the sidecar proxy. \n\n ```\n NAME READY STATUS RESTARTS AGE\n YOUR_WORKLOAD 2/2 Running 0 20s\n ...\n ```\n\nWhat's next\n\nLearn more about:\n\n- [Cloud Service Mesh control plane revisions](/service-mesh/v1.20/docs/revisions-overview)\n- [Deploying workloads](/kubernetes-engine/docs/how-to/deploying-workloads-overview)\n- [Customizing injection](https://istio.io/latest/docs/setup/additional-setup/sidecar-injection/#customizing-injection)"]]