Después de crear un servicio o una función, Cloud Run te proporciona un extremo HTTPS para el servicio. Puedes habilitar el servicio para que se ejecute en respuesta a solicitudes HTTPS.
Todos los servicios de Cloud Run tienen una URL HTTPS estable, que representa el extremo HTTPS predeterminado del servicio, aunque también puedes configurar dominios personalizados.
Estos son algunos de los casos de uso:
- API web de RESTful personalizada
- Microservicio privado
- Middleware HTTP o proxy inverso para tus aplicaciones web
- Aplicación web empaquetada de forma previa
Crea servicios públicos
Para crear un servicio público en Cloud Run, se requiere lo siguiente:
- Acceso al servicio desde la Internet pública
- Una URL destinada al uso público
A fin de hacer público un servicio, configúralo para permitir el acceso no autenticado (público) cuando realices la implementación, o en cualquier momento después de la implementación.
URL de servicio
Cloud Run asigna una URL no determinista basada en un hash a todos los servicios. Si la longitud del nombre del servicio lo permite, Cloud Run también le asigna una URL determinista.
Puedes inhabilitar estas URLs run.app
predeterminadas.
Para recuperar la URL de tu servicio, haz clic en el nombre del servicio en la console de Google Cloud o ejecuta el siguiente comando en gcloud CLI:
gcloud run services describe SERVICE --format 'value(status.url)'
La URL determinista tiene prioridad cuando se muestra.
URL determinista
La URL determinista te permite predecir la URL del servicio antes de que se cree, lo que puede ser útil para la comunicación entre servicios.
La URL determinista solo está disponible para segmentos DNS de 63 caracteres o menos. El segmento DNS contiene el nombre del servicio, el número de proyecto y cualquier etiqueta de tráfico.
La URL determinista de un servicio de Cloud Run tiene el siguiente formato:
https://[TAG---]SERVICE_NAME-PROJECT_NUMBER.REGION.run.app
Donde:
- TAG es la etiqueta de tráfico opcional para la revisión que solicitas.
- PROJECT_NUMBER es el número de proyecto de Google Cloud.
- SERVICE_NAME es el nombre del servicio de Cloud Run.
- REGION es el nombre de la región, como
us-central1
.
URL no determinista
Las URLs no deterministas no tienen un formato determinista, lo que significa que, debido a que el segundo campo de la URL es un hash aleatorio, no puedes predecir cuál será la URL completa antes de implementar los servicios. Sin embargo, después de implementar el servicio, la URL permanece estable.
La URL no determinista de un servicio de Cloud Run tiene el formato https://[
TAG---]
SERVICE_IDENTIFIER.run.app
, en el que TAG se refiere a la etiqueta de tráfico opcional para la revisión que solicitas, y SERVICE_IDENTIFIER es un identificador estable y único de un servicio de Cloud Run. No analices
SERVICE_IDENTIFIER, ya que no tiene un formato fijo. La
La lógica para la generación de SERVICE_IDENTIFIER está sujeta a cambios.
Redireccionamiento de HTTP a HTTPS
Cloud Run redirecciona todas las solicitudes HTTP a HTTPS, pero finaliza TLS antes de que lleguen a tu servicio web. Si tu servicio genera recursos web que hacen referencia a otros recursos web con URLs no seguras (http://
), tu página podría estar sujeta a advertencias o errores de contenido mixto.
Usa el protocolo https
para todos los URI web de referencia o justifica las directivas de proxy en la solicitud HTTP, como el encabezado HTTP X-Forwarded-Proto
.
HTTP y HTTP/2
De manera predeterminada, Cloud Run pasa las solicitudes HTTP/2 a HTTP/1 cuando estas se envían al contenedor. Si deseas configurar explícitamente tu servicio para que use HTTP/2 de extremo a extremo, consulta Usa HTTP/2.
Crea servicios privados
A fin de crear un servicio privado en Cloud Run, debes limitar el acceso al servicio. Para ello, aprovecha el permiso de invocador de IAM.
También puedes limitar el acceso a un servicio mediante el mecanismo de autenticación y autorización a nivel de la aplicación, por ejemplo, mediante Identity Platform.
Prueba servicios privados
La forma más fácil de probar los servicios privados es usar el proxy de Cloud Run en Google Cloud CLI.
De esta forma, se envía mediante proxy el servicio privado a http://localhost:8080
(o al puerto especificado con --port
) y se proporciona el token de la cuenta activa o cualquier otro token que especifiques.
Esto te permite usar un navegador web o una herramienta como curl
.
Esta es la forma recomendada de probar de manera privada un sitio web o una API en el navegador.
Puedes enviar un proxy de un servicio de forma local con la siguiente línea de comandos en un entorno de Linux, macOS, WSL (recomendado) o cygwin:
gcloud run services proxy SERVICE --project PROJECT-ID
También puedes probar servicios privados sin el proxy mediante una herramienta como curl
y pasar un token de autenticación en el encabezado Authorization
:
curl -H "Authorization: Bearer $(gcloud auth print-identity-token)" SERVICE_URL
Servicio a servicio privado
Un servicio de Cloud Run puede llamar a otro servicio de Cloud Run administrado con la autenticación de servicio a servicio.
Código de muestra que invoca un servicio privado
Para ver muestras de código que muestran cómo obtener un token de ID y realizar una solicitud HTTP a un servicio privado, consulta el tema Autentica servicio a servicio.
Usa un middleware para mejorar tu servicio
Los proxies HTTPS pueden descargar funciones comunes de un servicio HTTP, como el almacenamiento en caché, la validación de solicitudes o la autorización. En el caso de los microservicios, muchos proxies HTTP son parte de una solución de puerta de enlace de la API o una malla de servicios, como Istio.
Puedes usar los productos de Google Cloud que se mencionan a continuación para mejorar tu servicio de Cloud Run:
Puerta de enlace de API, que puedes usar para crear, asegurar y supervisar las API y usarlas como proxies de otros servicios de Cloud Run.
Firebase Hosting, que puedes usar para compilar un frontend de aplicación web a fin de usarlo con Cloud Run como backend dinámico.
Cómo invocar una función con una solicitud HTTPS
De forma predeterminada, todas las funciones creadas en Cloud Run tienen una URL HTTPS de run.app
, que se puede usar para activar una función. Las funciones creadas con un activador de
Eventarc también tendrán una URL HTTPS, a menos que inhabilites esta opción con
la función para inhabilitar la URL de run.app
.