Informazioni sulle API Google Cloud e su Terraform

Questa guida ha lo scopo di chiarire in che modo Terraform interagisce con le API Google Cloud (distinguendo tra API pubbliche e private) e di spiegare concetti chiave come l'attivazione delle API e l'importazione delle risorse. Questa comprensione è fondamentale per gestire in modo efficace le risorse Google Cloud con Terraform ed evitare errori comuni.

API pubbliche e private Google Cloud

I serviziGoogle Cloud espongono varie API che consentono ad applicazioni e strumenti (come Terraform) di interagire con le risorse e gestirle. Queste API rientrano in due categorie:

API pubbliche

Scopo: queste sono le interfacce principali per clienti e strumenti per creare, configurare e gestire Google Cloud risorse (ad es. istanze Compute Engine, bucket Cloud Storage, set di dati BigQuery).

Esposizione:le API pubbliche sono ben documentate, hanno endpoint REST definiti e sono destinate all'utilizzo esterno. Sono le API con cui è progettato per interagire il provider Terraform google.

Esempi: compute.googleapis.com, storage.googleapis.com, bigquery.googleapis.com.

API private (interne)

Scopo:queste API sono interne ai servizi Google Cloud , utilizzate da Google stesso per il funzionamento interno, l'orchestrazione e il provisioning dei suoi servizi gestiti. Espongono funzionalità non destinate all'interazione o alla gestione diretta dei clienti.

Esposizione:le API private in genere non sono documentate pubblicamente, non hanno endpoint esterni stabili e non sono progettate per l'accesso diretto da parte di strumenti di terze parti come Terraform. Sono un dettaglio di implementazione del servizio.

Esempio: dataproc-control.googleapis.com è un'API interna che Dataproc utilizza per il suo control plane operativo. I clienti non interagiscono direttamente con questa API né la gestiscono.

Abilitazione delle API e importazione delle risorse in Terraform

Comprendere la distinzione tra "attivazione di un'API" e "importazione di una risorsa" è fondamentale per utilizzare Terraform in modo efficace con Google Cloud.

Abilitazione di un'API

  • Significato:quando "abiliti un'API" in Google Cloud, attivi un servizio Google Cloud specifico per il tuo progetto. In questo modo, al tuo progetto vengono concesse le autorizzazioni e l'accesso necessari per utilizzare le funzionalità del servizio e creare risorse gestite.

Contesto di Terraform:in Terraform, questa operazione viene in genere eseguita utilizzando la risorsa google_project_service. Questa risorsa verifica che un'API pubblica specificata (ad es. compute.googleapis.com) è abilitato per il tuo progetto Google Cloud .

Scopo:l'abilitazione di un'API è un prerequisito per la creazione o la gestione di risorse appartenenti a quel servizio. Ad esempio, devi abilitare compute.googleapis.com prima di poter creare risorse google_compute_instance.

Esempio (Terraform):

```hcl
resource "google_project_service" "compute_api" {
  project            = "your-gcp-project-id"
  service            = "compute.googleapis.com"
  disable_on_destroy = false
}
```

Nota importante:la risorsa google_project_service è progettata esclusivamente per gestire lo stato di attivazione delle API accessibili pubblicamente Google Cloud . Non è destinato all'uso con API interne o private e non funziona con queste. Il tentativo di utilizzarlo per le API private genererà errori, in quanto queste API non sono esposte tramite la superficie API pubblica per tale gestione.

Importazione di una risorsa

Che cosa significa:in Terraform, "importazione" si riferisce all'inserimento di una risorsa cloud esistente (una creata manualmente o da un altro processo esterno a Terraform) nella gestione di Terraform. Quando importi una risorsa, Terraform genera una voce di stato per la risorsa, consentendoti di gestirne il ciclo di vita (aggiornamenti, eliminazione) utilizzando la configurazione di Terraform.

Contesto Terraform: questo risultato si ottiene utilizzando il comando terraform import o utilizzando i blocchi import introdotti in Terraform 1.5+.

Scopo:ottenere il controllo delle risorse che non sono state inizialmente sottoposte al provisioning da Terraform.

Esempio (interfaccia a riga di comando Terraform):

```bash
terraform import google_compute_instance.my_instance projects/your-gcp-project-id/zones/us-central1-a/instances/my-vm
```

Rispondere ai dubbi sulle API private (ad es. dataproc-control.googleapis.com

A volte i clienti trovano riferimenti ad API private (come dataproc-control.googleapis.com per Dataproc) nei log o nella documentazione e si chiedono se devono abilitarle o importarle con Terraform.

Nessuna azione richiesta al cliente:se un'API viene identificata come API privata o interna Google Cloud , non devi abilitarla esplicitamente utilizzando google_project_service o tentare di importarla con Terraform.

Gestione interna:queste API sono fondamentali per il funzionamento interno dei serviziGoogle Cloud . Sono gestiti automaticamente da Google e non sono progettati per l'interazione o la gestione diretta con i clienti tramite strumenti pubblici.

Nessun impatto sull'Service Usage: la tua incapacità di "importare" o gestire esplicitamente un'API privata utilizzando Terraform non influirà sulla tua capacità di utilizzare il servizio Google Cloud associato (ad es. Dataproc funzionerà correttamente senza che tu debba gestire dataproc-control.googleapis.com. Le interazioni API interne necessarie vengono gestite da Google.

Concentrati sulle API pubbliche:quando gestisci le risorse Google Cloud con Terraform, devi concentrarti esclusivamente sull'attivazione e sulla configurazione delle API pubbliche che corrispondono ai servizi e alle risorse che intendi eseguire il provisioning.

Conclusione

Comprendendo la chiara distinzione tra API pubbliche e private Google Cloud e i ruoli specifici delle API di "attivazione" rispetto a quelle di "importazione" delle risorse in Terraform, puoi gestire in modo efficace la tua Google Cloud infrastruttura. Non tentare di gestire o importare esplicitamente le API Google Cloud private, in quanto sono componenti interni gestiti da Google. Concentra le configurazioni Terraform sulle API esposte pubblicamente e sulle risorse corrispondenti.