Aplicación Web de referencia para Cloud Run for Anthos

April 22, 2021 · View on GitHub

npm-audit-periodic

English | Español

Aplicación Web de referencia para Cloud Run for Anthos

🛑 Este proyecto se ha archivado y no se mantiene actualmente 🛑

Este repositorio, que incluye todos los flujos de trabajo y automatizaciones asociados, representa un conjunto de mejores prácticas dirigidas a demostrar una arquitectura de referencia para crear una aplicación web en Google Cloud utilizando Cloud Run para Anthos.

Se puede encontrar una descripción detallada de la arquitectura de la aplicación web en architecture.md.

Prerequisitos

Ambiente de Desarrollo

NOTA: los pasos de esta guía asumen que se está trabajando en un ambiente de desarrollo basado en POSIX.

El único requerimiento para ejecutar este ejemplo como se muestra en este repositorio es una instalación funcional de gcloud. Opcionalmente, tener make instalado le permitirá hacer uso de los objetivos de conveniencia provistos en el makefile.

NOTA: Su cuenta de usuario de gcloud debe tener permiso de propietario sobre el proyecto para poder completar la configuración de la aplicación.

Cloud Shell

¡Este ejemplo se puede ejecutar directamente desde Cloud Shell!

Open in Cloud Shell

Configuración Local

Siga los pasos para configurar gcloud en su entorno local, luego clone este repositorio usando git clone.

Dominio Personalizado

Para que esta aplicación de referencia funcione correctamente, necesitará un dominio personalizado que se haya configurado y verificado correctamente.

La forma más fácil de hacerlo es ejecutando el shell script interactivo domain-setup.sh:

./scripts/domain-setup.sh

El shell script:

Identity Platform para Auth y Configuración de Firestore

  1. Habilitar Identity Platform en su proyecto.

    • Esto creará un ID de cliente OAuth 2.0 que puede ser utilizado por la aplicación web.
    • Adicionalmente, creará un proyecto de Firebase donde Cloud Firestore puede ser utilizado.
  2. Autorizar su dominio personalizado en Identity Platform.

    • En la consola de GCP, navegue a Identity Platform > Ajustes.
    • Haga clic en la pestaña de Seguridad.
    • Añada su dominio personalizado en Dominios autorizados.
    • Haga clic en Guardar.
  3. Autorizar que su dominio personalizado pueda usar su ID de cliente OAuth 2.0.

    • En la consola de GCP, navegue a APIs y servicios > Credenciales.
    • Haga clic en el ID de cliente OAuth 2.0 que se creó automáticamente.
      • "(auto created by Google Service)" debe aparecer en el nombre.
      • $PROJECT_ID.firebaseapp.com debe aparecer en Orígenes de JavaScript autorizados.
    • Tome nota del ID de cliente y Secreto de cliente. Los usará en el siguiente paso.
    • En Orígenes de JavaScript autorizados, añada su dominio personalizado con el prefijo https://.
    • Haga clic en Guardar.
  4. Agregar Google como proveedor de identidades en Identity Platform:

    • En la consola de GCP, navegue a Identity Platform > Proveedores.
    • Haga clic en Añadir proveedor.
    • Seleccione Google de la lista.
    • Complete los campos Web Client ID y Web Client Secret con el ID y secreto del cliente OAuth 2.0 creado en el paso anterior.
    • Haga clic en Guardar.
  5. Configurar la pantalla de consentimiento de OAuth.

    • Tipo de usuario se puede configurar como Interno o Externo.
    • Deberá configurar el Correo electrónico de asistencia y el Vínculo a la página principal de la aplicación (su dominio personalizado con el prefijo https://).
    • Información adicional aquí.
  6. Configurar webui/firebaseConfig.js.

    ./scripts/firebase-config-setup.sh $PROJECT_ID $API_KEY
    
  7. Crear la base de datos de Firestore:

  8. Configurar las reglas de seguridad de Firestore:

Desplegando la Aplicación por Primera Vez

Este proyecto utiliza Cloud Build y Config Connector para automatizar las implementaciones del código e infraestructura. Las instrucciones a continuación describen cómo desplegar la aplicación.

1. Configurar el proyecto de GCP

Deberá iniciar los servicios y permisos requeridos por este ejemplo. La forma más fácil de hacerlo es ejecutando bootstrap.sh:

./scripts/bootstrap.sh $PROJECT_ID

Este paso además crea un archivo llamado env.mk basado en env.mk.sample.

2. Completar las secciones TODO en env.mk

Aborde el comentario de TODO en la parte superior de env.mk y asegurese que los valores sean correctos.

3. Crear un clúster de GKE

Ejecute make cluster

4. Agregar un propietario verificado para el dominio

Agregue la siguiente cuenta de servicio como un propietario verificado adicional:

cnrm-system@${PROJECT_ID}.iam.gserviceaccount.com

donde ${PROJECT_ID} se reemplaza por su ID de proyecto de Google Cloud.

5. Build y desplegar

Ejecute make build-all.

Probar la Aplicación

Una vez que se despliega su aplicación, puede probarla navegando a https://$DOMAIN, donde $DOMAIN es el dominio personalizado que configuró en env.mk.

Actualizar la Aplicación

Ejecutar make build-all hará el build y desplegará la aplicación, incluidos los cambios realizados en la infraestructura. Tenga en cuenta que eliminar recursos de infrastructure-tpl.yaml no hará que se eliminen. Debe ejecutar make delete antes de eliminar el recurso (luego volver a implementar con make build-all después de eliminarlo), o eliminar manualmente el recurso con kubectl delete.

# construye e implementa infraestructura de back-end, frontend e KCC
make build-all

# construye e implementa solo el servicio de back-end Go
make build-backend

# construye y despliega solo la aplicación web angular frontend
make build-webui

Limpieza

La ejecución de make delete eliminará los recursos de Config Connector de su clúster, lo que hará que Config Connector elimine los recursos de GCP asociados. Sin embargo, debe eliminar manualmente su servicio Cloud Run y ​​GKE Cluster.