Infraestructura como código en Google Cloud

La infraestructura como código (IaC) es el proceso de aprovisionamiento y gestión de la infraestructura de aplicaciones de software mediante código en lugar de interfaces gráficas de usuario o secuencias de comandos de línea de comandos.

El aprovisionamiento de la infraestructura de aplicaciones suele implicar la configuración y la gestión de máquinas virtuales, conexiones de bases de datos, almacenamiento y otros elementos de infraestructura. Gestionar esta infraestructura manualmente requiere mucho tiempo y es fácil cometer errores, sobre todo cuando se gestionan aplicaciones a gran escala.

La IaC te permite definir tu infraestructura con archivos de configuración, lo que te permite crear, cambiar y gestionar tu infraestructura de forma segura y repetible. Puedes definir configuraciones de recursos que puedes versionar, reutilizar y compartir. La IaC te permite especificar el estado deseado de tu infraestructura. Después, puedes desplegar la misma configuración varias veces para crear entornos de desarrollo, prueba y producción reproducibles.

La IaC te permite tratar el aprovisionamiento y la configuración de tu infraestructura de la misma forma que gestionas el código de la aplicación. Puedes almacenar la lógica de configuración de aprovisionamiento en el control de versiones y aprovechar los flujos de procesamiento de integración continua y despliegue continuo (CI/CD).

Ventajas de IaC

Usar IaC para configurar y gestionar la infraestructura de tu aplicación es una práctica recomendada para varios casos prácticos habituales. Google gestiona sus sistemas con IaC y lo ha establecido como una práctica estándar interna.

La IaC ofrece las siguientes ventajas:

  • Puedes definir tu infraestructura en función de tus requisitos y reutilizar la misma configuración para crear varios entornos de forma coherente.
  • Puedes automatizar la creación y la gestión de tus recursos en la nube, incluidos los entornos de despliegue y de prueba.
  • Puedes tratar los cambios en la infraestructura como si fueran cambios en la aplicación. Por ejemplo, puedes asegurarte de que los cambios en la configuración se revisen y se validen automáticamente. Gestionar los entornos de producción mediante procesos controlados por cambios con IaC es una práctica recomendada.
  • Puede mantener un historial de todos los cambios de configuración. Los cambios se pueden auditar y deshacer.
  • Puedes tener una única fuente de información veraz para tu infraestructura en la nube.

Herramientas de IaC para Google Cloud

Google Cloud se integra estrechamente con muchas herramientas de IaC. Elige una de las siguientes herramientas en función de tu caso práctico:

  • Terraform

    Por lo general, para configurar y gestionar la infraestructura de Google Cloud mediante código, usa el proveedor de Terraform para Google Cloud.

    HashiCorp Terraform es una herramienta de IaC que te permite definir recursos en la nube y en las instalaciones locales en archivos de configuración legibles por humanos que puedes versionar, reutilizar y compartir. Después, puedes usar un flujo de trabajo coherente para aprovisionar y gestionar toda tu infraestructura durante su ciclo de vida. Para obtener más información, consulta la descripción general de Terraform en Google Cloud.

  • Infrastructure Manager

    Si quieres automatizar el despliegue de tu configuración de Terraform, usa Infrastructure Manager (Infra Manager).

    Infra Manager automatiza el despliegue y la gestión deGoogle Cloud recursos de infraestructura con Terraform. Infra Manager te permite implementar de forma programática en Google Cloud, lo que te permite usar este servicio en lugar de mantener otra cadena de herramientas para trabajar con Terraform en Google Cloud. Para obtener más información, consulta el resumen de Infra Manager.

  • Terraform Cloud y Terraform Enterprise

    Si necesitas una gestión de cambios completa con Terraform en toda tu organización, usa Terraform Cloud o Terraform Enterprise.

    Terraform Cloud es una aplicación de software como servicio (SaaS) que ejecuta Terraform en un entorno remoto estable y almacena de forma segura el estado y los secretos. Terraform Cloud también se integra con la CLI de Terraform y se conecta a sistemas de control de versiones (VCS) habituales, como GitHub, GitLab y Bitbucket. Cuando conectas un espacio de trabajo de Terraform Cloud a un repositorio de VCS, los nuevos commits y cambios pueden activar automáticamente los planes de Terraform. Terraform Cloud también ofrece una API que te permite integrarlo en los flujos de trabajo que ya tengas.

    Terraform Enterprise te permite configurar una distribución autohospedada de Terraform Cloud. Ofrece límites de recursos personalizables y es ideal para organizaciones con estrictos requisitos de seguridad y cumplimiento.

    Para obtener más información, consulta la página de ediciones de Terraform en la documentación de HashiCorp.

  • Cloud Development Kit para Terraform

    Si quieres generar infraestructura con un lenguaje de programación de uso general en lugar de usar el lenguaje de configuración de HashiCorp (HCL), utiliza Cloud Development Kit para Terraform (CDKTF).

    CDKTF te permite configurar Terraform con un lenguaje de programación para definir y aprovisionar infraestructura, así como usar tu cadena de herramientas para procesos como las pruebas y la gestión de dependencias. Google Cloud

  • Pulumi

    Pulumi es otra herramienta que puedes usar para aprovisionar infraestructura con lenguajes de programación. Puedes usar el Google Cloud proveedor de Pulumi para crear código de infraestructura con lenguajes de programación como TypeScript, Python, Go, C#, Java o YAML.

  • Config Controller y Config Connector

    Para gestionar Google Cloud recursos mediante Kubernetes, usa Config Controller y Config Connector.

    Config Controller y Config Connector te permiten configurar servicios y recursos con herramientas de Kubernetes.Google Cloud Puedes usar herramientas de GitOps, como Config Sync y APIs de Kubernetes, así como configurar y usar primitivas de ingeniería de plataformas, como webhooks de admisión y operadores.

    Para obtener más información, consulta la información general de Config Controller y la información general de Config Connector.

  • Crossplane

    Otra opción para gestionar recursos mediante Kubernetes es usar Crossplane. Google Cloud

    Crossplane conecta tu clúster de Kubernetes con recursos externos que no son de Kubernetes y permite a los equipos de la plataforma crear APIs de Kubernetes personalizadas para consumir esos recursos. Crossplane actúa como un controlador de Kubernetes para monitorizar el estado de los recursos externos y aplicar el estado. Con Crossplane instalado en un clúster de Kubernetes, los usuarios solo se comunican con Kubernetes. Crossplane gestiona la comunicación con recursos externos, como Google Cloud. Si algo modifica o elimina un recurso fuera de Kubernetes, Crossplane revierte el cambio o vuelve a crear el recurso eliminado.

    Para obtener más información, consulta la documentación de Crossplane.

  • Ansible

    Si quieres automatizar el aprovisionamiento, la gestión de la configuración, la implementación de aplicaciones, la orquestación y otros procesos de TI, usa Ansible. Para obtener más información, consulta Ansible para Google Cloud.

Siguientes pasos