Compartilhar via


Solução de problemas do gateway de entrada do complemento do Service Mesh do Istio

Este artigo discute como solucionar problemas de gateway de entrada no complemento de malha de serviço do Istio para o AKS (Serviço de Kubernetes do Azure). O gateway de entrada do Istio é um proxy reverso baseado em Envoy que você pode usar para rotear o tráfego de entrada para cargas de trabalho na malha.

Para o complemento de service mesh baseado em Istio, oferecemos as seguintes opções de gateway de entrada:

  • Um gateway de entrada interno que usa um endereço IP privado.

  • Um gateway de entrada externo que usa um endereço IP acessível publicamente.

Observação

A Microsoft não dá suporte à personalização do endereço IP para os gateways de entrada internos ou externos. Todas as alterações de personalização de IP no complemento de malha de serviço do Istio serão revertidas.

O complemento implanta pods e implantações de gateway de entrada do Istio por revisão. Se você estiver fazendo uma atualização canário e tiver duas revisões do painel de controle instaladas em seu cluster, talvez seja necessário solucionar problemas de vários pods de gateway de entrada em ambas as revisões.

Lista de verificação de solução de problemas

Etapa 1: Verificar se nenhuma regra de firewall ou NSG bloqueia o gateway de entrada

Verifique se você não tem regras de firewall ou NSG (Grupo de Segurança de Rede) que bloqueiam o tráfego para o gateway de entrada. Você precisa adicionar explicitamente uma regra de DNAT (Conversão de Endereços de Rede de Destino) para permitir o tráfego de entrada por meio do Firewall do Azure para o gateway de entrada.

Etapa 2: Configurar gateways, serviços virtuais e regras de destino corretamente

Ao configurar gateways, serviços virtuais e regras de destino para roteamento de tráfego por meio do gateway de entrada, siga estas etapas:

  1. Verifique se o seletor de gateway de entrada no recurso de gateway está definido como um dos seguintes valores de texto se você estiver usando um gateway externo ou interno, respectivamente:

    • istio: aks-istio-ingressgateway-external
    • istio: aks-istio-ingressgateway-internal
  2. Certifique-se de que as portas estejam definidas corretamente em gateways e serviços virtuais. Para o gateway, a porta deve ser definida como 80 para ou 443 http para https. Para o serviço virtual, a porta deve ser definida como a porta em que o serviço correspondente do aplicativo está escutando.

  3. Verifique se o serviço está exposto dentro da hosts especificação do gateway e do serviço virtual. Se você tiver problemas relacionados ao Host cabeçalho nas solicitações, tente adicionar à lista de permissões todos os hosts que contêm um curinga asterisco ("*"), como neste exemplo de configuração de gateway. No entanto, recomendamos que você não altere a lista de permissões como uma prática de produção. Além disso, a especificação deve ser configurada hosts explicitamente.

Etapa 3: Corrigir a integridade do pod do gateway de entrada

Se o pod do gateway de entrada falhar ou não aparecer no estado pronto, verifique se o pod do plano de controle do daemon (istiod) do Istio está no estado pronto. O gateway de entrada depende de ter a istiod versão pronta.

Se o istiod pod não aparecer no estado pronto, verifique se as definições de recursos personalizados (CRDs) do Istio e o gráfico do base Helm estão instalados corretamente. Para fazer isso, execute o seguinte comando:

helm ls --all --all-namespaces

Você pode ver um erro mais amplo no qual a instalação do complemento não está configurada especificamente para o gateway de entrada.

Se o istiod pod estiver íntegro, mas os pods do gateway de entrada não estiverem respondendo, inspecione os seguintes recursos do gateway de entrada no aks-istio-ingress namespace para coletar mais informações:

  • Versão do Helm
  • Implantação
  • Serviço

Além disso, você pode encontrar mais informações sobre a depuração de gateway e sidecar na solução de problemas do complemento geral do Istio service mesh.

Etapa 4: Configurar a utilização de recursos

A alta utilização de recursos ocorre quando as configurações de réplica mínimas/máximas padrão para Istiod e os gateways não são suficientes. Nesse caso, altere as configurações de dimensionamento automático do pod horizontal.

Etapa 5: solucionar problemas do gateway de entrada seguro

Quando um gateway de entrada externo é configurado para expor um serviço HTTPS seguro usando TLS simples ou mútuo, siga estas etapas de solução de problemas:

  1. Verifique se os INGRESS_HOST_EXTERNAL valores das variáveis de ambiente e SECURE_INGRESS_PORT_EXTERNAL são válidos com base na saída do seguinte comando:

    kubectl -n aks-istio-ingress get service aks-istio-ingressgateway-external
    
  2. Verifique se há mensagens de erro nos logs do controlador de gateway:

    kubectl logs -n aks-istio-ingress <gateway-service-pod>
    
  3. Verifique se os segredos são criados no aks-istio-ingress namespace:

    kubectl -n aks-istio-ingress get secrets
    

Para o exemplo no complemento Secure Ingress Gateway for Istio service mesh para o Serviço de Kubernetes do Azure, o productpage-credential segredo deve ser listado.

Depois de habilitar o complemento do provedor de segredos do Azure Key Vault, você precisa conceder acesso à identidade gerenciada atribuída pelo usuário do complemento ao Azure Key Vault. A configuração incorreta do acesso ao Azure Key Vault impedirá que o productpage-credential segredo seja criado.

Depois de criar o SecretProviderClass recurso, para garantir que os segredos sejam sincronizados do Azure Key Vault com o cluster, verifique se o pod secrets-store-sync-productpage de exemplo que faz referência a esse recurso foi implantado com êxito.

Referências

Aviso de isenção de responsabilidade para informações de terceiros

Os produtos de terceiros mencionados neste artigo são produzidos por empresas independentes da Microsoft. A Microsoft não oferece nenhuma garantia, implícita ou não, do desempenho ou da confiabilidade desses produtos.

Aviso de isenção de responsabilidade para contatos de terceiros

A Microsoft fornece informações de contato de terceiros para ajudá-lo a encontrar informações adicionais sobre esse tópico. Essas informações de contato podem ser alteradas sem aviso prévio. A Microsoft não garante a precisão das informações de contato de terceiros.

Entre em contato conosco para obter ajuda

Se você tiver dúvidas ou precisar de ajuda, crie uma solicitação de suporte ou peça ajuda à comunidade de suporte do Azure. Você também pode enviar comentários sobre o produto para a comunidade de comentários do Azure.