Como resolver problemas de configuração

Esta seção explica problemas comuns do Cloud Service Mesh e como resolvê-los. Se você precisar de mais ajuda, consulte Como receber suporte.

Como verificar MembershipState

A qualquer momento, você pode verificar o status mais recente da malha executando o seguinte comando:

gcloud container fleet mesh describe

A saída é semelhante a:

...
membershipSpecs:
  projects/project_id/locations/global/memberships/cluster:
    mesh:
      management: MANAGEMENT_AUTOMATIC
membershipStates:
  projects/project_id/locations/global/memberships/cluster:
    servicemesh:
      ...
      conditions:
        - code: CONFIG_VALIDATION_WARNING
          documentationLink: https://cloud.google.com/...
          details: Application of one or more configs has failed. Error details are shown on individual config resources. See documentation link for more detail.
          severity: WARNING
...

Códigos de erro de MembershipState

Se o Cloud Service Mesh informar condições para o MembershipState de um cluster, isso pode significar que as configurações da malha (como os recursos personalizados do Istio) não puderam ser aplicadas. As descrições de código de erro a seguir oferecem mais informações sobre como resolvê-los.

Código do erro Causa Resolução
CONFIG_APPLY_INTERNAL_ERROR Uma ou mais configurações não foram aplicadas devido a um erro interno. Entre em contato com o suporte ao cliente.
QUOTA_EXCEEDED_* Uma ou mais configurações não foram aplicadas porque os recursos atingiram o limite de cota. Consulte Cotas para informações sobre as cotas específicas e como aumentá-las.
CONFIG_VALIDATION_ERROR Não foi possível aplicar uma ou mais configurações devido a uma configuração inválida. Erros específicos são gravados nas configurações que os causaram. Mais informações sobre como diagnosticar esses problemas estão descritas na seção Erros de validação de configuração.
CONFIG_VALIDATION_WARNING Encontramos possíveis problemas em uma ou mais configurações. Talvez elas não tenham sido aplicadas, e, se tiverem sido, talvez haja um comportamento não intencional. Mais informações sobre como diagnosticar esses problemas estão descritas na seção Erros de validação de configuração.
MULTICLUSTER_SECRET_WARNING O cluster está usando um segredo de vários clusters do Istio criado manualmente em vez de usar a API declarativa de vários clusters para descoberta de endpoints. Mover a configuração de descoberta de endpoints de vários clusters para a implementação declarativa. Confira mais informações na página Secrets de vários clusters.
WORKLOAD_IDENTITY_REQUIRED A identidade da carga de trabalho não está ativada para o cluster ou pelo menos um dos pools de nós. Ative a identidade da carga de trabalho no cluster e no nodepool. Para instruções, consulte a página Ativar a identidade da carga de trabalho.
MANAGED_CNI_NOT_ENABLED A CNI gerenciada não está ativada para este cluster. Ative a CNI gerenciada para manter as práticas recomendadas na sua malha. Confira mais informações na página Ativar CNI gerenciada.
NON_STANDARD_SIDECAR_BINARY_USAGE Um ou mais comandos nos contêineres do Istio estão usando binários diferentes de "envoy", "pilot_agent" ou "iptables". Remover a dependência de binários sem suporte. Confira mais informações na página Uso de binários sem suporte.
UNSUPPORTED_GATEWAY_CLASS_USAGE O cluster está configurado com classes de gateway (Istio e Anthos Service Mesh) que exigem a migração para o gateway de entrada do Istio para se alinhar às práticas recomendadas. Consulte a documentação para ver as instruções detalhadas.

Erros de validação de configuração

Os códigos CONFIG_VALIDATION_WARNING e CONFIG_VALIDATION_ERROR indicam que foram encontrados problemas nas configurações de malha (Istio ou recursos personalizados do Kubernetes) e que um subconjunto de configurações pode não ter sido aplicado corretamente.

Muitos detalhes de erro por recurso são gravados no recurso aplicável. O comando a seguir pode ser usado para localizar as configurações inválidas e conferir as mensagens de erro específicas. Observação: esses erros são específicos para recursos do Istio, e nem todos os erros de validação são exibidos aqui.

for resource in serviceentries destinationrules virtualservices gateways peerauthentications authorizationpolicies requestauthentications sidecars telemetries envoyfilters;
  do kubectl get $resource --all-namespaces --output=json | \
   jq  '.items[] | select(.status.conditions != null and any(.status.conditions[]; .type == "Accepted" and .status == "False")) | {"name": .metadata.name, "namespace": .metadata.namespace, "kind": .kind, "conditions": .status.conditions}';
done

A saída é semelhante a:

{
  "name": "demo-envoy-filter",
  "namespace": "default",
  "kind": "EnvoyFilter",
  "conditions": [
    {
      "lastTransitionTime": "2024-04-04T21:10:18.046975988Z",
      "message": "This API is not supported",
      "reason": "Invalid",
      "status": "False",
      "type": "Accepted"
    }
  ]
}