O ASM permite modifique recursos e configurações do proxy Sidecar por meio de anotações. Este tópico descreve como configure o Sidecar Proxy adicionando anotações de recurso e utilizando o campo ProxyConfig.
Pré-requisitos
Um gateway de entrada está implantado. Para mais informações, consulte Crie um gateway de entrada.
Adicionar anotações de recurso
O ASM permite modifique recursos do proxy Sidecar mediante a adição de anotações a um pod. Este exemplo demonstra como alterar a solicitação de memória do proxy Sidecar. Para detalhes sobre outras anotações, consulte Apêndice A: Anotações de recurso do Istio.
Ative a injeção automática do proxy Sidecar mesh para o namespace padrão. Para mais informações, consulte Ative injeção automática.
Implante uma aplicação no namespace padrão. Para mais informações, consulte Implantar uma aplicação em um cluster associado a uma instância do ASM.
-
Modifique a solicitação mínima de memória para o proxy Sidecar.
Faça login no ACK console. No painel de navegação à esquerda, clique em Clusters.
Na página Clusters, clique em no nome do seu cluster. No painel de navegação à esquerda, clique em .
Na página Deployments, localize sua aplicação alvo e clique em na coluna Actions.
-
Na caixa de diálogo Edit YAML, adicione o seguinte conteúdo abaixo do parâmetro
templatee clique em Update.annotations: sidecar.istio.io/proxyMemory: 14Mitemplate: metadata: annotations: sidecar.istio.io/proxyMemory: 14Mi labels: app: details version: v1
-
Verifique se a modificação de memória do proxy Sidecar foi bem-sucedida.
No painel de navegação à esquerda da página de gerenciamento do cluster, escolha .
Na página Pods, localize o pod da sua aplicação alvo e clique em Details na coluna Actions.
-
Na aba Containers, clique em istio-proxy.
Observe que o istio-proxy solicita 14 Mi de memória. Ao clicar em, você visualize os detalhes do contêiner istio-proxy, incluindo o endereço do registro, a política de pull de imagem (IfNotPresent) e as variáveis de ambiente relacionadas ao Sidecar do Istio. Em Requested Resources, a configuração atual de memória aparece como
Memory: 14Mi.
Defina o campo ProxyConfig
O ASM permite defina a configuração do proxy Sidecar modifique o campo ProxyConfig em um pod. Para mais informações sobre o uso do campo ProxyConfig, consulte Apêndice B: Campos do ProxyConfig.
proxy.istio.io/config aceita valores nos formatos yaml ou JSON.
O procedimento para defina o campo ProxyConfig é idêntico ao de adicionar anotações de recurso. Esta seção apresenta exemplos comuns de campos do ProxyConfig. Para os passos detalhados, consulte a seção anterior.
Exemplo 1: Defina a duração de drenagem de encerramento
Utilize o campo terminationDrainDuration para ajustar o tempo de drenagem no encerramento. Esse parâmetro define o tempo máximo que o Istio Proxy aguarda após o encerramento de um contêiner de aplicação.
Adicione o conteúdo abaixo ao arquivo yaml da sua aplicação para fazer o Istio Proxy aguardar até 3 segundos depois que o contêiner da aplicação for encerrado.
annotations:
proxy.istio.io/config: |
terminationDrainDuration: 3s
type: RollingUpdate
template:
metadata:
annotations:
proxy.istio.io/config: |
terminationDrainDuration: 3s
labels:
app: details
Na página Pods, localize o pod da sua aplicação alvo e clique em Actions na coluna Details. Na aba Containers, clique em istio-proxy. Você verá que a duração de drenagem de encerramento está definida como 3 s. Após a configuração entrar em vigor, visualize os detalhes do contêiner istio-proxy na página de contêineres do Pod. Na variável de ambiente PROXY_CONFIG, o parâmetro terminationDrainDuration estará definido como 3s.
Exemplo 2: Defina a ordem de inicialização do Istio Proxy
Por padrão, o ASM define globalmente holdApplicationUntilProxyStarts como true. Isso garante que o Istio Proxy inicie com sucesso antes do contêiner da aplicação. Caso o contêiner da aplicação fique pronto antes do Istio Proxy, o pod não conseguirá aceitar tráfego.
holdApplicationUntilProxyStarts é uma opção de configuração que controla o comportamento de inicialização do contêiner da aplicação após a injeção do proxy Sidecar. Quando holdApplicationUntilProxyStarts está definido como true, o Istio CNI ou o injetor de Sidecar configure o pod do Kubernetes para impedir que o contêiner da aplicação inicie até que o contêiner do proxy esteja pronto e comece a receber tráfego. Isso assegura que todo o tráfego passe pelo proxy antes que o pod receba qualquer requisição, permitindo a aplicação imediata de políticas de gerenciamento de tráfego, monitoramento e segurança. Na maioria dos casos, defina holdApplicationUntilProxyStarts como true para garantir o tratamento adequado do tráfego. Configure como false apenas em cenários específicos onde isso for apropriado.
Na página Pods, localize o pod da sua aplicação alvo e clique em Actions na coluna Details. Clique em na aba Events. Você observará que o contêiner da aplicação inicia primeiro, seguido pelo Istio Proxy. Na aba Events do Pod, a lista de eventos do pod details-v1 mostra a sequência completa de inicialização dos contêineres, incluindo agendamento do Pod (Scheduled), pull de imagem (Pulled), criação do contêiner (Created) e início do contêiner (Started). Os contêineres iniciados aparecem nesta ordem: contêiner de inicialização istio-init, contêiner da aplicação details e contêiner Sidecar istio-proxy. Os eventos de contêiner Started são destacados, confirmando a ordem de inicialização imposta pela configuração holdApplicationUntilProxyStarts.
Apêndice A: Anotações de recurso do Istio
|
Anotação |
Descrição |
|
proxy.istio.io/config |
Substitui a configuração deste proxy específico. |
|
readiness.status.sidecar.istio.io/applicationPorts |
Especifique a lista de portas expostas pelo contêiner da aplicação. Utilizada pela sonda de prontidão do proxy Sidecar para determinar quando o proxy está configurado e pronto para receber tráfego. |
|
readiness.status.sidecar.istio.io/failureThreshold |
Defina o limiar de falha para a sonda de prontidão do proxy Sidecar. |
|
readiness.status.sidecar.istio.io/initialDelaySeconds |
Determina o atraso inicial (em segundos) para a sonda de prontidão do proxy Sidecar. |
|
readiness.status.sidecar.istio.io/periodSeconds |
Estabelece o período (em segundos) entre verificações da sonda de prontidão do proxy Sidecar. |
|
sidecar.istio.io/componentLogLevel |
Configure o nível de log por componente para o proxy Sidecar. |
|
sidecar.istio.io/enableCoreDump |
Indica se o proxy Sidecar deve ative o core dump. |
|
sidecar.istio.io/extraStatTags |
Lista de tags adicionais extraídas da telemetria do Istio Proxy. Cada tag extra deve constar nesta lista. |
|
sidecar.istio.io/inject |
Defina se a injeção automática de Sidecar deve ser utilizada. |
|
sidecar.istio.io/interceptionMode |
Especifique o modo (REDIRECT ou TPROXY) usado para redirecionar o tráfego de entrada para o Envoy. |
|
sidecar.istio.io/logLevel |
Ajusta o nível de log geral do proxy Sidecar. |
|
sidecar.istio.io/proxyCPU |
Defina a solicitação de CPU para o proxy Sidecar. |
|
sidecar.istio.io/proxyCPULimit |
Estabelece o limite de CPU para o proxy Sidecar. |
|
sidecar.istio.io/proxyMemory |
Configure a solicitação de memória para o proxy Sidecar. |
|
sidecar.istio.io/proxyMemoryLimit |
Defina o limite de memória para o proxy Sidecar. |
|
sidecar.istio.io/rewriteAppHTTPProbers |
Redireciona as sondas HTTP de prontidão e vivacidade para o proxy Sidecar. |
|
status.sidecar.istio.io/port |
Especifique a porta de status HTTP do proxy Sidecar. Se definida como zero, o Sidecar não fornece status. |
|
traffic.sidecar.istio.io/excludeInboundPorts |
Lista separada por vírgulas de portas de entrada excluídas do redirecionamento para o proxy Sidecar. Aplica-se apenas quando todo o tráfego de entrada (ou seja, "*") é redirecionado. |
|
traffic.sidecar.istio.io/excludeOutboundIPRanges |
Lista separada por vírgulas de intervalos de IP no formato CIDR excluídos do redirecionamento. Aplica-se apenas quando todo o tráfego de saída (ou seja, "*") é redirecionado. |
|
traffic.sidecar.istio.io/excludeOutboundPorts |
Lista separada por vírgulas de portas (como strings) que proíbem o redirecionamento de tráfego de saída para o proxy Sidecar. |
|
traffic.sidecar.istio.io/includeInboundPorts |
Lista separada por vírgulas de portas de entrada cujo tráfego é redirecionado para o proxy Sidecar. Use o curinga "*" para configure o redirecionamento de todas as portas. Uma lista vazia desativa o redirecionamento para todo o tráfego de entrada. |
|
traffic.sidecar.istio.io/includeOutboundIPRanges |
Lista separada por vírgulas de intervalos de IP no formato CIDR redirecionados para o proxy Sidecar. Use o curinga "*" para redirecionar todo o tráfego de saída. Uma lista vazia desativa o redirecionamento para todo o tráfego de saída. |
|
traffic.sidecar.istio.io/includeOutboundPorts |
Lista separada por vírgulas de portas de tráfego de saída (como strings) cujo tráfego é redirecionado para o proxy Sidecar independentemente do IP de destino. |
|
traffic.sidecar.istio.io/kubevirtInterfaces |
Lista separada por vírgulas de interfaces virtuais cujo tráfego de entrada é tratado como tráfego de saída. |
Apêndice B: Campos do ProxyConfig
|
Campo |
Tipo |
Descrição |
|
configPath |
String |
Caminho para o diretório onde os arquivos de configuração gerados são armazenados. O agente de proxy gera a configuração real e a armazena neste diretório. |
|
statsdUdpAddress |
String |
Endereço IP e porta do listener UDP do statsd. |
|
proxyAdminPort |
Int32 |
Porta na qual o Envoy escuta comandos administrativos. A porta padrão é 15000. |
|
controlPlaneAuthPolicy |
AuthenticationPolicy |
AuthenticationPolicy define como o proxy se autentica ao se conectar ao plano de controle. O padrão é |
|
concurrency |
Número de threads de trabalho a serem executadas. Se não definido, é determinado automaticamente com base nas solicitações e limites de CPU. Se definido como 0, todos os núcleos da máquina são utilizados. O padrão é 2 threads de trabalho. |
|
|
interceptionMode |
InboundInterceptionMode |
Defina o modo de redirecionamento do tráfego de entrada para o proxy Sidecar. |
|
tracing |
Tracing |
Configuração de rastreamento utilizada pelo proxy Sidecar. |
|
sds |
SDS |
Configuração do Secret Discovery Service (SDS) usada pelo proxy. |
|
proxyMetadata |
Map<string, string> |
Variáveis de ambiente adicionais para o proxy. Nomes que começam com ISTIO_META_ são incluídos na configuração de bootstrap gerada e enviados ao servidor XDS. |
|
statusPort |
Map<string, string> |
Porta administrativa (por exemplo, sonda de prontidão) na qual o proxy escuta. O padrão é a porta 15020. |
|
terminationDrainDuration |
Tempo permitido para que as conexões sejam concluídas durante o desligamento do proxy. Ao receber SIGTERM ou SIGINT, o istio-agent instrui o proxy Sidecar ativo a iniciar a drenagem — bloqueando novas conexões e permitindo que as existentes sejam concluídas. Em seguida, ele aguarda pelo tempo definido em termination_drain_duration antes de encerrar todos os processos ativos restantes do Envoy. Se não definido, o valor padrão de 5s é aplicado. |
|
|
holdApplicationUntilProxyStarts |
Sinalizador booleano para ative ou desativar o comportamento holdApplicationUntilProxyStarts. Este recurso adiciona ganchos para atrasar a inicialização da aplicação até que o proxy do pod esteja pronto para aceitar tráfego, mitigando certas condições de corrida durante a inicialização. |