Todos os produtos
Search
Central de documentação

Alibaba Cloud Service Mesh:Configure sidecar proxies

Última atualização: Aug 27, 2026

A injeção de proxies sidecar nos contêineres de aplicação em um cluster aumenta a segurança de rede, a confiabilidade e a observabilidade das invocações de service. Configure parâmetros do proxy sidecar, como recursos, ciclos de vida, políticas de interceptação de tráfego e capacidades de observabilidade, conforme as necessidades do seu negócio. Este tópico descreve como configurar proxies sidecar e detalha os parâmetros relacionados.

Pré-requisitos

Níveis de configuração do proxy sidecar

Os diferentes níveis de configuração do proxy sidecar representam escopos e prioridades distintos. Em ordem crescente de prioridade, os níveis são: global, namespace, workload e escopo de Pod.

Configure o mesmo proxy sidecar em diferentes níveis, dependendo dos requisitos do negócio. O ASM determina quais parâmetros terão efeito final na injeção do proxy sidecar com base na prioridade de cada nível. Por exemplo, se você configurar o mesmo proxy sidecar tanto no nível de namespace quanto no nível global, e a configuração de namespace se aplicar ao namespace padrão, ao implantar uma nova workload nesse namespace, o proxy sidecar injetado usará os parâmetros do nível de namespace, pois esse nível tem prioridade superior à do nível global.

Nível de configuração do proxy sidecar

Descrição

Global

A configuração do proxy sidecar entra em vigor globalmente. Ela é aplicada a todos os Pods durante a injeção dos proxies sidecar.

Namespace

A configuração do proxy sidecar entra em vigor em um namespace específico. Ela é aplicada apenas aos Pods desse namespace durante a injeção dos proxies sidecar. Para configurar um proxy sidecar neste nível, selecione um namespace.

Workload

A configuração do proxy sidecar entra em vigor em workloads específicas. Ela é aplicada apenas às workloads selecionadas pelo seletor de rótulos especificado durante a injeção dos proxies sidecar. Para configurar um proxy sidecar neste nível, especifique um seletor de rótulos de workload para determinar quais workloads receberão a configuração.

Escopo de Pod

As configurações de proxy sidecar neste nível não podem ser feitas pelo console do ASM. Configure-as adicionando anotações aos Pods. Para mais informações, consulte Configure Sidecar Proxy using annotations.

Procedimento

As seções a seguir descrevem como configurar proxies sidecar em diferentes níveis. Para que uma nova configuração de proxy sidecar entre em vigor em uma workload, reimplante os Pods. Para mais informações, consulte Redeploy the workload.

Nível global

  1. Faça login no console do ASM. No painel de navegação à esquerda, escolha Service Mesh > Mesh Management.

  2. Na página Mesh Management, clique em no nome da instância do ASM. No painel de navegação à esquerda, escolha Data Plane Component Management > Configure the agent parameters of the injected Sidecar.

  3. Na página Configure the agent parameters of the injected Sidecar, clique em na aba global, configure os parâmetros do sidecar conforme necessário e clique em Update Settings.

    Para mais informações sobre os parâmetros do proxy sidecar, consulte Sidecar proxy parameters.

  4. Verifique se a configuração do proxy sidecar entrou em vigor.

    1. No painel de navegação à esquerda, escolha Instance Information > Basic Information.

    2. Na seção Basic Information, verifique o Status da malha.

      Se o Status for Running, a configuração do proxy sidecar no nível global entrou em vigor.

Nível de namespace

  1. Faça login no console do ASM. No painel de navegação à esquerda, escolha Service Mesh > Mesh Management.

  2. Na página Mesh Management, clique em no nome da instância do ASM. No painel de navegação à esquerda, escolha Data Plane Component Management > Configure the agent parameters of the injected Sidecar.

  3. Na página Configure the agent parameters of the injected Sidecar, clique em na aba Namespace, selecione o Namespace onde a configuração deve entrar em vigor, clique em na configuração de sidecar desejada, selecione e configure os parâmetros necessários e clique em Update Settings.

    Como o nível de namespace não é o nível mais baixo de configuração do proxy sidecar, nenhum parâmetro possui valor padrão. Por padrão, os parâmetros usam a configuração do nível global. Após clicar em Update Settings, a configuração do proxy sidecar no nível de namespace entra em vigor imediatamente. Para mais informações sobre os parâmetros do proxy sidecar, consulte Sidecar proxy parameters.

Nível de workload

No mesmo namespace, é possível crie múltiplas configurações de proxy sidecar no nível de workload, aplicáveis a diferentes workloads.

  1. Faça login no console do ASM. No painel de navegação à esquerda, escolha Service Mesh > Mesh Management.

  2. Na página Mesh Management, clique em no nome da instância do ASM. No painel de navegação à esquerda, escolha Data Plane Component Management > Configure the agent parameters of the injected Sidecar.

  3. Na página Configure the agent parameters of the injected Sidecar, clique em na aba workload e clique em Create.

  4. Na aba workload, selecione o Namespace onde a configuração deve entrar em vigor, especifique o Name da configuração de proxy sidecar no nível de workload, crie um seletor de rótulos que corresponda aos rótulos da workload em Match Label, clique em na configuração de sidecar desejada, selecione e configure os parâmetros necessários e clique em Create.

    Como o nível de workload não é o nível mais baixo de configuração do proxy sidecar, nenhum parâmetro possui valor padrão. Por padrão, os parâmetros usam a configuração do nível global. Após clicar em Create, a configuração do proxy sidecar no nível de workload é criada imediatamente. Para mais informações sobre os parâmetros do proxy sidecar, consulte Sidecar proxy parameters.

Após criar a configuração, você também pode atualize-a ou exclua-a.

  • Atualizar uma configuração de proxy sidecar no nível de workload: Na aba workload, localize a configuração de proxy sidecar desejada e clique em Update na coluna Actions. Modifique a configuração de Match Label e do proxy sidecar conforme necessário e clique em Update.

  • Excluir uma configuração de proxy sidecar no nível de workload: Na aba workload, localize a configuração de proxy sidecar desejada e clique em Delete na coluna Actions. Em seguida, na caixa de diálogo Confirm, clique em OK.

Nível de escopo de Pod

Para aplicar uma configuração de proxy sidecar no nível de escopo de Pod, configure anotações específicas para o Pod. Para mais informações, consulte Configure Sidecar Proxy using annotations.

(Opcional) Reimplantar a workload

A configuração de um Pod já implantado não pode ser alterada, portanto, sua configuração de proxy sidecar não entra em vigor imediatamente. Assim, após configurar um proxy sidecar, reimplante os Pods. Após a reimplantação, os proxies sidecar injetados nos Pods usarão a nova configuração.

  1. Faça login no console do ACK. No painel de navegação à esquerda, clique em Clusters.

  2. Na página Clusters, clique em no nome do seu cluster. No painel de navegação à esquerda, clique em Workloads > Deployments.

  3. Na página Deployments, execute uma das operações a seguir para reimplantar workloads.

    Cenário

    Ação

    Uma única workload

    Na coluna Actions, escolha More > Redeploy para a workload desejada. Em seguida, na caixa de diálogo Redeploy , clique em OK.

    Múltiplas workloads

    Na coluna Name, selecione várias workloads desejadas e clique em Batch Redeploy na parte inferior da página. Depois, na caixa de diálogo Confirm, clique em OK.

Versões mínimas necessárias para parâmetros do proxy sidecar

Os recursos suportados por diferentes versões do ASM podem variar. Na maioria dos casos, proxies sidecar de versões mais recentes do ASM oferecem mais recursos e parâmetros do que versões anteriores. Se você não encontrar um parâmetro de proxy sidecar, consulte a tabela a seguir para verificar se é necessário atualize a versão do ASM. Para mais informações sobre como atualize a versão do ASM, consulte Upgrade an ASM instance.

Na coluna Parameter da tabela abaixo, clique em em um link para visualize a descrição e o exemplo de configuração do parâmetro.

Importante

Se sua instância do ASM executa a versão 1,22 ou posterior e seu cluster de plano de dados executa a versão 1,30 ou posterior, o proxy sidecar é implantado como um contêiner sidecar nativo. Nesse caso, o cluster Kubernetes gerencie diretamente o ciclo de vida do contêiner do proxy sidecar e substitui todos os parâmetros de gerenciamento de ciclo de vida do proxy sidecar.

Tipo

Parâmetro

Nível global

Nível de namespace

Nível de workload

Configurações de recursos

Resource settings for injected Istio proxies

Todas as versões

1.10.5.34

1.13.4.20

Configure sidecar resources by percentage

1.24.6.83

Resource settings for the istio-init init container

1.9.7.93

1.10.5.34

1.13.4.20

ACK dynamic oversold resources for sidecars

1.16.3.47

1.16.3.47

1.16.3.47

Istio-Proxy concurrency

1.15.3.104

1.12.4.19

1.13.4.20

Ativar ou desativar o proxy sidecar por porta ou endereço

Address ranges for intercepting outbound traffic

Todas as versões

1.10.5.34

1.13.4.20

Address ranges excluded from outbound traffic interception

Todas as versões

1.10.5.34

1.13.4.20

Ports that route inbound traffic through the sidecar proxy

1.15.3.104

1.10.5.34

1.13.4.20

Ports that route outbound traffic through the sidecar proxy

1.15.3.104

1.10.5.34

1.13.4.20

Ports that bypass the sidecar proxy for inbound traffic

Todas as versões

1.10.5.34

1.13.4.20

Ports that bypass the sidecar proxy for outbound traffic

Todas as versões

1.10.5.34

1.13.4.20

Recurso de proxy DNS

Enable the DNS proxy feature

1.8.3.17

1.10.5.34

1.13.4.20

Gerenciamento de variáveis de ambiente do proxy sidecar

Graceful termination of sidecar proxies (EXIT_ON_ZERO_ACTIVE_CONNECTIONS)

1.15.3.104

1.15.3.104

1.15.3.104

Gerenciamento de ciclo de vida

Graceful startup of sidecar proxies (HoldApplicationUntilProxyStarts)

1.15.3.104

1.12.4.58

1.13.4.20

Sidecar proxy termination drain duration

1.9.7.93

1.10.5.34

1.13.4.20

Sidecar proxy lifecycle

1.9.7.93

1.10.5.34

1.13.4.20

Política de acesso para serviços externos

Access policy for external services: OutboundTrafficPolicy

Todas as versões

1.10.5.34

1.13.4.20

Política de interceptação de tráfego de entrada do sidecar

Sidecar inbound traffic interception policy

1.15.3.25

1.15.3.25

1.15.3.25

Monitoramento e estatísticas

Log level

1.15.3.104

1.12.4.58

1.13.4.20

proxyStatsMatcher

1.15.3.104

1.12.4.58

1.13.4.20

Parâmetros de runtime do Envoy

Downstream connection limit

1.21.6.95

1.21.6.95

1.21.6.95

Parâmetros do proxy sidecar

Configure o uso de recursos, políticas de interceptação de tráfego, proxy DNS e ciclo de vida dos proxies sidecar. As seções a seguir descrevem os parâmetros do proxy sidecar e fornecem exemplos de configuração.

Configurações de recursos para proxies Istio injetados

Expandir para ver a descrição e o exemplo de configuração de recursos para proxies Istio injetados

Descrição do parâmetro

Este parâmetro especifica os recursos mínimos de CPU e memória que o contêiner do proxy sidecar requer em tempo de execução e os recursos máximos de CPU e memória que o contêiner pode solicitar.

Parâmetro

Descrição

Limits on Resources

Os recursos máximos de CPU e memória que o contêiner do proxy sidecar pode solicitar. Os recursos de CPU são medidos em núcleos e os recursos de memória em MiB.

Required Resources

Os recursos mínimos de CPU e memória que o contêiner do proxy sidecar requer em tempo de execução. Os recursos de CPU são medidos em núcleos e os recursos de memória em MiB.

Exemplo de configuração

  1. Na página Configure the agent parameters of the injected Sidecar, clique em na aba correspondente ao nível de configuração do proxy sidecar desejado e clique em Resource Settings.

  2. (Opcional) Na seção Resource Settings, selecione Configure Resources for Injected Sidecar Proxy.

    Esta etapa é obrigatória nas abas Namespace e workload. Pule esta etapa na aba global.

  3. Em Limits on Resources, defina CPU como 2 núcleos e Memory como 1025 MiB. Em Required Resources, defina CPU como 0,1 núcleos e Memory como 128 MiB. Em seguida, clique em Update Settings na parte inferior da página.

  4. Redeploy the workload para que a configuração do proxy sidecar entre em vigor.

  5. Visualize os recursos do proxy Istio configurados.

    kubectl get pod -n <namespace> <pod-name> -o yaml

    Saída esperada:

    apiVersion: v1
    kind: Pod
    ...
    spec:
      containers:
        - args:
            - proxy
    ...
          name: istio-proxy
    ...
          resources:
            limits:
              cpu: '2'
              memory: 1025Mi
            requests:
              cpu: 100m
              memory: 128Mi
    ...

    O contêiner istio-proxy é o contêiner do proxy sidecar. Se o campo resources do contêiner chamado istio-proxy no Pod estiver definido com os valores de recurso alvo, a configuração Configure Resources for Injected Sidecar Proxy entrou em vigor.

Configurar recursos do sidecar por porcentagem

Expandir para ver a descrição e o exemplo de configuração de recursos do sidecar por porcentagem

Descrição do parâmetro

Este parâmetro calcula automaticamente os recursos do sidecar com base nos contêineres de aplicação. Ativar este parâmetro substitui as Resource settings for injected Istio proxies. Esse recurso aloca recursos aos sidecars com base na configuração máxima de recursos dos contêineres de aplicação, permitindo que os recursos do sidecar sejam ajustados dinamicamente para diferentes Pods. As seguintes estratégias de cálculo são suportadas:

  • Recursos máximos do contêiner: O sistema percorre todos os contêineres no Pod e usa o maior valor de recurso como base de cálculo.

  • Nome do contêiner especificado: O sistema usa os recursos do contêiner com o nome especificado no Pod como base de cálculo. Para usar essa estratégia, especifique um contêiner como base de cálculo. Se o contêiner especificado não for encontrado no Pod, serão usados os recursos do sidecar configurados em Resource settings for injected Istio proxies. Além disso, se o Pod contiver a anotação scaled-resource.inject.istio.alibabacloud.com/container-ref, o contêiner definido na anotação terá precedência como base de cálculo.

Importante

Independentemente da estratégia selecionada:

  • Se o contêiner usado como base de cálculo não tiver limits configurado, o sistema considera os recursos do sidecar ilimitados e não configura limits para o sidecar.

  • Se o contêiner usado como base de cálculo não tiver requests configurado, o sistema aloca os recursos mínimos viáveis ao sidecar para garantir seu funcionamento normal. Nesse caso, o recurso de CPU em requests não será inferior a 100m e o recurso de memória não será inferior a 128Mi.

  • Recursos mínimos exigidos por um sidecar: O recurso de CPU em requests e limits não pode ser inferior a 100m, e o recurso de memória não pode ser inferior a 128Mi. Se os recursos calculados forem inferiores aos recursos mínimos exigidos pelo sidecar, os recursos do sidecar serão definidos com os valores mínimos.

Exemplo de configuração

Os exemplos a seguir mostram os efeitos reais de diferentes porcentagens de recursos em diferentes cenários. A configuração de exemplo do contêiner é a seguinte:

Configuração normal de aplicação

resources:
  requests:
    cpu: 300m
    memory: 512Mi
  limits:
    cpu: 500m
    memory: 1Gi

Sem requests configurado

resources:
  limits:
    cpu: 500m
    memory: 1Gi

Sem limits configurado

resources:
  requests:
    cpu: 300m
    memory: 512Mi
  1. Na página Configure the agent parameters of the injected Sidecar, clique em na aba correspondente ao nível de configuração do proxy sidecar desejado e clique em Resource Settings.

  2. Na seção Resource Settings, selecione Configure sidecar resources by ratio.

  3. Configure a Proportion of Resources, selecione a Computing Policy (opcional) e clique em Update Settings.

    Selecione a estratégia de cálculo de Maximum Resource Capacity ou Specify a container name. conforme suas necessidades.

  4. Redeploy the workload para que a configuração do proxy sidecar entre em vigor.

  5. Visualize os recursos do proxy Istio configurados.

    kubectl get pod -n <namespace> <pod-name> -o yaml

    Saída esperada:

    Configuração normal de aplicação

    Configuração normal

    Se a porcentagem de recursos for definida como 50, o que significa que o sidecar obtém 50% dos recursos configurados para o contêiner de aplicação, a alocação final de recursos do sidecar será:

    ...
    resources:
      requests:
        cpu: 150m
        memory: 256Mi
      limits:
        cpu: 250m
        memory: 512Mi

    Configuração mínima

    Se a porcentagem de recursos for definida como 20, o que significa que o sidecar obtém 20% dos recursos configurados para o contêiner de aplicação, a alocação final de recursos do sidecar será:

    ...
    resources:
      requests:
        cpu: 100m
        memory: 128Mi
      limits:
        cpu: 100m
        memory: 204Mi

    Sem requests configurado

    Se a porcentagem de recursos for definida como 50, o que significa que o sidecar obtém 50% dos recursos configurados para o contêiner de aplicação, a alocação final de recursos do sidecar será:

    ...
    resources:
      requests:
        cpu: 100m
        memory: 128Mi
      limits:
        cpu: 250m
        memory: 512Mi

    Sem limits configurado

    Se a porcentagem de recursos for definida como 50, o que significa que o sidecar obtém 50% dos recursos configurados para o contêiner de aplicação, a alocação final de recursos do sidecar será:

    ...
    resources:
      requests:
        cpu: 150m
        memory: 256Mi

Configurações de recursos para o contêiner init istio-init

Expandir para ver a descrição e o exemplo de configuração de recursos para o contêiner init istio-init

Descrição do parâmetro

Este parâmetro especifica os recursos mínimos de CPU e memória que o contêiner istio-init requer em tempo de execução e os recursos máximos de CPU e memória que o contêiner pode solicitar em Pods nos quais proxies sidecar são injetados. O contêiner istio-init é um contêiner de inicialização executado quando um Pod com um proxy sidecar injetado é iniciado. Ele configura regras de roteamento de interceptação de tráfego para o contêiner do proxy sidecar.

Parâmetro

Descrição

Limits on Resources

Os recursos máximos de CPU e memória que o contêiner istio-init pode solicitar. Os recursos de CPU são medidos em núcleos e os recursos de memória em MiB.

Required Resources

Os recursos mínimos de CPU e memória que o contêiner istio-init requer em tempo de execução. Os recursos de CPU são medidos em núcleos e os recursos de memória em MiB.

Exemplo de configuração

  1. Na página Configure the agent parameters of the injected Sidecar, clique em na aba correspondente ao nível de configuração do proxy sidecar desejado e clique em Resource Settings.

  2. (Opcional) Na seção Resource Settings, selecione Configure Resources for istio-init Container.

    Esta etapa é obrigatória nas abas Namespace e workload. Pule esta etapa na aba global.

  3. Em Limits on Resources, defina CPU como 1 núcleo e Memory como 512 MiB. Em Required Resources, defina CPU como 0,1 núcleos e Memory como 128 MiB. Em seguida, clique em Update Settings na parte inferior da página.

  4. Redeploy the workload para que a configuração do proxy sidecar entre em vigor.

  5. Visualize os recursos do contêiner init istio-init configurados.

    kubectl get pod -n <namespace> <pod-name> -o yaml

    Saída esperada:

    apiVersion: v1
    kind: Pod
    ...
    spec:
    ...
      initContainers:
        - args:
    ...
          name: istio-init
          resources:
            limits:
              cpu: '1'
              memory: 512Mi
            requests:
              cpu: 100m
              memory: 128Mi
    ...

    Se o campo resources do contêiner init chamado istio-init no Pod estiver definido com os valores de recurso alvo, a configuração Configure Resources for istio-init Container entrou em vigor.

Recursos dinâmicos overcommit do ACK para sidecars

Expandir para ver a descrição e o exemplo de configuração de recursos dinâmicos overcommit do ACK para sidecars

Descrição do parâmetro

Este parâmetro especifica os recursos dinâmicos overcommit do ACK alocados ao proxy Istio injetado e ao contêiner init istio-init. Para mais informações sobre recursos dinâmicos overcommit, consulte Enable dynamic resource overcommitment.

Este parâmetro é configurado da mesma forma que as Resource settings for injected Istio proxies e as Resource settings for the istio-init init container. Após a configuração, se um Pod tiver o label koordinator.sh/qosClass de recursos dinâmicos overcommit do ACK, recursos dinâmicos overcommit do ACK serão alocados ao proxy Istio e ao contêiner init istio-init no Pod, em vez de recursos regulares de CPU e memória do Kubernetes.

Nota

Ao configurar recursos dinâmicos overcommit do ACK para sidecars, os recursos de CPU são medidos em milinúcleos.

Exemplo de configuração

  1. Na página Configure the agent parameters of the injected Sidecar, clique em na aba correspondente ao nível de configuração do proxy sidecar desejado, clique em Resource Settings, selecione Set ACK Resources That Can Be Dynamically Overcommitted for Sidecar Proxy, configure os parâmetros relacionados e clique em Update Settings na parte inferior da página.

    Parâmetro

    Subparâmetro

    Descrição

    Configure Resources for Injected Sidecar Proxy (ACK Dynamically Overcommitted Resources)

    Limits on Resources

    Defina CPU como 2000 milinúcleos e Memory como 2048 MiB.

    Required Resources

    Defina CPU como 200 milinúcleos e Memory como 256 MiB.

    istio-init container resource (ACK dynamic oversold resource)

    Limits on Resources

    Defina CPU como 1000 milinúcleos e Memory como 1024 MiB.

    Required Resources

    Defina CPU como 100 milinúcleos e Memory como 128 MiB.

  2. Redeploy the workload para que a configuração do proxy sidecar entre em vigor.

  3. Execute o comando a seguir para visualize os recursos do contêiner init istio-init configurados.

    kubectl get pod -n <namespace> <pod-name> -o yaml

    Saída esperada:

    apiVersion: v1
    kind: Pod
    metadata:
    ...
      labels:
        koordinator.sh/qosClass: BE
    spec:
      containers:
        - args:
    ...
          name: istio-proxy
    ...
          resources:
            limits:
              kubernetes.io/batch-cpu: 2k
              kubernetes.io/batch-memory: 2Gi
            requests:
              kubernetes.io/batch-cpu: '200'
              kubernetes.io/batch-memory: 256Mi
    ...
      initContainers:
        - args:
    ...
          name: istio-init
          resources:
            limits:
              kubernetes.io/batch-cpu: 1k
              kubernetes.io/batch-memory: 1Gi
            requests:
              kubernetes.io/batch-cpu: '100'
              kubernetes.io/batch-memory: 128Mi
    ...

    O contêiner istio-proxy (contêiner do proxy Istio) e o contêiner init istio-init no Pod contêm o campo resources definido com os valores de recurso alvo. Isso indica que a configuração Set ACK Resources That Can Be Dynamically Overcommitted for Sidecar Proxy entrou em vigor.

Concorrência do Istio-Proxy

Expandir para ver a descrição e o exemplo de configuração de concorrência do Istio-Proxy

Descrição do parâmetro

Este parâmetro especifica o número de threads de trabalho do contêiner do proxy sidecar. Especifique um número inteiro não negativo como o número de threads de trabalho. Se você definir este parâmetro como 0, o número de threads de trabalho será determinado automaticamente com base nos recursos de CPU solicitados ou no limite de recursos de CPU configurado para o proxy sidecar. O limite de recursos tem precedência sobre os recursos solicitados.

Exemplo de configuração

  1. Na página Configure the agent parameters of the injected Sidecar, clique em na aba correspondente ao nível de configuração do proxy sidecar desejado e clique em Resource Settings.

  2. (Opcional) Na seção Resource Settings, selecione Number of Sidecar Proxy Threads.

    Esta etapa é obrigatória nas abas Namespace e workload. Pule esta etapa na aba global.

  3. Defina Number of Sidecar Proxy Threads como 3 e clique em Update Settings na parte inferior da página.

    Essa configuração indica que o contêiner do proxy sidecar executa três threads de trabalho em tempo de execução.

  4. Redeploy the workload para que a configuração do proxy sidecar entre em vigor.

  5. Execute o comando a seguir para visualize a concorrência do Istio-Proxy configurada.

    kubectl get pod -n <namespace> <pod-name> -o yaml

    Saída esperada:

    apiVersion: v1
    kind: Pod
    ...
    spec:
    ...
        - args:
            - proxy
            - sidecar
            - '--domain'
            - $(POD_NAMESPACE).svc.cluster.local
            - '--proxyLogLevel=warning'
            - '--proxyComponentLogLevel=misc:error'
            - '--log_output_level=default:info'
            - '--concurrency'
            - '3'
    ...
          name: istio-proxy
    ...

    O parâmetro concurrency do contêiner istio-proxy está definido como 3. Isso indica que a configuração Number of Sidecar Proxy Threads entrou em vigor.

Intervalos de endereços para interceptação de tráfego de saída

Expandir para ver a descrição e o exemplo de configuração de intervalos de endereços para interceptação de tráfego de saída

Descrição do parâmetro

Especifique uma lista de intervalos de endereços IP separados por vírgulas (,). Cada intervalo de endereços IP deve estar em notação CIDR. Quando uma workload com um proxy sidecar injetado acessa outros serviços, apenas as solicitações cujos endereços IP de destino estejam dentro dos intervalos de endereços configurados são interceptadas pelo contêiner do proxy sidecar. Outras solicitações são enviadas diretamente aos destinos sem passar pelo proxy sidecar. Por padrão, este parâmetro é definido como *, o que indica que o contêiner do proxy sidecar intercepta todo o tráfego de saída da workload.

Exemplo de configuração

  1. Na página Configure the agent parameters of the injected Sidecar, clique em na aba correspondente ao nível de configuração do proxy sidecar desejado e clique em Enable/Disable Sidecar Proxy by Ports or IP Addresses.

  2. (Opcional) Na seção Enable/Disable Sidecar Proxy by Ports or IP Addresses, selecione Addresses to Which External Access Is Redirected to Sidecar Proxy.

    Esta etapa é obrigatória nas abas Namespace e workload. Pule esta etapa na aba global.

  3. Defina Addresses to Which External Access Is Redirected to Sidecar Proxy como 192.168.0.0/16,10.1.0.0/24 e clique em Update Settings na parte inferior da página.

    Essa configuração indica que o contêiner do proxy sidecar intercepta solicitações cujos endereços IP de destino estejam dentro dos dois blocos CIDR 192.168.0.0/16 e 10.1.0.0/24.

  4. Redeploy the workload para que a configuração do proxy sidecar entre em vigor.

  5. Execute o comando a seguir para visualize os intervalos de endereços para interceptação de tráfego de saída configurados.

    kubectl get pod -n <namespace> <pod-name> -o yaml

    Saída esperada:

    apiVersion: v1
    kind: Pod
    ...
    spec:
    ...
      initContainers:
        - args:
            - istio-iptables
            - '-p'
            - '15001'
            - '-z'
            - '15006'
            - '-u'
            - '1337'
            - '-m'
            - REDIRECT
            - '-i'
            - '192.168.0.0/16,10.1.0.0/24'
            - '-x'
            - 192.168.0.1/32
            - '-b'
            - '*'
            - '-d'
            - '15090,15021,15081,9191,15020'
            - '--log_output_level=default:info'
    ...
          name: istio-init
    ...

    Os parâmetros de runtime do contêiner istio-init incluem -i 192.168.0.0/16,10.1.0.0/24. Isso indica que a configuração Addresses to Which External Access Is Redirected to Sidecar Proxy entrou em vigor.

Intervalos de endereços excluídos da interceptação de tráfego de saída

Expandir para ver a descrição e o exemplo de configuração de intervalos de endereços excluídos da interceptação de tráfego de saída

Descrição do parâmetro

Especifique uma lista de intervalos de endereços IP separados por vírgulas (,). Cada intervalo de endereços IP deve estar em notação CIDR. Quando uma workload com um proxy sidecar injetado acessa outros serviços, o contêiner do proxy sidecar intercepta o tráfego de saída. Se o endereço IP de destino de uma solicitação estiver dentro de um bloco CIDR configurado para este parâmetro, a solicitação não será interceptada pelo contêiner do proxy sidecar.

Importante

Se os intervalos de endereços excluídos da interceptação de tráfego de saída contiverem o endereço especificado em Addresses to Which External Access Is Redirected to Sidecar Proxy, as solicitações para esse endereço não serão interceptadas pelo proxy sidecar. Para mais informações, consulte Address ranges for intercepting outbound traffic.

Exemplo de configuração

  1. Na página Configure the agent parameters of the injected Sidecar, clique em na aba correspondente ao nível de configuração do proxy sidecar desejado e clique em Enable/Disable Sidecar Proxy by Ports or IP Addresses.

  2. (Opcional) Na seção Enable/Disable Sidecar Proxy by Ports or IP Addresses, selecione Addresses to Which External Access Is Not Redirected to Sidecar Proxy.

    Esta etapa é obrigatória nas abas Namespace e workload. Pule esta etapa na aba global.

  3. Defina Addresses to Which External Access Is Not Redirected to Sidecar Proxy como 10.1.0.0/24 e clique em Update Settings na parte inferior da página.

    Essa configuração indica que o contêiner do proxy sidecar não intercepta solicitações cujos endereços IP de destino estejam dentro do bloco CIDR 10.1.0.0/24.

  4. Redeploy the workload para que a configuração do proxy sidecar entre em vigor.

  5. Execute o comando a seguir para visualize os intervalos de endereços excluídos da interceptação de tráfego de saída configurados.

    kubectl get pod -n <namespace> <pod-name> -o yaml

    Saída esperada:

    apiVersion: v1
    kind: Pod
    ...
    spec:
    ...
      initContainers:
        - args:
            - istio-iptables
            - '-p'
            - '15001'
            - '-z'
            - '15006'
            - '-u'
            - '1337'
            - '-m'
            - REDIRECT
            - '-i'
            - '*'
            - '-x'
            - '192.168.0.1/32,10.1.0.0/24'
            - '-b'
            - '*'
            - '-d'
            - '15090,15021,15081,9191,15020'
            - '--log_output_level=default:info'
    ...
          name: istio-init
    ...

    Os parâmetros de runtime do contêiner istio-init incluem -x 192.168.0.1/32,10.1.0.0/24. 192.168.0.1/32 é o bloco CIDR de endereço de host padrão. 10.1.0.0/24 corresponde ao intervalo de endereços IP configurado para o proxy sidecar. Isso indica que a configuração Addresses to Which External Access Is Not Redirected to Sidecar Proxy entrou em vigor.

Portas que roteiam tráfego de entrada através do proxy sidecar

Expandir para ver a descrição e o exemplo de configuração de portas que roteiam tráfego de entrada através do proxy sidecar

Descrição do parâmetro

Especifique uma lista de portas separadas por vírgulas (,). O tráfego destinado às portas na lista é interceptado pelo contêiner do proxy sidecar. Por padrão, este parâmetro é definido como *, o que indica que o contêiner do proxy sidecar intercepta todo o tráfego de entrada da workload.

Exemplo de configuração

  1. Na página Configure the agent parameters of the injected Sidecar, clique em na aba correspondente ao nível de configuração do proxy sidecar desejado e clique em Enable/Disable Sidecar Proxy by Ports or IP Addresses.

  2. (Opcional) Na seção Enable/Disable Sidecar Proxy by Ports or IP Addresses, selecione Ports on Which Inbound Traffic Redirected to Sidecar Proxy.

    Esta etapa é obrigatória nas abas Namespace e workload. Pule esta etapa na aba global.

  3. Defina Ports on Which Inbound Traffic Redirected to Sidecar Proxy como 80.443 e clique em Update Settings.

    Essa configuração indica que o contêiner do proxy sidecar intercepta apenas as solicitações enviadas para a porta 80 e a porta 443 da workload.

  4. Redeploy the workload para que a configuração do proxy sidecar entre em vigor.

  5. Execute o comando a seguir para visualize as portas de interceptação de tráfego de entrada configuradas.

    kubectl get pod -n <namespace> <pod-name> -o yaml

    Saída esperada:

    apiVersion: v1
    kind: Pod
    ...
    spec:
    ...
      initContainers:
        - args:
            - istio-iptables
            - '-p'
            - '15001'
            - '-z'
            - '15006'
            - '-u'
            - '1337'
            - '-m'
            - REDIRECT
            - '-i'
            - '*'
            - '-x'
            - 192.168.0.1/32
            - '-b'
            - '80,443'
            - '-d'
            - '15090,15021,15081,9191,15020'
            - '--log_output_level=default:info'
    ...
          name: istio-init
    ...
                                

    Os parâmetros de runtime do contêiner istio-init incluem -b 80,443, que corresponde às portas de entrada configuradas para o proxy sidecar. Isso indica que a configuração Ports on Which Inbound Traffic Redirected to Sidecar Proxy entrou em vigor.

Portas que roteiam tráfego de saída através do proxy sidecar

Expandir para ver a descrição e o exemplo de configuração de portas que roteiam tráfego de saída através do proxy sidecar

Descrição do parâmetro

Especifique uma lista de portas separadas por vírgulas (,), que representa as portas de service de destino de todo o tráfego de saída. Solicitações cujas portas de service de destino estejam na lista são interceptadas pelo contêiner do proxy sidecar.

Importante

Se este parâmetro for configurado juntamente com Addresses to Which External Access Is Not Redirected to Sidecar Proxy ou Ports on Which Outbound Traffic Not Redirected to Sidecar Proxy, e o endereço IP de destino de uma solicitação estiver dentro de um bloco CIDR não interceptado ou a porta de service de destino da solicitação estiver na lista de portas não interceptadas, a solicitação não será interceptada pelo proxy sidecar, mesmo que a porta de destino esteja na lista deste parâmetro. Para mais informações, consulte Address ranges excluded from outbound traffic interception e Ports that bypass the sidecar proxy for outbound traffic.

Exemplo de configuração

  1. Na página Configure the agent parameters of the injected Sidecar, clique em na aba correspondente ao nível de configuração do proxy sidecar desejado e clique em Enable/Disable Sidecar Proxy by Ports or IP Addresses.

  2. (Opcional) Na seção Enable/Disable Sidecar Proxy by Ports or IP Addresses, selecione Ports on Which Outbound Traffic Redirected to Sidecar Proxy.

    Esta etapa é obrigatória nas abas Namespace e workload. Pule esta etapa na aba global.

  3. Defina Ports on Which Outbound Traffic Redirected to Sidecar Proxy como 80.443 e clique em Update Settings na parte inferior da página.

    Essa configuração indica que o contêiner do proxy sidecar intercepta solicitações enviadas para serviços na porta 80 e na porta 443.

  4. Redeploy the workload para que a configuração do proxy sidecar entre em vigor.

  5. Execute o comando a seguir para visualize as portas de interceptação de tráfego de saída configuradas.

    kubectl get pod -n <namespace> <pod-name> -o yaml

    Saída esperada:

    apiVersion: v1
    kind: Pod
    ...
    spec:
    ...
      initContainers:
        - args:
            - istio-iptables
            - '-p'
            - '15001'
            - '-z'
            - '15006'
            - '-u'
            - '1337'
            - '-m'
            - REDIRECT
            - '-i'
            - '*'
            - '-x'
            - 192.168.0.1/32
            - '-b'
            - '*'
            - '-d'
            - '15090,15021,15081,9191,15020'
            - '--log_output_level=default:info'
            - '-q'
            - '80,443'
            - '--log_output_level=default:info'
    ...
          name: istio-init
    ...
                                

    Os parâmetros de runtime do contêiner istio-init incluem -q 80,443, que corresponde às portas de saída configuradas para o proxy sidecar. Isso indica que a configuração Ports on Which Outbound Traffic Redirected to Sidecar Proxy entrou em vigor.

Portas que ignoram o proxy sidecar para tráfego de entrada

Expandir para ver a descrição e o exemplo de configuração de portas que ignoram o proxy sidecar para tráfego de entrada

Descrição do parâmetro

Especifique uma lista de portas separadas por vírgulas (,). O tráfego destinado às portas na lista não é interceptado pelo contêiner do proxy sidecar.

Importante

Este parâmetro só entra em vigor quando Ports on Which Inbound Traffic Redirected to Sidecar Proxy está definido como *, o que significa que o contêiner do proxy sidecar intercepta todo o tráfego de entrada por padrão.

Exemplo de configuração

  1. Na página Configure the agent parameters of the injected Sidecar, clique em na aba correspondente ao nível de configuração do proxy sidecar desejado e clique em Enable/Disable Sidecar Proxy by Ports or IP Addresses.

  2. (Opcional) Na seção Enable/Disable Sidecar Proxy by Ports or IP Addresses, selecione Ports on Which Inbound Traffic Not Redirected to Sidecar Proxy.

    Esta etapa é obrigatória nas abas Namespace e workload. Pule esta etapa na aba global.

  3. Defina Ports on Which Inbound Traffic Not Redirected to Sidecar Proxy como 8000 e clique em Update Settings na parte inferior da página.

    Essa configuração indica que o contêiner do proxy sidecar deixa de interceptar solicitações enviadas para a porta 8000 da workload.

  4. Redeploy the workload para que a configuração do proxy sidecar entre em vigor.

  5. Execute o comando a seguir para visualize as portas de bypass de tráfego de entrada configuradas.

    kubectl get pod -n <namespace> <pod-name> -o yaml

    Saída esperada:

    apiVersion: v1
    kind: Pod
    ...
    spec:
    ...
      initContainers:
        - args:
            - istio-iptables
            - '-p'
            - '15001'
            - '-z'
            - '15006'
            - '-u'
            - '1337'
            - '-m'
            - REDIRECT
            - '-i'
            - '*'
            - '-x'
            - 192.168.0.1/32
            - '-b'
            - '*'
            - '-d'
            - '15090,15021,15081,9191,15020,8000'
            - '--log_output_level=default:info'
    ...
          name: istio-init
    ...
                                

    Os parâmetros de runtime do contêiner istio-init incluem -d 15090,15021,15081,9191,8000. As portas 15090,15021,15081,9191 são as portas de aplicação do proxy sidecar e são excluídas da interceptação por padrão. A porta 8000 corresponde às portas de entrada configuradas para o proxy sidecar. Isso indica que a configuração Ports on Which Inbound Traffic Not Redirected to Sidecar Proxy entrou em vigor.

Portas que ignoram o proxy sidecar para tráfego de saída

Expandir para ver a descrição e o exemplo de configuração de portas que ignoram o proxy sidecar para tráfego de saída

Descrição do parâmetro

Especifique uma lista de portas separadas por vírgulas (,), que representa as portas de service de destino de todo o tráfego de saída. Solicitações cujas portas de service de destino estejam na lista não são interceptadas pelo contêiner do proxy sidecar, independentemente de o endereço IP de destino estar dentro dos intervalos de endereços de saída interceptados ou de a porta de destino estar na lista de portas de saída interceptadas.

Exemplo de configuração

  1. Na página Configure the agent parameters of the injected Sidecar, clique em na aba correspondente ao nível de configuração do proxy sidecar desejado e clique em Enable/Disable Sidecar Proxy by Ports or IP Addresses.

  2. (Opcional) Na seção Enable/Disable Sidecar Proxy by Ports or IP Addresses, selecione Ports on Which Outbound Traffic Not Redirected to Sidecar Proxy.

    Esta etapa é obrigatória nas abas Namespace e workload. Pule esta etapa na aba global.

  3. Defina Ports on Which Outbound Traffic Not Redirected to Sidecar Proxy como 8000 e clique em Update Configurations na parte inferior da página.

    Essa configuração indica que o contêiner do proxy sidecar deixa de interceptar solicitações enviadas para serviços na porta 8000.

  4. Redeploy the workload para que a configuração do proxy sidecar entre em vigor.

  5. Execute o comando a seguir para visualize as portas de bypass de tráfego de saída configuradas.

    kubectl get pod -n <namespace> <pod-name> -o yaml

    Saída esperada:

    apiVersion: v1
    kind: Pod
    ...
    spec:
    ...
      initContainers:
        - args:
            - istio-iptables
            - '-p'
            - '15001'
            - '-z'
            - '15006'
            - '-u'
            - '1337'
            - '-m'
            - REDIRECT
            - '-i'
            - '*'
            - '-x'
            - 192.168.0.1/32
            - '-b'
            - '*'
            - '-d'
            - '15090,15021,15081,9191,15020'
            - '--log_output_level=default:info'
            - '-o'
            - '8000'
    ...
          name: istio-init
    ...
                                

    Os parâmetros de runtime do contêiner istio-init incluem -o 8000, que corresponde às portas de saída configuradas para o proxy sidecar. Isso indica que a configuração Ports on Which Outbound Traffic Not Redirected to Sidecar Proxy entrou em vigor.

Ative o recurso de proxy DNS

Expandir para ver a descrição e o exemplo de configuração do recurso de proxy DNS

Descrição do parâmetro

Ative ou desative o recurso de proxy DNS para contêineres de proxy sidecar. Após ative o recurso de proxy DNS, os contêineres de proxy sidecar interceptam as solicitações DNS das workloads para melhorar o desempenho e a disponibilidade do Service Mesh. Todas as solicitações das workloads são redirecionadas para o contêiner do proxy sidecar. Como os contêineres de proxy sidecar armazenam localmente os mapeamentos entre endereços IP e nomes de domínio locais, eles podem retornar respostas DNS diretamente às workloads sem enviar solicitações para serviços DNS remotos. Se uma solicitação DNS não puder ser tratada pelo contêiner do proxy sidecar, o sidecar encaminhará diretamente a solicitação DNS. Para mais informações, consulte Use DNS proxy in ASM.

Importante

Devido a problemas de permissão de rede, o recurso de proxy DNS não pode ser ativado para contêineres de proxy sidecar em clusters ACK com ACK Serverless cluster ou Pods ECI.

Exemplo de configuração

  1. Na página Configure the agent parameters of the injected Sidecar, clique em na aba correspondente ao nível de configuração do proxy sidecar desejado e clique em DNS Proxy.

  2. (Opcional) Na seção DNS Proxy, selecione Enable DNS Proxy, ative o switch à direita e clique em Update Settings.

    Esta etapa é obrigatória nas abas Namespace e workload. Pule esta etapa na aba global. Ativar o switch habilita o recurso de proxy DNS para o proxy sidecar.

  3. Redeploy the workload para que a configuração do proxy sidecar entre em vigor.

  4. Execute o comando a seguir para visualize o recurso de proxy DNS configurado.

    kubectl get pod -n <namespace> <pod-name> -o yaml

    Saída esperada:

    apiVersion: v1
    kind: Pod
    spec:
      containers:
        - args:
            - proxy
            - sidecar
            - '--domain'
            - $(POD_NAMESPACE).svc.cluster.local
            - '--proxyLogLevel=warning'
            - '--proxyComponentLogLevel=misc:error'
            - '--log_output_level=default:info'
            - '--concurrency'
            - '3'
          env:
    ...
            - name: ISTIO_META_DNS_AUTO_ALLOCATE
              value: 'true'
            - name: ISTIO_META_DNS_CAPTURE
              value: 'true'
    ...
          name: istio-proxy
                                

    As variáveis de ambiente ISTIO_META_DNS_AUTO_ALLOCATE e ISTIO_META_DNS_CAPTURE do contêiner istio-proxy estão definidas como true. Isso indica que a configuração DNS Proxy entrou em vigor.

Gerenciamento de variáveis de ambiente do proxy sidecar

Expandir para ver a descrição e o exemplo de configuração do gerenciamento de variáveis de ambiente do proxy sidecar

Descrição do parâmetro

Este parâmetro especifica variáveis de ambiente adicionais adicionadas aos contêineres de proxy sidecar. Configure os dois tipos a seguir de variáveis de ambiente do proxy sidecar.

Parâmetro

Descrição

Sidecar Graceful Shutdown (EXIT_ON_ZERO_ACTIVE_CONNECTIONS)

Após ative este parâmetro, a variável de ambiente EXIT_ON_ZERO_ACTIVE_CONNECTIONS: "true" é adicionada ao contêiner do proxy sidecar. A variável de ambiente funciona da seguinte forma:

Por padrão, quando um contêiner de proxy sidecar para, o processo pilot-agent no contêiner faz com que o proxy Envoy pare de escutar o tráfego de entrada, aguarda por um período determinado pelo parâmetro de duração de drenagem de término do proxy sidecar e, em seguida, interrompe o processo do proxy Envoy.

Após definir EXIT_ON_ZERO_ACTIVE_CONNECTIONS, quando o contêiner do proxy sidecar para, o processo pilot-agent no contêiner primeiro faz com que o proxy Envoy pare de escutar o tráfego de entrada e aguarda 5 segundos por padrão. Após a espera, o processo verifica periodicamente o número de conexões ativas do proxy Envoy e interrompe o processo do proxy Envoy somente depois que o número de conexões ativas se torna 0. Definir EXIT_ON_ZERO_ACTIVE_CONNECTIONS melhora o ciclo de vida de término dos contêineres de proxy sidecar em casos comuns, reduzindo tanto o tempo de término quanto o número de solicitações perdidas durante o término.

Importante

Após configurar este parâmetro, a Sidecar Proxy Drain Duration at Pod Termination deixa de ter efeito. Para mais informações, consulte Sidecar proxy termination drain duration.

Exemplo de configuração

  1. Na página Sidecar Proxy Drain Duration at Pod Termination, clique em na aba correspondente ao nível de configuração do proxy sidecar desejado e clique em Configure the agent parameters of the injected Sidecar.

  2. (Opcional) Na seção Manage Environment Variables for Sidecar Proxy, selecione Manage Environment Variables for Sidecar Proxy (EXIT_ON_ZERO_ACTIVE_CONNECTIONS).

    Esta etapa é obrigatória nas abas Sidecar Graceful Shutdown e Namespace. Pule esta etapa na aba workload.

  3. Ative o switch à direita de global (EXIT_ON_ZERO_ACTIVE_CONNECTIONS) e clique em Sidecar Graceful Shutdown.

  4. Redeploy the workload para que a configuração do proxy sidecar entre em vigor.

  5. Execute o comando a seguir para visualize as variáveis de ambiente do proxy sidecar configuradas.

    kubectl get pod -n <namespace> <pod-name> -o yaml

    Saída esperada:

    apiVersion: v1
    kind: Pod
    ...
    spec:
      containers:
        - args:
    ...
          env:
            - name: EXIT_ON_ZERO_ACTIVE_CONNECTIONS
              value: 'true'
          name: istio-proxy
    ...

    A variável de ambiente EXIT_ON_ZERO_ACTIVE_CONNECTIONS é adicionada às variáveis de ambiente do sidecar do contêiner istio-proxy no Pod. Isso indica que a configuração Update Configurations entrou em vigor.

Inicialização graceful de proxies sidecar (HoldApplicationUntilProxyStarts)

Expandir para ver a descrição e o exemplo de configuração de HoldApplicationUntilProxyStarts

Descrição do parâmetro

HoldApplicationUntilProxyStarts é um parâmetro de gerenciamento de ciclo de vida para proxies sidecar. HoldApplicationUntilProxyStarts está ativado por padrão, o que significa que, para um Pod com um proxy sidecar injetado, o contêiner do proxy sidecar deve iniciar com sucesso antes que os contêineres de aplicação no Pod iniciem. Isso garante que o tráfego enviado aos contêineres de aplicação não seja perdido porque o proxy sidecar ainda não terminou de iniciar.

Se este parâmetro for desativado, o contêiner do proxy sidecar e os contêineres de aplicação no Pod iniciam ao mesmo tempo. Quando um grande número de Pods é implantado em um cluster, os contêineres de proxy sidecar podem iniciar lentamente devido à carga pesada no APIServer. Desative HoldApplicationUntilProxyStarts para acelerar a implantação.

Exemplo de configuração

O exemplo a seguir mostra como desativar HoldApplicationUntilProxyStarts na aba Manage Environment Variables for Sidecar Proxy.

  1. Na página global, clique em na aba Configure the agent parameters of the injected Sidecar e clique em global.

  2. Desative o switch à direita de Lifecycle Management (HoldApplicationUntilProxyStarts) e clique em Sidecar Graceful Startup.

    Essa configuração indica que a capacidade HoldApplicationUntilProxyStarts está desativada.

  3. Redeploy the workload para que a configuração do proxy sidecar entre em vigor.

  4. Execute o comando a seguir para visualize a configuração HoldApplicationUntilProxyStarts.

    kubectl get pod -n <namespace> <pod-name> -o yaml

    Saída esperada:

    apiVersion: v1
    kind: Pod
    ...
    spec:
      containers:
        - command:
    ...
          name: sleep
    ...
          env:
            - name: PROXY_CONFIG
              value: >-
                {..."holdApplicationUntilProxyStarts":false,...}
    ...
          name: istio-proxy
    ...

    Após desativar a capacidade holdApplicationUntilProxyStarts, o contêiner istio-proxy não é mais declarado forçadamente antes dos contêineres de aplicação, e o campo lifecycle padrão não é mais declarado. Nesse caso, o Service Mesh não garante mais que o contêiner do proxy sidecar inicie com sucesso antes que os contêineres de aplicação iniciem.

Duração de drenagem de término do proxy sidecar

Expandir para ver a descrição e o exemplo de configuração da duração de drenagem de término do proxy sidecar

Descrição do parâmetro

A duração de drenagem de término do proxy sidecar é um parâmetro de gerenciamento de ciclo de vida para proxies sidecar. Após a injeção de um proxy sidecar em um Pod, o tráfego do Pod de aplicação é interceptado pelo contêiner do proxy sidecar.

Quando um Pod começa a parar, o service correspondente deixa de encaminhar tráfego para o Pod. Após o contêiner do proxy sidecar receber o sinal de saída, ele aguarda por um período de tempo. Durante esse período, o contêiner para de aceitar novo tráfego de entrada, mas continua processando o tráfego de entrada existente. O tráfego de saída não é afetado e ainda pode ser enviado normalmente. Esse período é chamado de duração de drenagem de término do proxy sidecar. A duração padrão de drenagem de término dos contêineres de proxy sidecar é 5s. Configure uma duração em s, como 10s.

Se as chamadas de interface fornecidas pelo service parado demorarem muito e excederem a duração de drenagem de término do contêiner do proxy sidecar, as conexões de entrada e saída existentes serão encerradas mesmo que não tenham sido totalmente processadas, o que pode causar a perda de algumas solicitações. Nesse caso, use este parâmetro para estender a duração de drenagem de término do proxy sidecar, permitindo que o tráfego de entrada e saída seja totalmente processado.

A duração de drenagem de término do proxy sidecar deve ser especificada em segundos com a unidade s, como 10s.

Exemplo de configuração

  1. Na página Update Settings, clique em na aba correspondente ao nível de configuração do proxy sidecar desejado e clique em Configure the agent parameters of the injected Sidecar.

  2. (Opcional) Na seção Lifecycle Management, selecione Lifecycle Management.

    Esta etapa é obrigatória nas abas Sidecar Proxy Drain Duration at Pod Termination e Namespace. Pule esta etapa na aba workload.

  3. Defina global como 10s e clique em Sidecar Proxy Drain Duration at Pod Termination.

    Essa configuração indica que o proxy sidecar aguarda 10 segundos para processar conexões existentes durante o término.

  4. Redeploy the workload para que a configuração do proxy sidecar entre em vigor.

  5. Execute o comando a seguir para visualize a duração de drenagem de término do proxy sidecar configurada.

    kubectl get pod -n <namespace> <pod-name> -o yaml

    Saída esperada:

    apiVersion: v1
    kind: Pod
    ...
    spec:
      containers:
        - args:
    ...
          env:
            - name: TERMINATION_DRAIN_DURATION_SECONDS
              value: '10'
    ...
            - name: PROXY_CONFIG
              value: >-
                {..."terminationDrainDuration":"10s"}
    ...
          name: istio-proxy
    ...

    O contêiner istio-proxy no Pod está configurado com a variável de ambiente TERMINATION_DRAIN_DURATION_SECONDS definida como 10, e a variável de ambiente PROXY_CONFIG registra terminationDrainDuration como 10s. Isso indica que a configuração Update Settings entrou em vigor.

Ciclo de vida do proxy sidecar

Expandir para ver a descrição e o exemplo de configuração do ciclo de vida do proxy sidecar

Descrição do parâmetro

O parâmetro de ciclo de vida do proxy sidecar permite personalizar totalmente os hooks de ciclo de vida do contêiner dos contêineres de proxy sidecar. Para este parâmetro, insira um campo de hook de ciclo de vida do contêiner (lifecycle) declarado no formato JSON. Este campo substitui o campo de hook de ciclo de vida do contêiner padrão do contêiner do proxy sidecar. Para mais informações, consulte Container lifecycle hooks.

Exemplo de configuração

  1. Na página Sidecar Proxy Drain Duration at Pod Termination, clique em na aba correspondente ao nível de configuração do proxy sidecar desejado e clique em Configure the agent parameters of the injected Sidecar.

  2. (Opcional) Na seção Lifecycle Management, selecione Lifecycle Management.

    Esta etapa é obrigatória nas abas Lifecycle of Sidecar Proxy e Namespace. Pule esta etapa na aba workload.

  3. Em global, insira o conteúdo YAML a seguir e clique em Lifecycle of Sidecar Proxy.

    Este conteúdo YAML configura os parâmetros de hook postStart e preStop.

    • postStart: aguarda o pilot-agent iniciar após o início do contêiner sidecar.

    • preStop: dorme por 13 segundos antes que o contêiner sidecar pare.

    {
      "postStart": {
        "exec": {
          "command": [
            "pilot-agent",
            "wait"
          ]
        }
      },
      "preStop": {
        "exec": {
          "command": [
            "/bin/sh",
            "-c",
            "sleep 13"
          ]
        }
      }
    }
  4. Redeploy the workload para que a configuração do proxy sidecar entre em vigor.

  5. Execute o comando a seguir para visualize o ciclo de vida do proxy sidecar configurado.

    kubectl get pod -n <namespace> <pod-name> -o yaml

    Saída esperada:

    apiVersion: v1
    kind: Pod
    ...
    spec:
      containers:
        - args:
    ...
    ...
            lifecycle:
            postStart:
              exec:
                command:
                - pilot-agent
                - wait
            preStop:
              exec:
                command:
                - /bin/sh
                - -c
                - sleep 13
          name: istio-proxy
    ...

    O campo de hook de ciclo de vida do contêiner (lifecycle) do contêiner istio-proxy no Pod é alterado para a configuração alvo. Isso indica que a configuração Update Settings entrou em vigor.

Política de acesso para serviços externos

Expandir para ver a descrição e o exemplo de configuração da política de acesso para serviços externos

Descrição do parâmetro

Este parâmetro especifica a política de acesso dos contêineres de proxy sidecar para serviços externos. Serviços externos são serviços fora da malha que não estão registrados no Service Mesh. Por padrão, todos os serviços nos clusters Kubernetes gerenciados pelo Service Mesh são serviços registrados. Registre manualmente serviços no Service Mesh declarando recursos ServiceEntry. Serviços que não estão registrados são considerados serviços externos.

Este parâmetro suporta as duas políticas a seguir:

  • ALLOW_ANY: a política de acesso padrão para serviços externos. O proxy sidecar permite o acesso a serviços externos e encaminha solicitações para serviços externos como estão.

  • REGISTRY_ONLY: O proxy sidecar nega o acesso a serviços externos, e as workloads não podem estabelecer conexões com serviços externos.

Nota

Este parâmetro é uma configuração global e só pode ser definido no nível global. Para definir a política de acesso para serviços externos no nível de namespace ou workload, faça login no ASM console e configure-a na página Lifecycle of Sidecar Proxy > Traffic Management Center.

Exemplo de configuração

  1. Na aba Sidecar Traffic Configuration da página global, clique em Configure the agent parameters of the injected Sidecar, selecione REGISTRY_ONLY à direita de Outbound Traffic Policy e clique em Outbound Traffic Policy.

    Essa configuração restringe os serviços na malha de acessar serviços externos.

  2. Redeploy the workload para que a configuração do proxy sidecar entre em vigor.

  3. Crie o arquivo sleep.yaml com o seguinte conteúdo.

    apiVersion: v1
    kind: ServiceAccount
    metadata:
      name: sleep
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: sleep
      labels:
        app: sleep
        service: sleep
    spec:
      ports:
      - port: 80
        name: http
      selector:
        app: sleep
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: sleep
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: sleep
      template:
        metadata:
          labels:
            app: sleep
        spec:
          terminationGracePeriodSeconds: 0
          serviceAccountName: sleep
          containers:
          - name: sleep
            image: curlimages/curl
            command: ["/bin/sleep", "3650d"]
            imagePullPolicy: IfNotPresent
            volumeMounts:
            - mountPath: /etc/sleep/tls
              name: secret-volume
          volumes:
          - name: secret-volume
            secret:
              secretName: sleep-secret
              optional: true
    ---
  4. Execute o comando a seguir para implantar a aplicação sleep.

    kubectl apply -f sleep.yaml -n default
  5. Execute o comando a seguir para usar a aplicação sleep para acessar um service externo.

    kubectl exec -it {sleep-pod-name} -c sleep -- curl www.aliyun.com -v

    Saída esperada:

    *   Trying *********...
    * Connected to www.aliyun.com (********) port 80 (#0)
    > GET / HTTP/1.1
    > Host: www.aliyun.com
    > User-Agent: curl/7.87.0-DEV
    > Accept: */*
    >
    * Mark bundle as not supporting multiuse
    < HTTP/1.1 502 Bad Gateway
    < date: Mon,********* 03:25:00 GMT
    < server: envoy
    < content-length: 0
    <
    * Connection #0 to host www.aliyun.com left intact

    A resposta 502 indica que a aplicação sleep com um proxy sidecar injetado não consegue acessar o service externo www.aliyun.com. Isso indica que a configuração Update Settings entrou em vigor.

Política de interceptação de tráfego de entrada do sidecar

Expandir para ver a descrição e o exemplo de configuração da política de interceptação de tráfego de entrada do sidecar

Descrição do parâmetro

Este parâmetro especifica a política de interceptação dos proxies sidecar para tráfego de entrada. Por padrão, os contêineres de proxy sidecar usam a política iptables REDIRECT para interceptar o tráfego de entrada enviado para workloads de aplicação. Após o tráfego de entrada ser interceptado por redirecionamento, a aplicação só consegue ver o endereço IP do contêiner do proxy sidecar como o endereço IP de source das solicitações e não consegue ver o endereço IP original do cliente.

Se você alterar a política de interceptação de tráfego de entrada para a política de proxy transparente (TPROXY), o Service Mesh permite que os contêineres de proxy sidecar interceptem o tráfego de entrada no modo de proxy transparente iptables. Após configurar este parâmetro, a aplicação consegue ver o endereço IP original do cliente. Para mais informações, consulte Obtain client source IP in Service Mesh.

Importante

A política de proxy transparente não suporta nós que executam CentOS. Se os nós onde seus Pods são executados usam CentOS, use a política REDIRECT.

Exemplo de configuração

  1. Na página Outbound Traffic Policy, clique em na aba correspondente ao nível de configuração do proxy sidecar desejado e clique em Configure the agent parameters of the injected Sidecar.

  2. (Opcional) Na seção Sidecar Traffic Interception Mode, selecione Sidecar Traffic Interception Mode.

    Esta etapa é obrigatória nas abas Sidecar Traffic Interception Mode e Namespace. Pule esta etapa na aba workload.

  3. À direita de global, selecione Sidecar Traffic Interception Mode e clique em TPROXY.

  4. Redeploy the workload para que a configuração do proxy sidecar entre em vigor.

  5. Execute o comando a seguir para visualize a política de interceptação de tráfego de entrada do sidecar configurada.

    kubectl get pod -n <namespace> <pod-name> -o yaml

    Saída esperada:

    apiVersion: v1
    kind: Pod
    ...
    spec:
      containers:
        - args:
    ...
            - name: PROXY_CONFIG
              value: >-
                {..."interceptionMode":"TPROXY",...}
            - name: ISTIO_META_POD_PORTS
              value: |-
                [
                ]
    ...
          name: istio-proxy
    ...
      initContainers:
        - args:
            - istio-iptables
            - '-p'
            - '15001'
            - '-z'
            - '15006'
            - '-u'
            - '1337'
            - '-m'
            - TPROXY
    ...
          name: istio-init
    ...

    As variáveis de ambiente do sidecar do contêiner istio-proxy no Pod registram "interceptionMode":"TPROXY", e o contêiner istio-init também executa o comando de inicialização com o parâmetro TPROXY. Isso indica que a configuração Update Settings entrou em vigor.

Nível de log

Expandir para ver a descrição e o exemplo de configuração do nível de log

Descrição do parâmetro

Este parâmetro especifica o nível de log dos contêineres de proxy sidecar. Por padrão, os proxies sidecar usam o nível de log info. Altere o nível de log dos proxies sidecar para qualquer um dos sete níveis: info, debug, trace, warning, error, critical e off, para obter mais ou menos informações de log dos proxies sidecar.

Exemplo de configuração

  1. Na página Sidecar Traffic Interception Mode, clique em na aba correspondente ao nível de configuração do proxy sidecar desejado e clique em Configure the agent parameters of the injected Sidecar.

  2. (Opcional) Na seção Monitoring Statistics, selecione Monitoring Statistics.

    Esta etapa é obrigatória nas abas Log Level e Namespace. Pule esta etapa na aba workload.

  3. À direita de global, selecione error e clique em Log Level.

    Essa configuração indica que o proxy sidecar gera logs no nível error, e apenas logs no nível error ou superior são gerados.

  4. Redeploy the workload para que a configuração do proxy sidecar entre em vigor.

  5. Execute o comando a seguir para visualize o nível de log do proxy sidecar configurado.

    kubectl get pod -n <namespace> <pod-name> -o yaml

    Saída esperada:

    apiVersion: v1
    kind: Pod
    ...
    spec:
      containers:
        - args:
            - proxy
            - sidecar
            - '--domain'
            - $(POD_NAMESPACE).svc.cluster.local
            - '--proxyLogLevel=error'
    ...
          name: istio-proxy
    ...

    Os parâmetros de runtime do contêiner istio-proxy estão definidos como --proxyLogLevel=error. Isso indica que a configuração Update Settings entrou em vigor.

proxyStatsMatcher

Expandir para ver a descrição e o exemplo de configuração de proxyStatsMatcher

Descrição do parâmetro

Este parâmetro define as estatísticas personalizadas do Envoy relatadas pelos proxies sidecar. O Envoy é a implementação técnica dos proxies sidecar e pode coletar e relatar uma série de métricas. No entanto, o Service Mesh habilita a coleta e exposição de apenas algumas métricas por padrão para reduzir a sobrecarga de desempenho nos proxies sidecar. Use este parâmetro para especificar métricas adicionais que os proxies sidecar precisam coletar e relatar por correspondência de prefixo, correspondência de sufixo ou correspondência de expressão regular.

Exemplo de configuração

  1. Na página Log Level, clique em na aba correspondente ao nível de configuração do proxy sidecar desejado e clique em Configure the agent parameters of the injected Sidecar.

  2. Na seção Monitoring Statistics, selecione proxyStatsMatcher, selecione Monitoring Statistics e defina-o como .outlier_detection..

    Essa configuração adiciona a coleta de métricas de circuit breaking para o proxy sidecar.

  3. Redeploy the workload para que a configuração do proxy sidecar entre em vigor.

  4. Execute o comando a seguir para visualize as estatísticas personalizadas do proxy sidecar configuradas.

    kubectl get pod -n <namespace> <pod-name> -o yaml

    Saída esperada:

    apiVersion: v1
    kind: Pod
    ...
    spec:
      containers:
        - args:
     ...
            - name: PROXY_CONFIG
              value: >-
                {..."proxyStatsMatcher":{"inclusionRegexps":[".*outlier_detection.*"]},...}
    ...

    As estatísticas personalizadas nas variáveis de ambiente do sidecar do contêiner istio-proxy no Pod foram atualizadas. Isso indica que a configuração proxyStatsMatcher entrou em vigor.

Parâmetros de runtime do Envoy

Expandir para ver a descrição e o exemplo de configuração dos parâmetros de runtime do Envoy

Descrição do parâmetro

Este parâmetro especifica os parâmetros de runtime do processo Envoy nos contêineres de proxy sidecar. Configure o seguinte parâmetro de runtime.

Parâmetro

Descrição

Limite de conexões downstream

Por padrão, os proxies sidecar não têm limite para o número de conexões downstream, o que pode ser explorado por atividades maliciosas. Para mais informações, consulte security bulletin 2020-007. Configure o número máximo de conexões downstream que um proxy sidecar pode aceitar conforme as necessidades do seu negócio.

Exemplo de configuração

  1. Na página Regular Expression Match, clique em na aba correspondente ao nível de configuração do proxy sidecar desejado e clique em Configure the agent parameters of the injected Sidecar.

  2. (Opcional) Na seção Manage Environment Variables for Sidecar Proxy, insira 5000 no campo de entrada à direita de Envoy Runtime Parameters e clique em Limits on Downstream Connections.

  3. Redeploy the workload para que a configuração do proxy sidecar entre em vigor.

  4. Execute o comando a seguir para visualize as variáveis de ambiente do proxy sidecar configuradas.

kubectl get pod -n <namespace> <pod-name> -o yaml

Saída esperada:

apiVersion: v1
kind: Pod
...
spec:
  containers:
    - args:
...
      env:
        - name: PROXY_CONFIG
          value: >-
            {"concurrency":2,"configPath":"/etc/istio/proxy","discoveryAddress":"istiod-1-22-6.istio-system.svc:15012","holdApplicationUntilProxyStarts":true,"interceptionMode":"REDIRECT","proxyMetadata":{"BOOTSTRAP_XDS_AGENT":"false","DNS_AGENT":"","EXIT_ON_ZERO_ACTIVE_CONNECTIONS":"true"},"runtimeValues":{"overload.global_downstream_max_connections":"5000"},"terminationDrainDuration":"5s","tracing":{"zipkin":{"address":"zipkin.istio-system:9411"}}}
      name: istio-proxy
...

O campo "runtimeValues":{"overload.global_downstream_max_connections":"5000"} é adicionado à variável de ambiente PROXY_CONFIG na configuração do sidecar do contêiner istio-proxy no Pod. Isso indica que a configuração de Parâmetros de runtime do Envoy entrou em vigor.