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.
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:
brewinstall
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.
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:
gcloudcomponents
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:
gcloudauth
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:
gcloudconfig
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_default
se 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:
gcloudprojects
create
$PROJECT_ID
A continuación, configura la CLI de gcloud para que utilice el nuevo proyecto como predeterminado:
gcloudconfig
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:
gcloudconfig
set
compute/region
$REGION
gcloud
config
set
compute/zone
$REGION
-agcloud
config
set
run/region
$REGION
En cualquier momento, puedes consultar tu proyecto actual utilizando:
gcloudconfig
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
=
$(
gcloudconfig
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:
gcloudbeta
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:
gcloudbeta
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:
gcloudbeta
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:
gcloudbeta
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:
gcloudbeta
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:
gcloudservices
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 lasgettext
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 lasjq
instrucciones para instalarlo. yq
-
yq
es como pero parajq
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
- 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 lakubectl
Figura 4-3. kubectx
ykubens
-
kubectx
ykubens
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.
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 |
|
Funciones en la nube |
Funciones sin servidor |
|
Carrera en las nubes |
Contenedores sin servidor |
|
Almacenamiento en la nube |
Almacenamiento de objetos |
|
Construir en la nube |
CI/CD |
|
Programador en la nube |
Tareas programadas |
|
Nube Pub/Sub |
Servicio de mensajería |
|
Almacén de fuego en la nube |
Base de datos de documentos NoSQL |
|
SQL en la nube |
Base de datos relacional |
|
Llave de Nube |
Base de datos relacional distribuida |
|
Plataforma de Identidad |
Proveedor de autenticación |
|
Equilibrador de carga HTTP global |
Equilibrador de carga |
|
Armadura Nube |
Cortafuegos para aplicaciones web |
|
Piloto automático GKE |
Kubernetes gestionados |
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.