Infrastructure as Code su Google Cloud

Infrastructure as Code (IaC) è il processo di provisioning e gestione dell'infrastruttura delle applicazioni software utilizzando il codice anziché le interfacce grafiche utente o gli script a riga di comando.

Il provisioning dell'infrastruttura delle applicazioni in genere comporta la configurazione e la gestione di macchine virtuali, connessioni ai database, archiviazione e altri elementi dell'infrastruttura. La gestione manuale di questa infrastruttura è dispendiosa in termini di tempo ed è soggetta a errori, soprattutto nella gestione delle applicazioni su larga scala.

IaC consente di definire l'infrastruttura con file di configurazione, che consentono di creare, modificare e gestire l'infrastruttura in modo sicuro e ripetibile. Puoi definire configurazioni di risorse che puoi versioni, riutilizzare e condividere. IaC consente di specificare lo stato desiderato dell'infrastruttura. Puoi quindi eseguire il deployment della stessa configurazione più volte per creare ambienti di sviluppo, test e produzione riproducibili.

IaC consente di trattare il provisioning e la configurazione dell'infrastruttura come se si gestisce il codice dell'applicazione. Puoi archiviare la logica di configurazione del provisioning nel controllo del codice sorgente e sfruttare le pipeline di integrazione continua e deployment continuo (CI/CD).

Vantaggi di IaC

L'utilizzo di IaC per configurare e gestire l'infrastruttura delle applicazioni è una best practice per una serie di casi d'uso comuni. Google gestisce i suoi sistemi con IaC e lo ha stabilito internamente come pratica standard.

IaC offre i seguenti vantaggi:

  • Puoi definire l'infrastruttura in base ai tuoi requisiti e riutilizzare la stessa configurazione per creare più ambienti in modo coerente.
  • Puoi automatizzare la creazione e la gestione delle risorse cloud, compresi gli ambienti di deployment e test.
  • Puoi trattare le modifiche all'infrastruttura come quelle alle applicazioni. Ad esempio, puoi assicurarti che le modifiche alla configurazione vengano riviste e convalidate automaticamente. Una best practice consiste nella gestione degli ambienti di produzione tramite processi controllati dalle modifiche tramite IaC.
  • Puoi conservare una cronologia di tutte le modifiche alla configurazione. Le modifiche possono essere controllate e annullate.
  • Puoi avere un'unica fonte attendibile per la tua infrastruttura cloud.

Strumenti IaC per Google Cloud

Google Cloud è strettamente integrato con molti strumenti IaC. Scegli uno dei seguenti strumenti in base al tuo caso d'uso:

  • Terraforme

    In generale, per configurare e gestire l'infrastruttura Google Cloud utilizzando il codice, utilizza il provider Terraform per Google Cloud.

    HashiCorp Terraform è uno strumento IaC che consente di definire le risorse nel cloud e on-premise in file di configurazione leggibili da una versione, riutilizzabile e condivisa. Puoi quindi utilizzare un flusso di lavoro coerente per eseguire il provisioning e la gestione dell'intera infrastruttura durante il suo ciclo di vita. Per maggiori informazioni, consulta la panoramica di Terraform su Google Cloud.

  • Infrastructure Manager

    Se vuoi automatizzare il deployment della configurazione Terraform, utilizza Infrastructure Manager (Infra Manager).

    Infra Manager automatizza il deployment e la gestione delle risorse dell'infrastruttura Google Cloud utilizzando Terraform. Infra Manager consente di eseguire il deployment in modo programmatico in Google Cloud, in modo da utilizzare questo servizio invece di mantenere una toolchain diversa per lavorare con Terraform su Google Cloud. Per ulteriori informazioni, consulta la panoramica di Infra Manager.

  • Terraform Cloud e Terraform Enterprise

    Se hai bisogno della gestione completa dei cambiamenti con Terraform nella tua organizzazione, utilizza Terraform Cloud o Terraform Enterprise.

    Terraform Cloud è un'applicazione SaaS (Software as a Service) che esegue Terraform in un ambiente stabile e remoto e archivia in modo sicuro stato e secret. Terraform Cloud si integra anche con l'interfaccia a riga di comando di Terraform e si connette a sistemi di controllo della versione (VCS) comuni come GitHub, GitLab e Bitbucket. Quando connetti un'area di lavoro Terraform a un repository VCS, nuovi commit e modifiche possono attivare automaticamente i piani Terraform. Terraform Cloud offre anche un'API che ti consente di integrarla nei flussi di lavoro esistenti.

    Terraform Enterprise consente di configurare una distribuzione self-hosted di Terraform Cloud. Offre limiti di risorse personalizzabili ed è ideale per le organizzazioni con requisiti di sicurezza e conformità rigorosi.

    Per ulteriori informazioni, consulta la pagina delle versioni Terraform nella documentazione di Hashicorp.

  • Kit di sviluppo Cloud per Terraform

    Se vuoi generare l'infrastruttura con un linguaggio di programmazione generico anziché utilizzare il linguaggio Hashicorp Configuration Language (HCL), usa Cloud Development Kit per Terraform (CDKTF).

    CDKTF consente di configurare Terraform utilizzando un linguaggio di programmazione per definire e eseguire il provisioning dell'infrastruttura Google Cloud e di utilizzare la toolchain esistente per processi come test e gestione delle dipendenze.

  • Pulumi

    Pulumi è un altro strumento che puoi utilizzare per eseguire il provisioning dell'infrastruttura tramite linguaggi di programmazione. Puoi utilizzare il provider Google Cloud per Pulumi per creare codice di infrastruttura utilizzando linguaggi di programmazione come TypeScript, Python, Go, C#, Java o YAML.

  • Config Controller e Config Connector

    Per gestire le risorse Google Cloud tramite Kubernetes, usa Config Controller e Config Connector.

    Config Controller e Config Connector consentono di configurare servizi e risorse Google Cloud con gli strumenti Kubernetes. Puoi utilizzare strumenti GitOps come Config Sync e le API Kubernetes, nonché configurare e utilizzare primitive di progettazione della piattaforma come operatori e webhook di ammissione.

    Per ulteriori informazioni, consulta le sezioni Panoramica di Config Controller e Panoramica di Config Connector.

  • Crossplane

    Un'altra opzione per gestire le risorse Google Cloud tramite Kubernetes è l'uso di Crossplane.

    Crossplane connette il tuo cluster Kubernetes a risorse esterne non Kubernetes e consente ai team della piattaforma di creare API Kubernetes personalizzate per utilizzare queste risorse. Crossplane funge da controller Kubernetes per monitorare lo stato delle risorse esterne e fornire l'applicazione forzata dello stato. Se Crossplane è installato in un cluster Kubernetes, gli utenti comunicano solo con Kubernetes. Crossplane gestisce la comunicazione con risorse esterne come Google Cloud. Se qualcosa modifica o elimina una risorsa al di fuori di Kubernetes, Crossplane annulla la modifica o ricrea la risorsa eliminata.

    Per scoprire di più, consulta la documentazione di Crossplane.

  • Ansible

    Se vuoi automatizzare il provisioning, la gestione delle configurazioni, il deployment delle applicazioni, l'orchestrazione e altri processi IT, utilizza Ansible. Per ulteriori informazioni, consulta Ansible per Google Cloud.

Passaggi successivi