Configurar Cloud Endpoint y Autenticación API KEY GCP

Cómo exponer un microservicio desplegado en GKE a través de Cloud Endpoint incorporando una API KEY.

Mauricio Echeverria
GDG Cloud Santiago
6 min readSep 26, 2020

--

Descripción

Cloud Endpoint es un sistema de administración de API que proporciona funciones para ayuda crear, mantener y proteger sus APIS.

Para identificar un servicio que envía solicitudes a tu API, usas una API key generada en GCP. El servicio de llamadas emplea la Api key y enviarlo en la solicitud a tu API.

Pre-requisitos

  • Definir Contrato Openapi.yaml en version 2.0
  • Habilitar APIS
  • Crear recursos GCP (IP EXTERNA, Cluster GKE y Service Accounts)
  • Generar archivos k8s

Requisitos Técnicos

Google Cloud Platform

  • Una cuenta personal de Google Cloud
  • SDK de Google Cloud

Contrato openapi-jwt.yaml

Para integrar CloudEndpoint en el contrato se debe agregar la siguiente sintaxis.

Para agregar la autenticación con Api Key se debe agregar la siguiente sintaxis.

DOMAIN_OPENAPI : Dominio al cual sera asociado el contrato, se puede ocupar un dominio propio o uno generado por google.

IP_RESERVADA : En la sección target del contrato solo aplica si se utiliza el dominio generado por google.

Al rellenar los campos mencionados es necesario desplegar el contrato en GCP.

Habilitar APIS en GCP

Generar Recursos GCP

Crear Ip externa ip-cloudendpoint de tipo Global

VPC NETWORK >> External IP Adressess >> Reserve static address

Crear Cluster GKE

kubernetes Engine >> Cluster >> Create Cluster

Service Accounts

IAM & ADMIN >> Service Accounts >> Create Service Accounts

Para este ejemplo se creará una cuenta de servicio

Se debe crear una cuenta de servicio para realizar la integración con el endpoint desplegado, para que tenga acceso al contrato.

El permiso que debe tener es el siguiente: Service Controller

Desplegar contrato openapi en cloud endpoint

Contrato Desplegado

Paths Contrato Desplegado

Generar API KEY

Se generan credenciales de tipo API KEY

Después de crear la cuenta de servicio se procede a editar la configuración para asignarla a nuestro contrato desplegado en Cloudendpoint.

Habilitar API Desplegada

Generar Archivos K8S

Deployment.yaml

En el despliegue se encontraran 2 componentes, el cliente de cloudendpoint y el componente con las características desplegadas en el contrato openapi.

La propiedad service en el deployment debe ser reemplazada por el valor desplegado en su contrato.

Ejemplo:

Service.yaml

Ingress.yaml

Se genera el namespace cloud-endpoint y el secreto con el contenido de la cuenta de servicio para acceder al contrato desplegado en cloudendpoint.

Ya teniendo los archivos se realiza el despliegue de los componentes en el cluster GKE:

Verificar servicios desplegados

Cuando se realizan los despliegues se reflejará en la interfaz de GCP:

Verificar logs servicios desplegados

Componente esp

Componente esp echo

Validar endpoint que expone el servicio

Endpoint 1

Endpoint 2

Al intentar consultar los diferentes endpoint, nos responde el servicio que no estamos autorizados.

Agregar API KEY

Al tener ya disponible la Api key y asociada al contrato, se procede a integrar la api key en la url.

Endpoint 1

Endpoint 2

Hemos aprendido a realizar la integración de CloudEndpoint más la autenticación a través de un método de API KEY.

Código Fuente: https://github.com/mauricio-echeverria/Cloud-Endpoint-y-Autenticacion-apikey

Mauricio Echeverria

--

--