Infrastructure as Code (IaC) è il processo di provisioning e gestione dell'infrastruttura dell'applicazione software utilizzando il codice anziché interfacce utente grafiche o script a riga di comando.
Il provisioning dell'infrastruttura dell'applicazione in genere comporta la configurazione e la gestione di macchine virtuali, connessioni al database, spazio di archiviazione e altri elementi dell'infrastruttura. La gestione manuale di questa infrastruttura richiede molto tempo ed è soggetta a errori, soprattutto quando si gestiscono applicazioni su larga scala.
L'infrastruttura come codice (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 delle risorse che puoi versionare, riutilizzare e condividere. L'IaC ti consente di specificare lo stato desiderato dell'infrastruttura. Puoi poi eseguire il deployment della stessa configurazione più volte per creare ambienti di sviluppo, test e produzione riproducibili.
IaC ti consente di trattare il provisioning e la configurazione dell'infrastruttura allo stesso modo in cui gestisci il codice dell'applicazione. Puoi archiviare la logica di configurazione del provisioning nel controllo del codice sorgente e sfruttare le pipeline di integrazione e deployment continui (CI/CD).
Vantaggi di IaC
L'utilizzo di IaC per configurare e gestire l'infrastruttura dell'applicazione è una best practice per una serie di casi d'uso comuni. Google gestisce i propri sistemi con IaC e l'ha stabilita come pratica standard internamente.
IaC offre i seguenti vantaggi:
- Puoi definire la tua 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, inclusi gli ambienti di deployment e test.
- Puoi trattare le modifiche all'infrastruttura come le modifiche all'applicazione. Ad esempio, puoi assicurarti che le modifiche alla configurazione vengano esaminate e convalidate automaticamente. La gestione degli ambienti di produzione tramite processi controllati dalle modifiche utilizzando IaC è una best practice.
- 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 a seconda del tuo caso d'uso:
Terraform
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 che puoi versionare, riutilizzare e condividere. Puoi quindi utilizzare un flusso di lavoro coerente per eseguire il provisioning e gestire tutta la tua infrastruttura durante il suo ciclo di vita. Per saperne di più, 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'infrastrutturaGoogle Cloud utilizzando Terraform. Infra Manager ti consente di eseguire il deployment in modo programmatico su Google Cloud, consentendoti di utilizzare questo servizio anziché 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 di una gestione completa delle modifiche con Terraform in tutta la tua organizzazione, utilizza Terraform Cloud o Terraform Enterprise.
Terraform Cloud è un'applicazione Software as a Service (SaaS) che esegue Terraform in un ambiente remoto stabile e archivia in modo sicuro lo stato e i secret. Terraform Cloud si integra anche con la CLI Terraform e si connette a sistemi di controllo della versione (VCS) comuni come GitHub, GitLab e Bitbucket. Quando connetti un workspace Terraform Cloud a un repository VCS, i nuovi commit e le nuove modifiche possono attivare automaticamente i piani Terraform. Terraform Cloud offre anche un'API, che ti consente di integrarlo nei flussi di lavoro esistenti.
Terraform Enterprise ti consente di configurare una distribuzione autogestita di Terraform Cloud. Offre limiti di risorse personalizzabili ed è ideale per le organizzazioni con requisiti di sicurezza e conformità rigorosi.
Per saperne di più, consulta la pagina delle versioni di Terraform nella documentazione di HashiCorp.
Cloud Development Kit per Terraform
Se vuoi generare un'infrastruttura con un linguaggio di programmazione di uso generale anziché utilizzare HashiCorp Configuration Language (HCL), utilizza Cloud Development Kit for Terraform (CDKTF).
CDKTF ti consente di configurare Terraform utilizzando un linguaggio di programmazione per definire ed eseguire il provisioning Google Cloud dell'infrastruttura e ti consente 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 utilizzando linguaggi di programmazione. Puoi utilizzare il Google Cloud provider per Pulumi per creare codice dell'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, utilizza Config Controller e Config Connector.
Config Controller e Config Connector consentono di configurare servizi e risorseGoogle Cloud utilizzando gli strumenti di Kubernetes. Puoi utilizzare strumenti GitOps come Config Sync e le API Kubernetes, nonché configurare e utilizzare primitive di ingegneria della piattaforma come webhook di controllo dell'ammissione e operatori.
Per ulteriori informazioni, consulta la panoramica di Config Controller e la panoramica di Config Connector.
Crossplane
Un'altra opzione per gestire le risorse Google Cloud tramite Kubernetes è utilizzare 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 dello stato. Con 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 saperne di più, consulta la documentazione di Crossplane.
Ansible
Se vuoi automatizzare il provisioning, la gestione della configurazione, il deployment delle applicazioni, l'orchestrazione e altri processi IT, utilizza Ansible. Per ulteriori informazioni, consulta Ansible per Google Cloud.
Passaggi successivi
- Scopri di più su Terraform
- Scopri come creare un server web di base su Compute Engine utilizzando Terraform
- Scopri come archiviare lo stato di Terraform in un bucket Cloud Storage