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:
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
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 ou443
http
parahttps
. Para o serviço virtual, a porta deve ser definida como a porta em que o serviço correspondente do aplicativo está escutando.Verifique se o serviço está exposto dentro da
hosts
especificação do gateway e do serviço virtual. Se você tiver problemas relacionados aoHost
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 configuradahosts
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:
Verifique se os
INGRESS_HOST_EXTERNAL
valores das variáveis de ambiente eSECURE_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
Verifique se há mensagens de erro nos logs do controlador de gateway:
kubectl logs -n aks-istio-ingress <gateway-service-pod>
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.
Isenção de responsabilidade de contato de terceiros
A Microsoft fornece informações de contato de terceiros para ajudá-lo a encontrar informações adicionais sobre este 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.