Solução de problemas

Por que recebo um erro not found ao adicionar um endpoint?

Se você receber erros 404 ao adicionar serviços ou endpoints, verifique se criou o namespace e o serviço (nessa ordem) antes de adicionar um endpoint. O serviço precisa existir antes de você adicionar outros endpoints.

Por que não consigo acessar meus endpoints quando procuro um serviço?

Verifique se o projeto, a região, o nome do namespace e o nome do serviço estão corretos na solicitação e correspondem ao local em que você registrou os endpoints. Todos os serviços do diretório de serviços estão em um namespace regional. Portanto, os serviços registrados em uma região não correspondem aos dados em outra região.

Concedi a alguém acesso a um serviço, mas ele continua recebendo permission denied.

Isso pode acontecer por alguns motivos. Primeiro, verifique se a região está correta. Se você definir uma política em um namespace ou serviço, ela será aplicada apenas a essa região específica. Se o usuário tentar registrar ou procurar o mesmo serviço em outra região, ele não terá acesso, a menos que você também conceda acesso do IAM a esse serviço regional. Para depurar problemas de acesso, tente o método TestIamPermissions para serviços e namespaces.

Adicionei alguns endpoints e removi o back-end do serviço. Por que os endpoints ainda estão lá?

O Diretório de serviços não faz verificações de integridade nem batimentos cardíacos automáticos e não remove endpoints, a menos que você faça isso explicitamente. Adicione código aos back-ends/orquestadores de serviço que removem o endpoint do Diretório de serviços quando ele não existir mais. Recomendamos o uso de campos de anotação de tempo de vida útil em endpoints para registrar a última vez que um endpoint foi registrado ou atualizado.

Consigo procurar endpoints, mas toda vez que tento me conectar a eles, ocorre uma falha.

O Diretório de serviços não garante a acessibilidade do cliente. Os serviços registram os endpoints diretamente no Diretório de serviços. No entanto, o endereço registrado no Diretório de serviços pode não ser roteável, especialmente se o cliente e o servidor estiverem em redes privadas separadas. Se o endpoint puder ser roteado pelo cliente, isso pode ser devido a um endpoint não disponível. Confira a próxima pergunta.

Como posso adicionar dados de integridade para endpoints para que meus clientes saibam com qual deles se conectar?

Ao usar o balanceamento de carga do lado do cliente, recomendamos que os back-ends de serviço atualizem ocasionalmente um campo de anotação no endpoint que os clientes podem usar para tomar decisões sobre qual back-end se conectar. O Diretório de serviços não inspeciona nem avalia esses dados.

Criei um namespace. Por que não é possível atribuir uma zona particular do Cloud DNS a ela?

Verifique se você tem a permissão servicedirectory.namespaces.associatePrivateZone do IAM para o namespace, já que ela permite criar a zona particular associada. Por padrão, os papéis de editor de projeto, proprietário de projeto, administrador do diretório de serviços e editor do diretório de serviços têm essa permissão.

Por que não consigo acessar meus endpoints quando faço uma pesquisa DNS de um serviço?

Isso pode acontecer por vários motivos, como:

  1. O namespace associado foi excluído. Para verificar isso, execute o comando get na zona particular. Se o serviceDirectoryConfig.deletionTime estiver definido, o namespace associado e todos os endpoints dele foram excluídos.
  2. Confirme que você está emitindo a solicitação de uma rede autorizada a consultar a zona particular. Para encontrar a lista de redes, execute o comando get na zona particular.
  3. Não há endpoints (válidos) para o serviço. Execute o comando resolve no serviço usando a API Service Directory para garantir que o serviço não esteja vazio e tenha pelo menos um IP de endpoint válido. O suporte a DNS está disponível apenas para endpoints com endereços IP IPv4 ou IPv6 válidos.
  4. Verifique se você está consultando a zona correta. Por exemplo, suponha que você crie uma zona do diretório de serviços chamada example.com e tenha outra zona particular (padrão) chamada billing.example.com. Então, qualquer consulta DNS para billing.example.com retorna registros de recurso que pertencem à zona billing.example.com, e não ao serviço billing no namespace do diretório de serviços associado a example.com.Para mais informações, consulte Ordem de resolução de nomes.

Por que meus serviços do GKE não estão sincronizando com o Diretório de serviços?

Isso pode acontecer por vários motivos, como:

  1. Confirme se você tem um ServiceDirectoryRegistrationPolicy implantado no cluster do GKE para o namespace que está tentando sincronizar. Além disso, confirme se os serviços que você está tentando sincronizar correspondem ao seletor de rótulo na sua política.
  2. Já existe um namespace do Diretório de serviços criado manualmente ou usando outra integração com o mesmo nome do namespace do GKE que você está tentando sincronizar. É necessário renomear ou excluir o namespace do Diretório de serviços para que não haja conflitos.
  3. As permissões da sua conta de serviço do Diretório de serviços foram removidas. Verifique se service-{PROJECT_NUMBER}@gcp-sa-servicedirectory.iam.gserviceaccount.com tem a permissão Service Directory Service Agent do IAM. Para detalhes sobre o IAM, consulte a documentação do IAM.

A seguir