Como injetar proxies sidecar

O Anthos Service Mesh usa proxies sidecar para aumentar 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 Anthos 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 Anthos 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 Anthos Service Mesh.

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 injetar seus pods com o proxy secundário, configure a injeção automática rotulando os namespaces com o mesmo rótulo de revisão definido em istiod quando o Anthos Service Mesh foi instalado.

Para ativar a injeção automática:

  1. 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
    

    A resposta será semelhante a:

    NAME                                READY   STATUS    RESTARTS   AGE   LABELS
    istiod-asm-178-10-5788d57586-bljj4   1/1     Running   0          23h   app=istiod,istio.io/rev=asm-178-10,istio=istiod,pod-template-hash=5788d57586
    istiod-asm-178-10-5788d57586-vsklm   1/1     Running   1          23h   app=istiod,istio.io/rev=asm-178-10,istio=istiod,pod-template-hash=5788d57586

    Na saída, na coluna LABELS, observe o valor do rótulo de revisão istiod, que segue o prefixo istio.io/rev=. Neste exemplo, o valor é asm-178-10.

  2. 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.

    kubectl label namespace NAMESPACE  istio-injection- istio.io/rev=REVISION --overwrite
    

    Se vir "istio-injection not found" na saída, poderá ignorá-la. Isso significa que o namespace não tinha o rótulo istio-injection anteriormente. Para novas instalações do Anthos Service Mesh ou para novas implantações, seus namespaces não terão o rótulo istio-injection. Se um namespace tiver o rótulo istio-injection, ele precisará ser removido para ativar a injeção automática.

  3. Reinicie os pods afetados usando as etapas da próxima seção.

Reinicie os pods para atualizar proxies sidecar

Com a injeção automática de sidecar, é possível reiniciar os pods para atualizar os sidecars deles:

A maneira como você reinicia os pods depende se foram criados como parte de uma implantação.

  1. Se você usou uma implantação, reinicie-a. Isso reinicia todos os pods com sidecars:

    kubectl rollout restart deployment -n YOUR_NAMESPACE

    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
  2. 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
    ...
    

A seguir

Saiba mais sobre estas situações: