Cloud Spanner con Terraform

1. Descripción general

Última actualización: 23/07/2020

¿Qué es Cloud Spanner?

Google Cloud Spanner es una base de datos distribuida a nivel global, compatible con ACID, que controla automáticamente las réplicas, la fragmentación y el procesamiento de transacciones, de modo que puedas escalar rápidamente para cumplir con cualquier patrón de uso y garantizar el éxito de tus productos.

Funciones clave

  • Base de datos relacional, diseñada para escalarse: Todo lo que esperas de una base de datos relacional (esquemas, consultas en SQL y transacciones ACID) probada de forma rigurosa y lista para escalar de forma global.
  • Disponibilidad del 99.999%: Cloud Spanner ofrece una disponibilidad del 99.999% líder en la industria para instancias multirregionales (10 veces menos tiempo de inactividad que los cuatro nueves) y proporciona replicación síncrona y transparente en los parámetros de configuración regionales y multirregionales.
  • Fragmentación automática: Cloud Spanner optimiza el rendimiento a través de la fragmentación automática de los datos según la carga de la solicitud y el tamaño de los datos. Como resultado, puedes pasar menos tiempo preocupándote de cómo escalar tu base de datos y, en su lugar, enfocarte en escalar tu negocio.

Ver todas las funciones

Qué aprenderás

  • Cómo usar el proveedor de Terraform de Google Cloud
  • Usar Terraform para crear instancias y bases de datos de Cloud Spanner
  • Usa Terraform para modificar los recursos de Cloud Spanner.
  • Cómo usar Terraform para borrar recursos de Cloud Spanner

2. Configuración y requisitos

Configuración del entorno de autoaprendizaje

Si aún no tienes una Cuenta de Google (Gmail o Google Apps), debes crear una. Accede a la consola de Google Cloud Platform ( console.cloud.google.com) y crea un proyecto nuevo:

50983ac3fdbbf8d0.png

ea581205026ca8e3.png

Recuerde el ID de proyecto, un nombre único en todos los proyectos de Google Cloud (el nombre anterior ya se encuentra en uso y no lo podrá usar). Se mencionará más adelante en este codelab como PROJECT_ID.

A continuación, deberás habilitar la facturación en la consola de Cloud para usar los recursos de Google Cloud.

Ejecutar este codelab debería costar solo unos pocos dólares, pero su costo podría aumentar si decides usar más recursos o si los dejas en ejecución (consulta la sección “Limpiar” al final de este documento).

Los usuarios nuevos de Google Cloud son aptos para una prueba gratuita de$300.

Autenticación

Si aún no lo has hecho, instala la herramienta de línea de comandos de gcloud. Una vez que se instale gcloud, ejecuta el siguiente comando en la terminal para activar las credenciales predeterminadas de la aplicación:

$ gcloud auth application-default login

Terraform

Si no instalaste Terraform antes, instálalo.

3. Proveedor de Terraform de Google Cloud

El proveedor de Terraform de Google Cloud proporciona cuatro recursos de Cloud Spanner:

En este codelab, crearemos y administraremos instancias y bases de datos de Cloud Spanner.

Entorno

En tu entorno de desarrollo, crea un directorio nuevo para los archivos de configuración de Terraform.

$ mkdir ~/terraform-spanner
$ cd ~/terraform-spanner

Luego, crea un archivo llamado "main.tf" por el siguiente contenido y reemplaza PROJECT_ID por el ID de tu proyecto de Google Cloud:

$ cat >> main.tf <<'EOF'
provider "google" {
  project = "PROJECT_ID"
}
EOF

En el resto de este codelab, modificaremos este archivo y aplicaremos cambios.

4. Creación de instancias y bases de datos

Modifica main.tf con el siguiente contenido para agregar una nueva instancia de Cloud Spanner:

provider "google" {
  project = "PROJECT_ID"
}

resource "google_spanner_instance" "main" {
  config       = "regional-us-central1"
  display_name = "first-terraform-instance"
  num_nodes    = 3
}

Ejecuta el siguiente comando para aplicar los cambios:

$ terraform apply
# ...
Do you want to perform these actions?
  Terraform will perform the actions described above.
  Only 'yes' will be accepted to approve.

  Enter a value: yes
# ...
Apply complete! Resources: 1 added, 0 changed, 0 destroyed.

Una vez aplicados los cambios, podrás ver la instancia en la consola de Google Cloud. Ten en cuenta que no se puede modificar la configuración regional después de que se crea una instancia.

48b67416982fa152.png

Después de crear la instancia, crearemos una base de datos en los próximos pasos. Modifica main.tf con el siguiente contenido:

provider "google" {
  project = "PROJECT_ID"
}

resource "google_spanner_instance" "main" {
  config       = "regional-us-central1"
  display_name = "first-terraform-instance"
  num_nodes    = 3
}

resource "google_spanner_database" "database" {
  instance = google_spanner_instance.main.name
  name     = "my-first-database"
}

Una vez más, usa el siguiente comando para aplicar los cambios:

$ terraform apply
# ...
Apply complete! Resources: 0 added, 1 changed, 0 destroyed.

Si se ejecuta de forma correcta, my-first-database estará disponible en la instancia:

9962a71c6b2a3aff.png

5. Modificar una instancia

Como se indicó en la sección anterior, no todas las propiedades de las instancias se pueden modificar. Sin embargo, puedes aumentar o disminuir la cantidad de nodos para ajustar los recursos que usa la instancia. La instancia creada tenía 3 nodos. Modificando el archivo main.tf, aumentaremos la cantidad de nodos a 5:

provider "google" {
  project = "PROJECT_ID"
}

resource "google_spanner_instance" "main" {
  config       = "regional-us-central1"
  display_name = "first-terraform-instance"
  num_nodes    = 5
}

resource "google_spanner_database" "database" {
  instance = google_spanner_instance.main.name
  name     = "my-first-database"
}

El siguiente paso es aplicar los cambios:

$ terraform apply
# ...
Apply complete! Resources: 0 added, 1 changed, 0 destroyed.

Una vez que se complete de forma correcta, la instancia usará 5 nodos.

6. Borra una base de datos

Puedes borrar una base de datos de forma permanente cuando ya no la necesites. Quita la base de datos de main.tf y aplica los cambios.

provider "google" {
  project = "PROJECT_ID"
}

resource "google_spanner_instance" "main" {
  config       = "regional-us-central1"
  display_name = "first-terraform-instance"
  num_nodes    = 5
}
$ terraform apply
# ...
Apply complete! Resources: 0 added, 0 changed, 1 destroyed.

Una vez que se realice correctamente, la base de datos se borrará de forma permanente.

7. Borra una instancia

Puedes borrar una instancia de forma permanente cuando ya no la necesites. Quita la instancia de main.tf y aplica los cambios.

provider "google" {
  project = "PROJECT_ID"
}
$ terraform apply
# ...
Apply complete! Resources: 0 added, 0 changed, 1 destroyed.

Una vez que se complete de forma correcta, la instancia se borrará de forma permanente.

8. ¡Felicitaciones!

Creaste, modificaste y borraste recursos de Cloud Spanner con Terraform.

Temas abordados

  • Cómo usar el proveedor de Terraform de Google Cloud
  • Usar Terraform para crear instancias y bases de datos de Cloud Spanner
  • Usa Terraform para modificar los recursos de Cloud Spanner.
  • Cómo usar Terraform para borrar recursos de Cloud Spanner

Más información