Capítulo 4. Preparación de Google Cloud

Este trabajo se ha traducido utilizando IA. Agradecemos tus opiniones y comentarios: translation-feedback@oreilly.com

En este capítulo, te embarcarás en un viaje que te equipará completamente para trabajar con Google Cloud. Esto incluye desde la creación de cuentas hasta la instalación de herramientas esenciales diseñadas para ayudar y enriquecer tu experiencia en los capítulos de proyectos que siguen. También se te presentará el proyecto de ejemplo, que construirás en cinco proyectos distintos en los capítulos siguientes.

Crear una cuenta de Google

El primer paso para utilizar Google Cloud es crear una cuenta. Para ello, visita la página de registro y selecciona el botón "Comenzar gratis"(Figura 4-1) en la esquina superior derecha de la página.

Start Free Button
Figura 4-1. Botón de inicio libre

Para los nuevos en Google Cloud, hay disponible un crédito gratuito de 300 $, que puede utilizarse durante un periodo de 12 meses para explorar los servicios de la plataforma. Esta cantidad debería cubrir los ejercicios de este libro, permitiéndote experimentar sin necesidad de gastar dinero. En el Capítulo 15, hay información sobre el programa Google Innovators Plus, una suscripción educativa que también ofrece crédito de Google Cloud con descuento.

Instala la CLI de gcloud

Al acceder a Google Cloud a través de un navegador web, verás la Consola de Google Cloud. Aunque la consola proporciona acceso a casi todos los servicios de Google Cloud, este libro se centra principalmente en la CLI de gcloud por su productividad y facilidad de explicación por escrito.

La CLI gcloud es una herramienta de línea de comandos que permite interactuar con las API de Google Cloud Platform. Es compatible con Windows, macOS y Linux. Sigue los pasos indicados en la documentación de Google Cloud para instalarla en tu máquina.

Si, como yo, utilizas un Mac con Homebrew, puedes acortar el proceso de instalación ejecutando:

brew install google-cloud-sdk

Como alternativa, puedes utilizar Google Cloud Shell.Se trata de un entorno basado en navegador que tiene preinstalada la CLI gcloud. Puedes acceder a Google Cloud Shell desde la Consola de Google Cloud.

Cuando hayas iniciado sesión, mira en la esquina superior derecha de la consola y haz clic en el icono que parece un símbolo del sistema etiquetado Activate Cloud Shell. Esto te dará una CLI de gcloud actualizada y conectada a tu cuenta, como la que se muestra en la Figura 4-2.

Google Cloud Shell
Figura 4-2. Shell de Google Cloud

Si utilizas Google Cloud Shell, puedes saltarte los dos pasos siguientes, que sólo son aplicables si utilizas la CLI de gcloud desde tu propia máquina.

Actualiza tu cliente gcloud

Dado que Google actualiza los componentes de gcloud con frecuencia, si ya tienes instalado el cliente de gcloud, a menudo merece la pena actualizarlo a las últimas versiones antes de empezar a trabajar. Puedes hacerlo con este comando:

gcloud components update

Si hay actualizaciones disponibles, se te pedirá confirmación antes de la instalación.

Iniciar sesión en gcloud

Con un cliente gcloud actualizado, ya puedes autenticarte con tu cuenta utilizando este comando:

gcloud auth login

Esto te dará un enlace para abrir en tu navegador que te pedirá que inicies sesión con tu cuenta de Google y luego autenticará automáticamente a tu cliente. Entonces estarás listo para empezar a trabajar con Google Cloud.

Establece tu región y zona por defecto

Los recursos en Google Cloud son zonales, regionales o multirregionales.Es decir, se aplican a una sola zona (ubicación), a varias zonas dentro de una región o se distribuyen por varias regiones.

Es útil especificar valores por defecto para tu región y zona, de modo que no tengas que especificarlos cada vez que crees un recurso. Por ejemplo, si trabajas en Londres (como yo), tal vez quieras especificar la región por defecto como europe-west2 y la zona por defecto como europe-west2-a.

Estos comandos establecen la región y la zona por defecto:

gcloud config set compute/region europe-west2
gcloud config set compute/zone europe-west2-a
gcloud config set run/region europe-west2

Estos ajustes se almacenan en tu máquina local; por ejemplo, en un Mac, en ~/.config/gcloud/configurations/config_defaultse configuran para tu máquina y no para una cuenta.

Consejo

Si encuentras un mensaje como "API [compute.googleapis.com] no habilitada en el proyecto [tu-id-proyecto]", significa que el servicio específico -en este caso, el servicio Google Compute Engine- no está habilitado para tu proyecto por defecto.

No se habilitan todos los servicios en los proyectos nuevos para evitar un uso y un coste innecesarios. Cuando crees un proyecto nuevo, sólo se habilitará automáticamente un subconjunto de servicios que se utilicen habitualmente o que requieran otros servicios básicos. Este enfoque ayuda a mantener limpio el entorno del proyecto y reduce los posibles riesgos de seguridad.

También puedes utilizar el comando gcloud init para que te guíe a través del proceso de configuración de la CLI de gcloud.

Crear un proyecto

Todos los recursos de GoogleCloud Platform viven en un proyecto.Un proyecto es un contenedor de recursos que te permite gestionar el acceso y la facturación. Cada proyecto tiene un ID único y un nombre. El nombre es único para tu cuenta, pero el ID es único para todas las cuentas deGoogle Cloud Platform.

Consejo

En este libro crearás varios proyectos. En lugar de explicarte cómo configurar un proyecto cada vez, se te remitirá a esta sección.

A mí me resulta útil almacenar el PROJECT_ID en una variable de entorno para poder consultarlo fácilmente más adelante. A medida que avances en los proyectos, harás mucho uso de este patrón:

export PROJECT_ID=[PROJECT_ID]

Para crear el nuevo proyecto, introduce el siguiente comando gcloud:

gcloud projects create $PROJECT_ID

A continuación, configura la CLI de gcloud para que utilice el nuevo proyecto como predeterminado:

gcloud config set project $PROJECT_ID

Del mismo modo, si tienes una variable de entorno llamada $REGION podrías establecer la región y la zona por defecto de este modo:

gcloud config set compute/region $REGION
gcloud config set compute/zone $REGION-a
gcloud config set run/region $REGION

En cualquier momento, puedes consultar tu proyecto actual utilizando:

gcloud config list project

Si alguna vez quieres volver a establecer tu proyecto actual en una variable de entorno, utiliza la salida del comando gcloud de la siguiente manera:

export PROJECT_ID=$(gcloud config get project)

Activar Facturación

Por defecto, los proyectos no tienen habilitada una cuenta de facturación.Esto significa que no puedes crear recursos facturables. Por tanto, necesitas habilitar la facturación vinculando tu proyecto con una cuenta de facturación activa que tengas permiso para utilizar. Con una nueva cuenta de Google Cloud, sólo debes tener una cuenta de facturación, y debe estar activa.

En primer lugar, busca en ACCOUNT_ID una cuenta de facturación para utilizarla en el proyecto, haciendo una lista de las cuentas de facturación asociadas a tu cuenta de Google Cloud. Se trata de tres bloques de seis caracteres separados por guiones:

gcloud beta billing accounts list

Ahora asígnalo a una variable de entorno BILLING_ACCOUNT_ID como hiciste con PROJECT_ID:

export BILLING_ACCOUNT_ID=[BILLING_ACCOUNT_ID]

A continuación, puedes asignar la cuenta de facturación al proyecto utilizando este comando:

gcloud beta billing projects link $PROJECT_ID --billing-account $BILLING_ACCOUNT_ID

Ten en cuenta que aquí el comando gcloud incluye beta. Verás esto ocasionalmente. Sólo significa que es una función más reciente de la CLI de gcloud. Para cuando leas esto, puede que el comando esté totalmente integrado y beta no sea necesario.

Comprobar que la facturación está activada

Puedes comprobar que la facturación está activada en un proyecto utilizando el siguiente comando:

gcloud beta billing projects describe $PROJECT_ID --format="value(billingEnabled)"

Esto devolverá True si la facturación está activada y False si no lo está. Si ves True, tu proyecto ya está configurado con una cuenta de facturación y listo para usar.

Consejo

Una buena característica de Google Cloud es que también puedes eliminar las cuentas de facturación de los proyectos y estar seguro de que no se te facturará. Esto cerrará los servicios de tu proyecto, así que es mejor que los cierres tú primero.

Sin embargo, después de haber trabajado con AWS, sigo comprobando que me facturan unos cuantos dólares al mes por recursos olvidados que no he localizado y eliminado, por lo que agradezco esta función de Google Cloud.

El comando para desvincular una cuenta de facturación de tu proyecto es:

gcloud beta billing projects unlink $PROJECT_ID

Hacer más con la CLI de gcloud

Utilizarás la CLI de gcloud a lo largo de este libro. Aunque puedes hacer casi todo a través de la Consola de Google Cloud, a medida que te familiarices con la CLI de gcloud verás cómo aumenta tu productividad.

Una buena forma de hacerlo es utilizar el entorno interactivo gcloud ejecutando el siguiente comando:

gcloud beta interactive

Esto te permite completar comandos y proporciona documentación en línea, ayudándote a aprender los comandos y opciones disponibles.

Conceptos clave de Google Cloud

Dediquemos un momento a repasar algunos conceptos clave que se utilizarán a lo largo de este libro.

Archivos de entorno

A lo largo de los proyectos, los valores se almacenan en variables de entorno. Este es un patrón común en el mundo de DevOps. Te permite cambiar fácilmente los valores sin tener que cambiar el código. También te permite mantener los valores sensibles fuera de tu código y del control de versiones. En lugar de establecer las variables de entorno cada vez que inicias una nueva sesión de terminal, puedes almacenarlas en un archivo y luego cargarlas en tu entorno. Para eso está el archivo .env. Cada proyecto tiene un archivo .env.template que puedes copiar en .env y luego rellenar los valores. En la raíz, también hay un archivo de entorno que contiene variables de entorno comunes.

En cada proyecto, ejecuta el script set-env.sh para establecer las variables de entorno por ti. Esto aplicará los valores del archivo .env del directorio actual junto con las variables de entorno compartidas del archivo .env raíz.

Servicios de habilitación

Tras la creación inicial de un proyecto en Google Cloud, una serie de servicios no están activos por defecto. Intentar utilizar estos servicios puede dar lugar a un error. Sin embargo, estos servicios pueden activarse fácilmente utilizando la Consola de Google Cloud o la CLI de gcloud. Por ejemplo, si deseas activar la API Cloud Run, puedes hacerlo ejecutando el siguiente comando:

gcloud services enable run.googleapis.com

Siempre que utilices un servicio por primera vez, verás el comando para activarlo.

Gestión de Identidades y Accesos

Cada proyecto de Google Cloud Platform tiene una política de gestión de identidades y accesos (IAM).Esta política especifica quién tiene qué tipo de acceso a qué recursos. A diferencia de lo que puede ocurrir en un sistema local, casi todos los recursos o servicios de Google Cloud necesitan un permiso implícito para poder acceder a ellos. Se trata de un sistema potente y flexible que te permite controlar el acceso a tus recursos.

En general, un principal (usuario) tiene funciones que le conceden permiso para realizar acciones sobre los recursos.

Consejo

Es importante comprender que los cambios en los roles y permisos de IAM son finalmente coherentes y pueden tardar varios minutos. Esto significa que si revocas un rol o permiso, puede que siga estando disponible durante unos minutos. Del mismo modo, si concedes un rol o permiso, puede que no esté disponible durante unos minutos.

Cuentas de servicio

Cuentas de servicio son un tipo especial de cuenta que utilizan las aplicaciones que actúan como principales para acceder a los servicios y recursos de Google Cloud. No están pensadas para que las utilicen las personas, sino los propios servicios de Google Cloud. Cuando empieces a unir servicios, utilizarás cuentas de servicio para permitir que los servicios accedan a otrosservicios.

Aunque puedes utilizar una cuenta de servicio predeterminada para ello, es mejor crear una cuenta de servicio específica para cada servicio, lo que te permitirá controlar el acceso a los recursos de forma más granular. Para seguir esta buena práctica, utilizarás una cuenta de servicio para cada servicio creado en los proyectos.

Herramientas recomendadas

Repasemos las herramientas que utilizarás a lo largo de este libro. No son imprescindibles, pero te facilitarán la vida, y se hará referencia a ellas en los proyectos.

Herramienta de Diagramación de la Arquitectura de la Nube de Google

Para crear la arquitectura de diagramas de este libro se ha utilizado la herramienta de diagramación de arquitecturas de Google Cloud. Es compatible con todos los servicios de Google Cloud y su uso es gratuito.

Utilidades de la línea de comandos

Aunque gran parte de este libro presupone que utilizas una shell compatible con POSIX, como las que se encuentran en los sistemas Linux o macOS, no es un requisito imprescindible. Puedes seguirlo utilizando Windows PowerShell o el Subsistema de Windows para Linux (WSL). Como alternativa, también se puede utilizar Cloud Shell, que he mencionado antes.

Pasemos a algunas utilidades de la línea de comandos que te resultarán útiles:

envsubst

envsubst es una práctica herramienta de línea de comandos que sustituye las variables de entorno en un archivo. Forma parte del paquete y funciona en Windows, macOS y Linux. Consulta las gettext instrucciones de instalación.

Utiliza envsubst para sustituir las variables de entorno en los archivos de configuración. Esto te permite mantener los ajustes de configuración de tu entorno gcloud separados de tu código.

jq

jq es una herramienta de línea de comandos para analizar JSON. Muchos de los comandos que utilizarás tienen la opción de mostrar los resultados en formato JSON. Es muy práctico poder extraer información para utilizarla en otro lugar. está disponible para Windows, macOS y Linux. Sigue las jq instrucciones para instalarlo.

yq

yq es como pero para jq YAML, permitiendo extraer información de comandos que emiten YAML. Está disponible para Windows, macOS y Linux. Sigue las instrucciones para instalarlo.

pack

En algunos proyectos, utilizarás Cloud Native Buildpacks para construir imágenes de contenedores. pack CLI es una herramienta para construir imágenes de contenedores utilizando buildpacks. Está disponible para Windows, macOS y Linux. Sigue las instrucciones para instalarla.

cURL

cURL es una herramienta de línea de comandos para enviar solicitudes HTTP. La utilizarás para probar puntos finales HTTP desde la línea de comandos. Está disponible para Windows, macOS y Linux, y a veces ya está instalada. No obstante, sigue las instrucciones para instalarla en tu máquina local.

Banco Apache

Apache Bench es una herramienta de evaluación comparativa de peticiones web. Es una herramienta de línea de comandos que puede utilizarse para enviar un gran número de peticiones a un servidor web y medir el tiempo de respuesta.

Si utilizas macOS, Apache Bench ya está instalado. Si utilizas Linux, puedes instalarlo utilizando tu gestor de paquetes. Si utilizas Windows, puedes instalarlo utilizando Chocolatey.

Sin embargo, si utilizas Google Cloud Shell, Apache Bench no está instalado por defecto. Puedes instalarlo utilizando el siguiente comando:

sudo apt-get install apache2-utils
Asedio

Siege es una herramienta similar a Apache Bench, pero Siege puede proporcionar archivos de registro de la prueba con más detalles, incluida la respuesta de cada solicitud. Sigue las instrucciones para instalarla.

Kubernetes

Aunque la principal herramienta de línea de comandos de Kubernetes kubectl se proporciona como parte del SDK de Google Cloud, hay otras herramientas quete resultarán útiles:

k9s

k9s es una herramienta de línea de comandos para gestionar clusters Kubernetes. Está disponible para Windows, macOS y Linux, y sigue las instrucciones para instalarla. Proporciona una interfaz de línea de comandos para Kubernetes que es mucho más fácil de usar que el comando estándar , y también tiene un aspecto atractivo, como se muestra en la kubectl Figura 4-3.

k9s
Figura 4-3. k9s
kubectx y kubens

kubectx y kubens son un par de herramientas de línea de comandos para gestionar clústeres y espacios de nombres de Kubernetes. Están disponibles en GitHub.

Terraforma

Terraform es una herramienta para gestionar la infraestructura como código que se presentará hacia el final del libro. Está disponible para Windows, macOS y Linux. Sigue las instrucciones para instalarla. Además del propio Terraform, hay otras herramientas que pueden resultarte útiles:

TFLint

TFLint es una herramienta para hacer linting de código Terraform. Sigue las instrucciones para instalarla.

TFSec

TFSec es una herramienta para comprobar si el código de Terraform presenta problemas de seguridad. Sigue las instrucciones para instalarla.

Infracost

Infracost es una herramienta para estimar el coste del código Terraform. Es útil para hacer un seguimiento de los posibles gastos de Google Cloud. Sigue las instrucciones para instalarla.

Presentación de la aplicación de ejemplo

Para ilustrar mejor cómo pueden utilizarse los servicios de Google Cloud, este libro utiliza una aplicación de ejemplo llamada Skills Mapper.

Presentación de Skills Mapper

La transición a un estilo de desarrollo nativo en la nube implica algo más que la adopción de nuevas tecnologías y técnicas. También requiere equipar a tu equipo con las habilidades necesarias para crear y dar soporte a las aplicaciones. Comprender los conocimientos y la experiencia existentes en tu equipo, así como en la organización en general, puede ser muy valioso en esta transición.

Mientras aprendes, puede ser beneficioso identificar a compañeros con intereses similares o a los que también están aprendiendo. Conocer a algún experto en un tema concreto puede ser una fuente de apoyo y tutoría.

Aquí es donde entra en juego nuestro proyecto, Skills Mapper,. Skills Mapper es una aplicación web diseñada para rastrear y mapear las habilidades -herramientas, tecnologías y técnicas- que interesan a las personas, que están aprendiendo actualmente, en las que tienen experiencia o que están planeando abandonar. Mapea estas habilidades a una ontología común, proporcionando una visión organizada de los conjuntos de habilidades.

Para usuarios individuales, Skills Mapper proporciona una API que puede utilizarse para generar un "CV vivo" dinámico. Este CV puede mostrarse en una página web o incorporarse a un currículum en línea. Para grupos de usuarios, Skills Mapper ilustra cómo su combinación de habilidades se compara con la de sus compañeros, sugiere lo que deberían aprender a continuación y proporciona información sobre los intereses de tendencia.

Dentro de una organización o una comunidad en la que se utilice el Mapeador de Competencias, sirve como herramienta para localizar expertos, construir perfiles laborales y sugerir comunidades de práctica. También puede servir de apoyo para planificar la formación y los grupos de estudio, o para identificar las competencias que los individuos desean adquirir.

A lo largo de este libro, el proyecto Skills Mapper se desarrollará y escalará como una arquitectura de microservicios, evolucionando de una herramienta para individuos a una aplicación que puede servir eficientemente a miles de usuarios.

Arquitectura del mapeador de competencias

La aplicación Skills Mapper consta de tres microservicios, cada uno de los cuales utiliza un tipo diferente de almacenamiento. La arquitectura de la aplicación se muestra en la Figura 4-4.

Skills Mapper Architecture
Figura 4-4. Arquitectura del mapeador de competencias

Cada microservicio es responsable de una única función, con sus capacidades expuestas a través de una API REST:

Servicio de habilidades(Capítulo 6)

Este servicio sugiere habilidades a partir de una lista recopilada de Stack Overflow.

Servicio de hechos(Capítulo 7)

Este servicio permite a los usuarios autentificados gestionar sus competencias.

Servicio de perfil(Capítulo 8)

Este servicio crea automáticamente un perfil y proporciona a los usuarios autentificados información sobre el perfil.

Una API común expone los microservicios y, a su vez, una interfaz de usuario interactúa con la API en el Capítulo 9.

En el trasfondo del Capítulo 5, se utiliza una función de utilidad para actualizar semanalmente la lista de etiquetas.

Para garantizar la seguridad, todo se coloca detrás de un equilibrador de carga con una dirección IP pública asociada a un nombre DNS en el Capítulo 11.

Servicios utilizados

Aquí tienes una lista exhaustiva, aunque no exhaustiva, de los servicios que utilizarás a lo largo de este libro. Los capítulos en los que se utiliza cada servicio también se muestran en la tabla.

Servicio Descripción Capítulos utilizados

BigQuery

Almacén de datos

Capítulo 5

Funciones en la nube

Funciones sin servidor

Capítulo 5

Carrera en las nubes

Contenedores sin servidor

Capítulos 6, 7 y 8

Almacenamiento en la nube

Almacenamiento de objetos

Capítulos 5, 8 y 9

Construir en la nube

CI/CD

Capítulo 12

Programador en la nube

Tareas programadas

Capítulo 5

Nube Pub/Sub

Servicio de mensajería

Capítulo 8

Almacén de fuego en la nube

Base de datos de documentos NoSQL

Capítulo 8

SQL en la nube

Base de datos relacional

Capítulo 7

Llave de Nube

Base de datos relacional distribuida

Capítulo 14

Plataforma de Identidad

Proveedor de autenticación

Capítulo 7

Equilibrador de carga HTTP global

Equilibrador de carga

Capítulo 11

Armadura Nube

Cortafuegos para aplicaciones web

Capítulo 11

Piloto automático GKE

Kubernetes gestionados

Capítulo 14

Resumen

Ahora que has configurado un proyecto e instalado las herramientas necesarias, estás totalmente preparado para empezar a construir en Google Cloud Platform.Empezarás el viaje en el Capítulo 5.

Get Desarrollo nativo en la nube con Google Cloud now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.