En esta página, se muestra cómo entregar una API desde un dominio personalizado de tu propiedad, por ejemplo, example.com
.
Como alternativa a usar tu propio nombre de dominio, puedes usar un nombre de dominio que administra Google. Consulta Utilizar un dominio administrado por Google para obtener más información.
Antes de comenzar
- Obtén un nombre de dominio desde un registro de nombres de domino si todavía no tienes uno para usar con tu API.
- Verifica la propiedad del dominio.
- Designa el nombre del host de API con tu nombre de dominio.
- Si usas SSL con tu dominio, obtén y sube tu certificado SSL.
- Implementa tu API y tu proxy de servicio extensible (ESP).
Configurar tu proyecto de API para usar tu nombre de dominio
Sigue las instrucciones que figuran en la pestaña correspondiente.
App Engine
Si deseas que tu proyecto de API use el dominio verificado, sigue las instrucciones provistas en la página sobre cómo agregar un dominio personalizado en tu aplicación
Compute Engine
La forma recomendada de entregar una API desde instancias de Compute Engine es usar un balanceador de cargas en un grupo de instancias. Debes reservar una dirección IP externa para el nombre de dominio y usarla con el balanceador de cargas.
Para entregar la API desde un nombre de dominio, haz lo siguiente:
- Reserva una dirección IP externa estática como mínimo en tu proyecto:
- Asígnale el nombre que desees a la dirección IP reservada.
- Para Tipo, haz clic en Global.
- En Adjunto a, haz clic en Ninguno. Adjuntarás la dirección IP a un balanceador de cargas más adelante.
- Visita la cuenta del proveedor de tu dominio y edita la configuración del dominio. Debes crear un registro A que contenga tu nombre de API, por ejemplo,
myapi.example.com
con la dirección IP externa en su campo de datos - Crea un grupo de instancias que incluya las instancias en ejecución en la API y el proxy de servicio extensible (ESP):
- Asígnale cualquier nombre que desees al grupo y agrega una descripción.
- En la lista Zona, haz clic en la zona que usa tu instancia de API.
- En la lista Definición de instancia, haz clic en Seleccionar instancias existentes.
- En el campo Instancias de VM, agrega la instancia de VM que ejecuta la API.
- Haz clic en Crear.
- Crea y configura un balanceador de cargas HTTP(S):
Ir a la página Crear un balanceador de cargas de HTTP(S) nuevo
- Haz clic en Definir un servicio de backend > Crear o seleccionar un servicio de backend.
- Asigna el nombre y la descripción que desees para esta configuración del servicio de backend.
- En el campo Protocolo, selecciona el protocolo que deseas admitir en el balanceador de cargas, HTTP o HTTPS.
- En la lista Grupo de instancias, haz clic en tu grupo de instancias.
- En el campo Números de puerto, ingresa
8080
. - Haz clic en Verificación de estado para configurarla:
- Ingresa un nombre para la configuración de verificación de estado.
- Asigna el puerto
8080
. - Para aceptar los valores predeterminados restantes, haz clic en Guardar.
- Por ahora, acepta los valores predeterminados para el resto de la configuración. Podrás realizar cambios más adelante según sea necesario, por ejemplo, agregar puertos adicionales.
- No necesitas establecer nada en las Reglas de host y enrutamiento; puedes reenviar todo a tu API de backend con los filtros predeterminados de Cualquiera que no coincida. Esto significa que todo el tráfico hacia el balanceador de cargas se dirigirá a la API en el puerto
8080
(el puerto predeterminado), como se definió en los pasos anteriores. - Haga clic en Configuración de frontend.
- En el campo Protocolo, selecciona el protocolo que deseas admitir en el balanceador de cargas, HTTP o HTTPS.
- En la lista IP, haz clic en la dirección IP externa que creaste antes.
- Para el protocolo HTTPS, debes usar SSL. En la lista Certificado, haga clic en el certificado que desees.
- De manera opcional, si deseas admitir otro protocolo, haz clic en Agregar IP y puerto de frontend, especifica el protocolo, la misma dirección IP externa y un puerto diferente.
- Para crear el balanceador de cargas completamente configurado, haz clic en Crear. Si el botón Crear no está habilitado, verifica los componentes que acabas de configurar: debería aparecer una marca de verificación al lado de cada componente de configuración. Si la marca de verificación no está presente, significa que no completaste la configuración.
- Después de que tus cambios de DNS se propaguen, las solicitudes se enviarán a tu API mediante el balanceador de cargas.
GKE
Para entregar una API en un dominio de Google Kubernetes Engine (GKE), debes exponer el ESP como un servicio mediante la dirección IP externa que se muestra para la configuración de DNS de tu dominio. Ten en cuenta que GKE realiza el balanceo de cargas de forma automática.
Para exponer tu API como un servicio, haz lo siguiente:
- Si todavía no tienes uno, configura un servicio de Kubernetes para los backends de tu API. Crea un archivo de configuración de servicio
service.yaml
con un contenido similar al siguiente:apiVersion: v1 kind: Service metadata: name: echo spec: ports: - port: 80 targetPort: 8081 protocol: TCP selector: app: echo-app type: LoadBalancer
- Cambia la etiqueta
selector
para que coincida con tus etiquetas de backend (app: echo-app
, en este ejemplo) - Asegúrese de que
targetPort
coincida con el puerto que usa el ESP configurado en tus backends de API. El ESP usa el puerto8081
de forma predeterminada. - Implementa el servicio de Kubernetes:
kubectl apply -f service.yaml
- Observa la dirección IP externa asignada a tu servicio expuesto:
El resultado muestra una direcciónkubectl get services
EXTERNAL-IP
similar a la siguiente:
NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE hello-node 10.X.XXX.202 10X.XXX.XX.123 8080/TCP 1m
- Cambia la IP externa generada de efímera a estática.
- Selecciona tu dirección IP externa de la lista.
- En la lista Tipo, haz clic en Estática.
- Visita la cuenta del proveedor de tu dominio y edita la configuración del dominio. Debes crear un registro A que contenga tu nombre de API, por ejemplo,
myapi.example.com
, con la dirección IP externa en su campo de datos.