Como resolver problemas de configuração

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

Verificando MembershipState

A qualquer momento, é possível 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 do MembershipState

Se o Cloud Service Mesh informar condições para o MembershipState de um cluster, isso poderá significar que as configurações da malha (como recursos personalizados do Istio) não puderam ser aplicadas. As descrições de códigos de erro a seguir fornecem mais informações sobre como resolver esses problemas.

Código do erro Causa Resolução
CONFIG_APPLY_INTERNAL_ERROR Não foi possível aplicar uma ou mais configurações 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 um limite de cota. Consulte Cotas para informações sobre as cotas específicas e como aumentá-las.
CONFIG_VALIDATION_ERROR Uma ou mais configurações não foram aplicadas devido a uma configuração inválida. Os erros específicos são gravados nas configurações que os causaram. Mais informações sobre como diagnosticar esses erros 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. Elas podem não ter sido aplicadas e, se foram, podem ter um comportamento não intencional. Mais informações sobre como diagnosticar esses erros estão descritas na seção Erros de validação de configuração.
MULTICLUSTER_SECRET_WARNING O cluster está usando um segredo do Istio de vários clusters criado manualmente em vez de usar a API declarativa de vários clusters para descoberta de endpoints. Mova a configuração de descoberta de endpoints de vários clusters para a implementação declarativa. Para mais informações, consulte a 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 nível do cluster e do pool de nós. 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 malha. Para mais informações, consulte a página Ativar a 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". Remova a dependência de binários não compatíveis. Para mais informações, consulte a página Uso de binários não compatíveis.
UNSUPPORTED_GATEWAY_CLASS_USAGE O cluster está configurado com classes de gateway (Istio e Anthos Service Mesh) que exigem migração para o gateway de entrada do Istio para se alinhar às práticas recomendadas. Consulte a documentação para instruções detalhadas.
UNSUPPORTED_MULTIPLE_CONTROL_PLANES O cluster provisionou vários canais do plano de controle. O Cloud Service Mesh é compatível com apenas um canal por cluster. Para mais informações, consulte Corrigir vários planos de controle.

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 (recursos personalizados do Istio ou do Kubernetes) e que um subconjunto de configurações pode não ter sido aplicado corretamente.

Muitos detalhes de erros por recurso são gravados no recurso aplicável. O comando a seguir pode ser usado para localizar as configurações inválidas e ver 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 podem ser mostrados 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"
    }
  ]
}