Le app Kubernetes di Terraform in Google Cloud Marketplace consentono ai tuoi clienti di utilizzare Terraform per eseguire il deployment delle tue app containerizzate su Google Kubernetes Engine. Agli utenti non viene addebitato alcun costo per l'utilizzo delle tue app Terraform Kubernetes, ma viene addebitato un costo per l'utilizzo delle risorse Google Cloud . Puoi offrire pubblicamente le app Terraform Kubernetes a tutti gli utenti di Cloud Marketplace o privatamente utilizzando le offerte private.
Le app Kubernetes Terraform che offri tramite Cloud Marketplace definiscono le loro configurazioni utilizzando i grafici Helm, che ospiti in Artifact Registry. Una volta configurato, esegui l'onboarding dell'app su Cloud Marketplace tramite Producer Portal.
Panoramica dell'onboarding di un'app Kubernetes Terraform
L'offerta di un'app Terraform Kubernetes tramite Cloud Marketplace prevede i seguenti passaggi:
Prepara l'app Kubernetes Terraform per Cloud Marketplace. Ciò include la configurazione di Artifact Registry e il push delle immagini della tua app.
Aggiungi le informazioni sui prezzi per la tua app nel Producer Portal.
Configura il deployment della tua app nel Producer Portal, inclusi il modulo Terraform, il grafico Helm e le immagini container.
Pubblica il tuo prodotto su Cloud Marketplace. Durante l'onboarding del prodotto, invii varie parti del prodotto per la revisione. Il team di Cloud Marketplace esamina ogni invio e collabora con te per risolvere eventuali problemi prima di approvarlo. Una volta approvati tutti gli invii, puoi pubblicare e lanciare il prodotto in pochi minuti.
Requisiti per le app Kubernetes Terraform
Tutti i prodotti che offri tramite Cloud Marketplace devono rispettare i requisiti delle schede di Cloud Marketplace.
La tua app Terraform Kubernetes deve soddisfare i seguenti requisiti aggiuntivi:
- La tua app deve essere eseguita su nodi GKE che utilizzano processori x86.
- Tutti i grafici Helm e le immagini container della tua app devono essere caricati nel tuo registro Artifact Registry, nello stesso repository e progetto che utilizzi per l'app Terraform Kubernetes.
- Il tuo registro Artifact Registry deve includere un grafico Helm.
- Il modulo Terraform deve essere ospitato come file ZIP in un bucket Cloud Storage che si trova nello stesso progetto che utilizzi per l'app Terraform Kubernetes.
- Devi attivare il controllo delle versioni per il bucket Cloud Storage che utilizzi per ospitare il modulo Terraform.
- Devi includere una guida dell'utente con i passaggi per eseguire il deployment dell'app dalla riga di comando, configurarla e utilizzarla. Per maggiori dettagli, consulta Requisiti per la guida dell'utente in questo documento.
- Per proteggere gli utenti da API instabili, utilizza solo risorse Kubernetes beta o in disponibilità generale.
Requisiti per le immagini dell'app
Le immagini dell'app devono soddisfare i seguenti requisiti:
- Tutte le immagini della tua app devono essere taggate con la traccia di rilascio e la
versione attuale. Ad esempio, se rilasci la versione
2.0.5nel canale di rilascio2.0, tutte le immagini corrispondenti devono essere taggate con2.0e2.0.5. Per maggiori dettagli, vedi Organizzare le release. Tutte le immagini dell'app devono contenere la seguente annotazione nel manifest delle immagini:
com.googleapis.cloudmarketplace.product.service.name=services/SERVICE_NAMESostituisci SERVICE_NAME con il nome del servizio. Per trovare il nome del servizio, consulta la tabella dei prodotti nella pagina Panoramica di Producer Portal. Per maggiori informazioni sulle annotazioni, consulta la documentazione di Open Container Initiative relativa alle annotazioni su GitHub.
Requisiti per il repository Artifact Registry
Il grafico Helm e le immagini container della tua app devono far parte di un unico repository Artifact Registry.
Ad esempio, se il repository Artifact Registry è
us-docker.pkg.dev/exampleproject, il grafico Helm e le immagini container della tua app
dovrebbero essere simili a quanto segue:
us-docker.pkg.dev/exampleproject/exampleapp/chartus-docker.pkg.dev/exampleproject/exampleapp/image1us-docker.pkg.dev/exampleproject/exampleapp/image2
Requisiti per il modulo Terraform
I clienti utilizzano il modulo Terraform per eseguire il deployment del tuo prodotto da Cloud Marketplace tramite Infrastructure Manager. Il modulo Terraform pacchettizza la configurazione Kubernetes della tua app.
Utilizza il modulo di esempio come punto di partenza e segui la guida per i partner per creare un modulo Terraform compatibile con la tua app.
Parametri passati alla tua app
Il modulo Terraform deve dichiarare i parametri da raccogliere dai clienti quando selezionano la tua app. Questi parametri vengono poi forniti al container del grafico Helm quando gli utenti eseguono il deployment dell'app.
Per configurare questi parametri, il modulo Terraform deve includere un file
schema.yaml.
Per scoprire come creare uno schema.yaml, consulta la
guida alla creazione di uno schema
su GitHub.
Richieste di cluster GPU
Se la tua app ha esigenze specifiche di GPU o richiede un uso intensivo della GPU, puoi specificare il tipo e il numero di GPU nel cluster utilizzando lo schema del deployer. Se specifichi le tue esigenze di GPU, disattivi la creazione assistita del cluster.
La tua app potrebbe richiedere una GPU Nvidia generica o una piattaforma Nvidia specifica.
Requisiti per la guida utente della tua app
La guida utente dell'app deve includere le seguenti informazioni:
- Panoramica: una panoramica generale della tua app, che copre le funzioni di base e le opzioni di configurazione. Questa sezione deve anche collegarsi all'app pubblicata su Cloud Marketplace.
- Configurazione una tantum: include i passaggi per configurare Helm e installare
la risorsa personalizzata (CRD)
CustomResourceDefinitionin modo che il cluster possa gestire la risorsa personalizzata. - Installazione: sono inclusi:
- Comandi per il deployment dell'app
- Trasferimento dei parametri disponibili nella configurazione della UI
- Blocco dei riferimenti alle immagini sui digest immutabili
- Informazioni su eventuali campi di input personalizzati che hai aggiunto al tuo modulo Terraform, se applicabile. Consulta le istruzioni per aggiungere campi di input al tuo modulo Terraform.
- Utilizzo di base: guide per le seguenti attività:
- Modifica di nomi utente e password
- Connessione a una console di amministrazione, se applicabile
- Connessione di uno strumento client ed esecuzione di un comando di esempio, se applicabile
- Abilitazione dell'ingresso e installazione dei certificati TLS, se applicabile
- Backup e ripristino: informazioni sul backup dello stato dell'app e sul ripristino dello stato dell'app da un backup.
- Aggiornamenti delle immagini: informazioni sull'aggiornamento delle immagini dell'app per patch o aggiornamenti secondari.
- Scalabilità: informazioni sulla scalabilità dell'app, se applicabile.
- Eliminazione: guide per eliminare l'app e pulire le risorse che potrebbero rimanere, ad esempio PersistentVolumeClaims.
Modelli di prezzo per le app Kubernetes Terraform
Puoi scegliere uno dei seguenti modelli di prezzi per la tua app:
- Nessun costo: i clienti pagano solo le risorse Google Cloud che utilizzano.
- Basati sull'utilizzo: i clienti pagano la tua app in base a misure di tua scelta, chiamate metriche, come il numero di container o il tempo di archiviazione. Se scegli un modello di prezzi basato sull'utilizzo, la tua app deve misurare e riportare le informazioni sull'utilizzo a Google.
Dopo aver pubblicato un'app Kubernetes Terraform con prezzi basati sull'utilizzo, puoi aggiornare i prezzi dell'app. Per aggiornare i prezzi della tua app, devono essere trascorsi almeno 30 giorni dalla pubblicazione dell'app o dall'ultimo aggiornamento dei prezzi.
Prezzi basati sull'utilizzo
Google Cloud Marketplace utilizza le annotazioni dei pod Kubernetes per monitorare l'utilizzo e addebitare ai clienti i costi dei deployment delle tue app Cloud Marketplace. Cloud Marketplace monitora la fatturazione e la misurazione a livello di pod e le aggrega a livello di scheda di prodotto.
Se esegui il deployment di più pod sulla stessa macchina (vCPU, GPU, TPU o memoria), il sistema assegna a ciascun pod l'utilizzo cumulativo che si verifica in tutti i pod di cui è stato eseguito il deployment sulla macchina. Ad esempio, se hai tre pod che condividono la stessa GPU, Cloud Marketplace li conteggia come tre GPU.
Cloud Marketplace considera identici i diversi SKU GKE all'interno di ogni famiglia di SKU di vCPU, TPU, GPU o memoria. Ad esempio, se la GPU è configurata come metrica, il prezzo configurato si applica indipendentemente dal fatto che il cliente utilizzi GKE Autopilot T4 GPU Premium, GKE Autopilot L4GKE Autopilot H100 GPU Premium, GKE Autopilot A100 40 GiB GPU, GKE Autopilot A100 80 GiB GPU o GKE Autopilot H100 GPU Premium.
Ti consigliamo vivamente di integrare la logica di business per garantire una fatturazione accurata dei clienti nelle tue app Cloud Marketplace. Per ridurre l'impatto della rimozione accidentale delle annotazioni delle etichette, ti consigliamo di progettare la tua app in modo che verifichi periodicamente che le annotazioni delle etichette siano ancora presenti. Se manca un'annotazione, la tua app deve limitare la propria funzionalità finché l'etichetta non viene reintegrata. Per un esempio in Python, vedi il seguente esempio:
pod_name = os.environ.get("HOSTNAME")
namespace = open(
"/var/run/secrets/kubernetes.io/serviceaccount/namespace"
).read()
# Load in-cluster config
config.load_incluster_config()
v1 = client.CoreV1Api()
# Get the Pod object
pod = v1.read_namespaced_pod(name=pod_name, namespace=namespace)
annotations = pod.metadata.annotations
if annotations:
print("Annotations for this pod:")
for key, value in annotations.items():
print(f" {key}: {value}")
else:
print("No annotations found on this pod.")
Passaggi successivi
- Esamina i requisiti delle schede di Cloud Marketplace.
- Prepara l'app Kubernetes Terraform per Cloud Marketplace.
- Aggiungi la tua app Terraform Kubernetes a Cloud Marketplace utilizzando Producer Portal.