Risoluzione dei problemi

Perché viene visualizzato un errore not found quando aggiungo un endpoint?

Se ricevi errori 404 quando aggiungi servizi o endpoint, assicurati di aver creato sia lo spazio dei nomi sia il servizio (in questo ordine) prima di aggiungere un endpoint. Il servizio deve esistere prima di poter aggiungere altri endpoint.

Quando cerco un servizio, perché non ricevo nessuno dei miei endpoint?

Assicurati che il progetto, la regione, il nome dello spazio dei nomi e il nome del servizio siano corretti nella richiesta e corrispondano a dove hai registrato gli endpoint. Tutti i servizi Service Directory si trovano in uno spazio dei nomi regionale, pertanto i servizi registrati in una regione non corrispondono ai dati in una regione separata.

Ho concesso a qualcuno l'accesso a un servizio, ma continua a ricevere permission denied.

Ciò potrebbe essere dovuto a diversi motivi. Innanzitutto, controlla che la regione sia corretta. Se imposti un criterio per uno spazio dei nomi o un servizio, questo criterio si applica solo alla regione in questione. Se l'utente sta tentando di registrare o cercare lo stesso servizio in un'altra regione, non avrà accesso a meno che non gli venga concesso l'accesso IAM anche a quel servizio regionale. Per eseguire il debug dei problemi di accesso, prova il metodo TestIamPermissions per i servizi e gli spazi dei nomi.

Ho aggiunto alcuni endpoint e poi ho rimosso il backend del servizio. Perché gli endpoint sono ancora presenti?

Service Directory non esegue controlli di integrità automatici o heartbeat e non rimuove gli endpoint, a meno che tu non li rimuovi esplicitamente. Assicurati di aggiungere codice ai backend/orchestratori dei servizi che rimuove l'endpoint da Service Directory quando non esiste più. Ti consigliamo di utilizzare i campi di annotazione TTL sugli endpoint per registrare l'ultima volta che un endpoint è stato registrato o aggiornato.

Riesco a cercare gli endpoint, ma ogni volta che provo a connettermi non ci riesco.

Service Directory non garantisce la raggiungibilità dal client. I servizi registrano i propri endpoint direttamente in Service Directory. Tuttavia, l'indirizzo registrato con Service Directory potrebbe non essere instradabile (soprattutto se il client e il server si trovano su reti private separate). Se l'endpoint è indirizzabile dal client, il problema potrebbe essere dovuto a un endpoint non integro. Vedi la domanda che segue.

Come faccio ad aggiungere dati di salute per gli endpoint in modo che i miei clienti sappiano a quale connettersi?

Quando utilizzi il bilanciamento del carico lato client, consigliamo ai backend dei servizi di aggiornare di tanto in tanto un campo di annotazione sull'endpoint che i client possono utilizzare per prendere decisioni su a quale backend connettersi. Service Directory non esamina né valuta questi dati.

Ho creato uno spazio dei nomi. Perché non riesco ad assegnargli una zona Cloud DNS privata?

Assicurati di disporre dell'autorizzazione IAM servicedirectory.namespaces.associatePrivateZone per lo spazio dei nomi, in quanto ti consente di creare la zona privata associata. Per impostazione predefinita, i ruoli Editor progetto, Proprietario del progetto, Amministratore del directory dei servizi ed Editor del directory dei servizi dispongono di questa autorizzazione.

Quando eseguo una ricerca DNS di un servizio, perché non ricevo nessuno dei miei endpoint?

I motivi potrebbero essere diversi, ad esempio:

  1. Lo spazio dei nomi associato è stato eliminato. Puoi verificarlo eseguendo il comando get nella zona privata. Se serviceDirectoryConfig.deletionTime è impostato, lo spazio dei nomi associato e tutti i relativi endpoint sono stati eliminati.
  2. Conferma di inviare la richiesta da una rete autorizzata a eseguire query sulla zona privata. Puoi trovare l'elenco delle reti eseguendo il comando get nella zona privata.
  3. Non esistono endpoint (validi) per il servizio. Esegui il comando resolve sul servizio tramite l'API Service Directory per assicurarti che il servizio non sia vuoto e che abbia almeno un indirizzo IP endpoint valido. Il supporto DNS è disponibile solo per gli endpoint con indirizzi IP IPv4 o IPv6 validi.
  4. Assicurati di eseguire la query sulla zona corretta. Ad esempio, supponiamo che tu crei una zona di Service Directory denominata example.com e che tu abbia un'altra zona privata (standard) denominata fatturazione.example.com. Quindi, qualsiasi query DNS a fatturazione.example.com restituisce record di risorse che appartengono alla zona fatturazione.example.com e non al servizio fatturazione nell'ambito dello spazio dei nomi di Service Directory associato a example.com.Per ulteriori informazioni, consulta Ordine di risoluzione dei nomi.

Perché i miei servizi GKE non si sincronizzano con Service Directory?

I motivi potrebbero essere diversi, ad esempio:

  1. Verifica di aver eseguito il deployment di un ServiceDirectoryRegistrationPolicy nel tuo cluster GKE per lo spazio dei nomi che stai tentando di sincronizzare. Verifica inoltre che i servizi che stai tentando di sincronizzare corrispondano al selettore di etichette nel criterio.
  2. Esiste già uno spazio dei nomi Service Directory creato manualmente o utilizzando un'altra integrazione con lo stesso nome dello spazio dei nomi GKE che stai tentando di sincronizzare. Devi rinominare o eliminare lo spazio dei nomi Service Directory esistente in modo che non ci siano conflitti.
  3. Le autorizzazioni del tuo account di servizio Service Directory sono state rimosse. Assicurati che service-{PROJECT_NUMBER}@gcp-sa-servicedirectory.iam.gserviceaccount.com disponga dell'autorizzazione IAM Service Directory Service Agent. Per maggiori dettagli su IAM, consulta la documentazione di IAM.

Passaggi successivi