Solución de problemas

¿Por qué recibo un error not found cuando agrego un extremo?

Si recibes errores 404 cuando agregas servicios o extremos, asegúrate de haber creado el espacio de nombres y el servicio (en ese orden) antes de agregar un extremo. El servicio debe existir antes de que puedas agregar extremos adicionales.

Cuando busco un servicio, ¿por qué no obtengo ninguno de mis extremos?

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 el lugar en el que registraste los extremos. Todos los servicios del directorio de servicios se encuentran en un espacio de nombres regional, por lo que los servicios registrados con una región no coinciden con los datos de una región independiente.

Le otorgué acceso a un servicio a alguien, pero sigue recibiendo permission denied.

Esto podría deberse a varios motivos. Primero, verifica que la región sea correcta. Si configuras una política en un espacio de nombres o un servicio, esta solo se aplica a esa región en particular. Si el usuario intenta registrar o buscar el mismo servicio en otra región, no tendrá acceso, a menos que también le otorgues acceso de IAM a ese servicio regional. Para depurar problemas de acceso, prueba el método TestIamPermissions para servicios y espacios de nombres.

Agregué algunos extremos y, luego, quité el backend del servicio. ¿Por qué los extremos siguen allí?

El Directorio de servicios no realiza verificaciones de estado ni pings automáticos, ni tampoco quita extremos, a menos que los quites de forma explícita. Asegúrate de agregar código a tus orquestadores o backends de servicios que quiten el extremo del Directorio de servicios una vez que ya no exista. Recomendamos el uso de campos de anotación de tiempo de vida en los extremos para registrar la última vez que se registró o actualizó un extremo.

Puedo buscar extremos, pero cada vez que intento conectarme a ellos, se produce un error.

El Directorio de servicios no garantiza la accesibilidad desde el cliente. Los servicios registran sus extremos directamente con el Directorio de servicios. Sin embargo, es posible que la dirección registrada en el Directorio de servicios no sea enrutable (especialmente si el cliente y el servidor se encuentran en redes privadas independientes). Si el extremo se puede enrutar desde el cliente, es posible que se deba a un extremo en mal estado. Consulta la siguiente pregunta.

¿Cómo puedo agregar datos de estado para los extremos para que mis clientes sepan a cuál conectarse?

Cuando se usa el balanceo de cargas del cliente, se recomienda que los backends de servicio actualicen, de vez en cuando, un campo de anotación en el extremo que los clientes puedan usar para tomar decisiones sobre a qué backend conectarse. El Directorio de servicios no inspecciona ni evalúa estos datos.

Creé un espacio de nombres. ¿Por qué no puedo asignarle una zona privada de Cloud DNS?

Asegúrate de tener el permiso de IAM servicedirectory.namespaces.associatePrivateZone para el espacio de nombres, ya que este permiso te permite crear la zona privada asociada. De forma predeterminada, los roles de editor del proyecto, propietario del proyecto, administrador del directorio de servicios y editor del directorio de servicios tienen este permiso.

Cuando realizo una búsqueda DNS de un servicio, ¿por qué no obtengo ninguno de mis extremos?

Puede haber varios motivos, como los siguientes:

  1. Se borró el espacio de nombres asociado. Para verificar esto, ejecuta el comando get en la zona privada. Si se configuró serviceDirectoryConfig.deletionTime, se borraron el espacio de nombres asociado y todos sus extremos.
  2. Confirma que estás enviando la solicitud desde una red que tiene permiso para consultar la zona privada. Para encontrar la lista de redes, ejecuta el comando get en la zona privada.
  3. No hay extremos (válidos) para el servicio. Ejecuta el comando resolve en el servicio a través de la API de Service Directory para asegurarte de que el servicio no esté vacío y tenga al menos una IP de extremo válida. La compatibilidad con DNS solo está disponible para extremos con direcciones IP IPv4 o IPv6 válidas.
  4. Asegúrate de consultar la zona correcta. Por ejemplo, imagina que creas una zona del Directorio de servicios llamada example.com y tienes otra zona privada (estándar) llamada facturación.example.com. Entonces, cualquier consulta de DNS a facturación.example.com muestra registros de recursos que pertenecen a la zona facturación.example.com y no al servicio facturación del espacio de nombres del Directorio de servicios asociado con example.com. Para obtener más información, consulta Orden de resolución de nombres.

¿Por qué mis servicios de GKE no se sincronizan con el Directorio de servicios?

Puede haber varios motivos, como los siguientes:

  1. Confirma que tienes un ServiceDirectoryRegistrationPolicy implementado en tu clúster de GKE para el espacio de nombres que intentas sincronizar. Además, confirma que los servicios que intentas sincronizar coincidan con el selector de etiquetas de tu política.
  2. Ya existe un espacio de nombres del Directorio de servicios que se creó manualmente o con alguna otra integración con el mismo nombre que el espacio de nombres de GKE que intentas sincronizar. Debes cambiar el nombre o borrar el espacio de nombres del Directorio de servicios existente para que no haya conflictos.
  3. Se quitaron los permisos de tu cuenta de servicio del Directorio de servicios. Asegúrate de que service-{PROJECT_NUMBER}@gcp-sa-servicedirectory.iam.gserviceaccount.com tenga el permiso de IAM Service Directory Service Agent. Para obtener detalles sobre IAM, consulta la documentación de IAM.

¿Qué sigue?