¿Por qué aparece un error not found
al añadir un endpoint?
Si recibes errores 404 al añadir servicios o endpoints, asegúrate de haber creado tanto el espacio de nombres como el servicio (en ese orden) antes de añadir un endpoint. El servicio debe existir para que puedas añadir endpoints adicionales.
Cuando busco un servicio, ¿por qué no aparece ninguno de mis endpoints?
Asegúrate de que el proyecto, la región, el nombre del espacio de nombres y el nombre del servicio sean correctos en tu solicitud y coincidan con los datos que proporcionaste al registrar los endpoints. Todos los servicios de Directory de servicios se encuentran en un espacio de nombres regional, por lo que los servicios registrados en una región no coinciden con los datos de otra región.
He concedido acceso a un servicio a un usuario, pero sigue recibiendo el mensaje permission denied
.
Esto puede deberse a varios motivos. Primero, comprueba que la región sea correcta.
Si defines una política en un espacio de nombres o un servicio, solo se aplicará a esa región concreta. Si el usuario intenta registrar o buscar el mismo servicio en otra región, no tendrá acceso a él a menos que le concedas acceso de gestión de identidades y accesos a ese servicio regional. Para depurar problemas de acceso, prueba el método TestIamPermissions
para servicios y espacios de nombres.
He añadido algunos endpoints y, después, he quitado el backend del servicio. ¿Por qué siguen ahí los endpoints?
Service Directory no realiza comprobaciones automáticas del estado ni envía señales de latido, y no elimina los endpoints a menos que lo hagas explícitamente. Asegúrate de añadir código a tus back-ends u orquestadores de servicios para eliminar el endpoint de Directorio de servicios cuando ya no exista. Recomendamos usar campos de anotación de tiempo de vida en los endpoints para registrar la última vez que se registró o actualizó un endpoint.
Puedo buscar endpoints, pero cada vez que intento conectarme a ellos, falla.
Service Directory no garantiza la accesibilidad desde el cliente. Los servicios registran sus endpoints directamente en Directorio de servicios. Sin embargo, es posible que la dirección registrada en el directorio de servicios no se pueda enrutar (sobre todo si el cliente y el servidor están en redes privadas independientes). Si el cliente puede enrutar el endpoint, puede deberse a que el endpoint no está en buen estado. Consulta la siguiente pregunta.
¿Cómo puedo añadir datos de salud para los endpoints de forma que mis clientes sepan a cuál conectarse?
Cuando se usa el balanceo de carga del lado del cliente, recomendamos que los back-ends del servicio actualicen ocasionalmente un campo de anotación en el endpoint que los clientes puedan usar para decidir a qué back-end conectarse. Service Directory no inspecciona ni evalúa estos datos.
He creado un espacio de nombres. ¿Por qué no puedo asignarle una zona privada de Cloud DNS?
Asegúrate de que tienes el servicedirectory.namespaces.associatePrivateZone
permiso de gestión de identidades y accesos para el espacio de nombres, ya que este permiso te permite crear la zona privada asociada. De forma predeterminada, los roles Editor del proyecto, Propietario del proyecto, Administrador de Service Directory y Editor de Service Directory tienen este permiso.
Cuando hago una búsqueda de DNS de un servicio, ¿por qué no obtengo ninguno de mis endpoints?
Puede deberse a varios motivos, como los siguientes:
- Se ha eliminado el espacio de nombres asociado. Para comprobarlo, ejecuta el comando
get
en la zona privada. Si se ha definidoserviceDirectoryConfig.deletionTime
, se ha eliminado el espacio de nombres asociado y todos sus endpoints. - Confirma que estás enviando la solicitud desde una red que tiene permiso para consultar la zona privada. Para ver la lista de redes, ejecuta el comando
get
en la zona privada. - El servicio no tiene ningún endpoint (válido). Ejecuta el comando
resolve
en el servicio a través de la API Service Directory para asegurarte de que el servicio no esté vacío y tenga al menos una IP de endpoint válida. La compatibilidad con DNS solo está disponible para los endpoints con direcciones IP IPv4 o IPv6 válidas. - Asegúrate de que estás consultando la zona correcta. Por ejemplo, supongamos que creas una zona de Service Directory llamada example.com y que tienes otra zona privada (estándar) llamada billing.example.com. Entonces, cualquier consulta de DNS a billing.example.com devuelve registros de recursos que pertenecen a la zona billing.example.com y no al servicio billing del espacio de nombres de Service Directory asociado a example.com.Para obtener más información, consulta Orden de resolución de nombres.
¿Por qué no se sincronizan mis servicios de GKE con Service Directory?
Puede deberse a varios motivos, como los siguientes:
- Confirma que tienes un
ServiceDirectoryRegistrationPolicy
implementado en tu clúster de GKE para el espacio de nombres que estás intentando sincronizar. Además, confirma que los servicios que intentas sincronizar coinciden con el selector de etiquetas de tu política. - Ya existe un espacio de nombres de Service Directory que se creó manualmente o mediante otra integración con el mismo nombre que el espacio de nombres de GKE que estás intentando sincronizar. Debes cambiar el nombre o eliminar el espacio de nombres de Directorio de servicios que ya tengas para que no haya conflictos.
- Se han eliminado los permisos de tu cuenta de servicio del directorio de servicios.
Comprueba que
service-{PROJECT_NUMBER}@gcp-sa-servicedirectory.s3ns-system.iam.gserviceaccount.com
tiene el permiso de gestión de identidades y accesosService Directory Service Agent
. Para obtener más información sobre la gestión de identidades y accesos, consulta la documentación de IAM.
Siguientes pasos
- Para obtener más información sobre las funciones, consulta la descripción general de Service Directory.
- Para obtener más ayuda, consulta el artículo Obtener asistencia.