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
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" }
Crie um ConfigMap com o nome
istio-shared-configmap-<asm-revision>
noaks-istio-system
namespace. Por exemplo, se o cluster estiver executando a revisão asm-1-18 da malha, o ConfigMap precisará ser nomeado comoistio-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
, supported
ou 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 exemploistio-asm-1-18
). - O ConfigMap deve seguir o nome
istio-shared-configmap-<asm-revision>
e estar noaks-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 odiscoverySelectors
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.
Azure Kubernetes Service