Partilhar via


Configurar o complemento de malha de serviço baseado em Istio para o Serviço Kubernetes do Azure

O Istio de código aberto usa MeshConfig para definir configurações de malha para a malha de serviço do Istio. O complemento de malha de serviço baseado em Istio para AKS se baseia no MeshConfig e classifica diferentes propriedades como suportadas, permitidas e bloqueadas.

Este artigo explica como configurar o complemento de malha de serviço baseado em Istio para o Serviço Kubernetes do Azure e a política de suporte aplicável a essa configuração.

Pré-requisitos

Este guia pressupõe que você seguiu a documentação para habilitar o complemento Istio em um cluster AKS.

Configurar a configuração no cluster

  1. Descubra qual revisão do Istio é implantada no cluster:

    az aks show --name $CLUSTER --resource-group $RESOURCE_GROUP --query 'serviceMeshProfile'
    

    Saída:

    {
      "istio": {
          "certificateAuthority": null,
          "components": {
          "egressGateways": null,
          "ingressGateways": null
          },
          "revisions": [
          "asm-1-18"
          ]
      },
      "mode": "Istio"
    }
    
  2. Crie um ConfigMap com o nome istio-shared-configmap-<asm-revision> no aks-istio-system namespace. Por exemplo, se o cluster estiver executando a revisão asm-1-18 da malha, o ConfigMap precisará ser nomeado como istio-shared-configmap-asm-1-18. A configuração de malha deve ser fornecida dentro da seção de dados em malha.

    Exemplo:

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: istio-shared-configmap-asm-1-18
      namespace: aks-istio-system
    data:
      mesh: |-
        accessLogFile: /dev/stdout
        defaultConfig:
          holdApplicationUntilProxyStarts: true
    

    Os valores abaixo defaultConfig são configurações de malha aplicadas ao proxy do sidecar Envoy.

Atenção

Um ConfigMap padrão (por exemplo, istio-asm-1-18 para revisão asm-1-18) é criado no aks-istio-system namespace no cluster quando o complemento Istio está habilitado. No entanto, esse ConfigMap padrão é reconciliado pelo complemento Istio gerenciado e, portanto, os usuários NÃO devem editar diretamente este ConfigMap. Em vez disso, os usuários devem criar um ConfigMap compartilhado Istio específico de revisão (por exemplo istio-shared-configmap-asm-1-18 , para revisão asm-1-18) no namespace aks-istio-system e, em seguida, o plano de controle Istio mesclará isso com o ConfigMap padrão, com as configurações padrão tendo precedência.

Configuração e upgrades de malha

Ao executar a atualização canary para o Istio, você precisa criar um ConfigMap separado para a nova revisão no aks-istio-system namespace antes de iniciar a atualização canary. Dessa forma, a configuração estará disponível quando o plano de controle da nova revisão for implantado no cluster. Por exemplo, se você estiver atualizando a malha de asm-1-18 para asm-1-19, precisará copiar as alterações de istio-shared-configmap-asm-1-18 para criar um novo ConfigMap chamado istio-shared-configmap-asm-1-19 no aks-istio-system namespace.

Depois que a atualização for concluída ou revertida, você poderá excluir o ConfigMap da revisão que foi removida do cluster.

Valores MeshConfig permitidos, suportados e bloqueados

Os campos em MeshConfig são classificados como allowed, supportedou blocked. Para saber mais sobre essas categorias, consulte a política de suporte para recursos de complementos e opções de configuração do Istio.

A configuração de malha e a lista de campos permitidos/suportados são revisões específicas para levar em conta os campos que estão sendo adicionados/removidos nas revisões. A lista completa de campos permitidos e os campos suportados/não suportados dentro da lista de permitidos é fornecida na tabela abaixo. Quando uma nova revisão de malha é disponibilizada, quaisquer alterações na classificação permitida e suportada dos campos são anotadas nesta tabela.

MeshConfig

Os campos presentes na documentação de referência do MeshConfig de código aberto que não são abordados na tabela a seguir são bloqueados. Por exemplo, configSources está bloqueado.

Campo Suportado/Permitido Notas
proxyListenPort Permitido -
proxyInboundListenPort Permitido -
proxyHttpPort Permitido -
connectTimeout Permitido Configurável em DestinationRule
tcpKeepAlive Permitido Configurável em DestinationRule
defaultConfig Suportado Usado para configurar ProxyConfig
outboundTrafficPolicy Suportado Também configurável em Sidecar CR
extensionProviders Permitido -
defaultProvedores Permitido -
accessLogFile [en] Suportado Este campo aborda a geração de logs de acesso. Para obter uma experiência gerenciada sobre coleta e consulta de logs, consulte Azure Monitor Container Insights no AKS. É recomendável configurar o log de acesso por meio da API de Telemetria.
accessLogFormat Suportado Este campo aborda a geração de logs de acesso. Para obter uma experiência gerenciada sobre coleta e consulta de logs, consulte Azure Monitor Container Insights no AKS
accessLogEncoding Suportado Este campo aborda a geração de logs de acesso. Para obter uma experiência gerenciada sobre coleta e consulta de logs, consulte Azure Monitor Container Insights no AKS
habilitarRastreamento Permitido É recomendável configurar o rastreamento por meio da API de Telemetria.
enableEnvoyAccessLogService Suportado Este campo aborda a geração de logs de acesso. Para obter uma experiência gerenciada sobre coleta e consulta de logs, consulte Azure Monitor Container Insights no AKS
disableEnvoyListenerLog Suportado Este campo aborda a geração de logs de acesso. Para obter uma experiência gerenciada sobre coleta e consulta de logs, consulte Azure Monitor Container Insights no AKS
trustDomain Permitido -
trustDomainAliases Permitido -
caCertificados Permitido Configurável em DestinationRule
defaultServiceExportTo Permitido Configurável em ServiceEntry
defaultVirtualServiceExportTo Permitido Configurável no VirtualService
defaultDestinationRuleExportTo Permitido Configurável em DestinationRule
localidadeLbSetting Permitido Configurável em DestinationRule
dnsRefreshRate Permitido -
h2UpgradePolicy Permitido Configurável em DestinationRule
habilitarPrometheusMerge Permitido -
discoverySelectores Suportado -
pathNormalização Permitido -
defaultHttpRetryPolicy Permitido Configurável no VirtualService
serviceSettings Permitido -
malhaMTLS Permitido -
tlsDefaults Permitido -
ingressService Permitido Nome do serviço Kubernetes usado para o controlador istio ingress.
ingressSelector Permitido Define qual implantação de gateway usar como controlador de ingresso. Este campo corresponde ao campo Gateway.seletor e será definido como istio: INGRESS_SELETOR.

ProxyConfig (meshConfig.defaultConfig)

Os campos presentes na documentação de referência do MeshConfig de código aberto que não são abordados na tabela a seguir são bloqueados.

Campo Suportado/Permitido Notas
tracingServiceName Permitido É recomendável configurar o rastreamento por meio da API de Telemetria.
drenagemDuração Suportado -
statsUdpAddress Permitido -
proxyAdminPort Permitido -
rastreio Permitido É recomendável configurar o rastreamento por meio da API de Telemetria.
simultaneidade Suportado -
envoyAccessLogService Permitido É recomendável configurar o rastreamento por meio da API de Telemetria.
envoyMetricsService Permitido É recomendável configurar a coleta de métricas por meio da API de Telemetria.
proxyMetadados Permitido -
statusPort Permitido -
extraStatTags Permitido -
proxyStatsMatcher Permitido -
terminationDrainDuration Suportado -
meshId Permitido -
holdApplicationUntilProxyStarts Suportado -
caCertificatesPem Permitido -
privateKeyProvider Permitido -

Atenção

Escopo de suporte de configurações: A configuração Mesh permite que provedores de extensão, como instâncias autogerenciadas do Zipkin ou Apache Skywalk, sejam configurados com o complemento Istio. No entanto, esses provedores de extensão estão fora do escopo de suporte do complemento Istio. Quaisquer problemas associados às ferramentas de extensão estão fora do limite de suporte do complemento Istio.

Erros comuns e dicas de solução de problemas

  • Certifique-se de que o MeshConfig está recuado com espaços em vez de guias.
  • Certifique-se de que você está editando apenas o ConfigMap compartilhado específico da revisão (por exemplo istio-shared-configmap-asm-1-18) e não está tentando editar o ConfigMap padrão (por exemplo istio-asm-1-18).
  • O ConfigMap deve seguir o nome istio-shared-configmap-<asm-revision> e estar no aks-istio-system namespace.
  • Certifique-se de que todos os campos MeshConfig estão escritos corretamente. Se eles não forem reconhecidos ou se não fizerem parte da lista de permitidos, o controle de admissão negará tais configurações.
  • Ao executar atualizações canárias, verifique seus ConfigMaps específicos de revisão para garantir que as configurações existam para as revisões implantadas em seu cluster.
  • Certas MeshConfig opções, como accessLogging, podem aumentar o consumo de recursos do Envoy, e desativar algumas dessas configurações pode reduzir a utilização de recursos do plano de dados do Istio. Também é aconselhável usar o campo no MeshConfig para ajudar a aliviar o discoverySelectors consumo de memória para Istiod e Envoy.
  • Se o concurrency campo no MeshConfig estiver configurado incorretamente e definido como zero, isso fará com que o Envoy use todos os núcleos da CPU. Em vez disso, se esse campo estiver desdefinido, o número de threads de trabalho a serem executados será determinado automaticamente com base nas solicitações/limites da CPU.
  • Condições de corrida de pod e sidecar nas quais o aplicativo começa antes do Envoy podem ser atenuadas usando o holdApplicationUntilProxyStarts campo no MeshConfig.