Questa pagina descrive come creare un tipo composito con Deployment Manager. Dopo aver creato un tipo composto, puoi richiamarlo nella configurazione e creare deployment.
Un tipo composito è costituito da uno o più modelli configurati per funzionare insieme e che sono stati aggiunti definitivamente a Deployment Manager. Una volta aggiunto, puoi utilizzare un tipo composito come faresti con un tipo di proprietà di Google. Per scoprire di più sui tipi, consulta la Panoramica dei tipi.
Ad esempio, puoi creare un insieme di modelli che eseguono il deployment di un gruppo di istanze gestite bilanciato in base al carico di rete. Aggiungi questi modelli come tipo composito a Deployment Manager e poi utilizzali nelle configurazioni future come faresti con altri tipi.
Potrebbe interessarti anche la sezione Condividere i tipi tra progetti.
Prima di iniziare
- Se vuoi utilizzare gli esempi di riga di comando in questa guida, installa lo strumento a riga di comando`gcloud`.
- Se vuoi utilizzare gli esempi di API in questa guida, configura l'accesso API.
- Utilizza l'API v2beta per gli esempi di API in questa guida.
Componenti di un tipo composito
Per creare un tipo composto, devi avere un modello Jinja o Python di primo livello e, facoltativamente, un insieme di file di supporto che alla fine si risolvono in tipi di base. I tipi compositi possono essere costituiti da risorse che sono a loro volta altri tipi compositi. Deployment Manager espanderà in modo ricorsivo questi tipi durante il deployment.
Un tipo composto è costituito da:
- Un modello di primo livello: il modello Jinja o Python di primo livello eseguito durante l'espansione quando viene chiamato il tipo.
- Uno schema: il file JSON Schema che descrive le informazioni sul modello di primo livello e su eventuali importazioni secondarie definite.
- File importati: eventuali file aggiuntivi necessari per l'esecuzione, ad esempio file di supporto, sottomodelli, e schemi pertinenti per i sottomodelli, se applicabili. Tuttavia, questa opzione è facoltativa. Il tipo composito può anche contenere un solo modello di primo livello.
Creazione di un tipo composto
Puoi creare un tipo composito registrando il modello di primo livello di una configurazione e le relative importazioni e lo schema associati. Crea un tipo composito
utilizzando gcloud
o l'API.
Potrebbe interessarti anche l'esempio che descrive come creare e chiamare un tipo composito.
gcloud
Per eseguire questo comando, devi trovarti nella directory in cui hai archiviato il modello di primo livello e i sottomodelli che fanno parte di questo tipo composto.
Utilizzando gcloud CLI, effettua una richiesta types create
e specifica il
modello di primo livello e il nome del tipo desiderato per chiamare questo tipo composito.
Esegui questo comando nella directory locale in cui si trovano i file modello.
$ gcloud beta deployment-manager types create [TYPE_NAME] --template=[TOP_LEVEL_TEMPLATE]
dove:
[TYPE_NAME]
è il nome che vuoi assegnare a questo tipo[TOP_LEVEL_TEMPLATE]
è il percorso relativo al modello di primo livello che descrive questo tipo.
API
Nell'API, effettua una richiesta POST
contenente i campi composite
e name
. Nel campo composite
, definisci:
- Lo schema di primo livello
- I contenuti dei modelli importati
- I contenuti del modello di primo livello
Il corpo della richiesta dell'API ha la seguente struttura:
POST https://www.googleapis.com/deploymentmanager/v2beta/projects/[PROJECT_ID]/global/compositeTypes
{
"composite": {
"files": {
"schema": "[CONTENTS_OF_SCHEMA]",
"imports": [
{
"name": "[TEMPLATE_FILE]",
"content": "[CONTENTS_OF_TEMPLATE_FILE]"
},
{
"name": "[ANOTHER_TEMPLATE_IF_NECESSARY]",
"content": "[CONTENTS_OF_TEMPLATES]"
}
],
"template": "[TOP-LEVEL_TEMPLATE_CONTENTS]",
"templateFileType": "[FILE_TYPE]"
}
},
"name": "[TYPE_NAME]"
}
Per un esempio su come creare queste richieste, consulta
Creare un tipo composito di gruppo di istanze gestite con scalabilità automatica.
Per ulteriori informazioni, consulta la documentazione del metodo
insert
.
Deployment di un tipo composito
I tipi sono una risorsa per progetto e sono accessibili in base alle autorizzazioni descritte nella documentazione del Controllo degli accessi. Ossia:
- Gli editor e gli spettatori dei progetti, nonché gli editor di tipi possono creare e utilizzare i tipi disponibili per il progetto.
- I visualizzatori di tipo possono ottenere un elenco dei tipi e dei tipi di utilizzo disponibili per il progetto.
Puoi anche aggiungere un altro progetto come visualizzatore di tipi in modo che possa accedere ai tuoi tipi. Leggi l'articolo Condivisione dei tipi tra progetti.
Dopo aver registrato un tipo composito, puoi eseguirlo nello stesso modo in cui chiameresti i tipi gestiti da Google:
types: [PROJECT_ID]/composite:[TYPE_NAME]
Ad esempio:
resources:
- name: my example-resource
type: example-project/composite:autoscaled-igm
properties:
...
Eseguire il deployment di un tipo composito direttamente con lo strumento a riga di comando
Deployment Manager offre la possibilità di eseguire il deployment di un tipo composito direttamente con Google Cloud CLI. Anziché creare un file di configurazione di primo livello, l'gcloud CLI ne genererà automaticamente uno per te.
Ad esempio, il seguente comando esegue il deployment di un tipo composto denominato autoscaled-igm
:
gcloud deployment-manager deployments create my-igm \
--composite-type example-project/composite:autoscaled-igm
Puoi anche impostare le proprietà del tipo composito utilizzando il flag --properties
:
gcloud deployment-manager deployments create my-igm \
--composite-type example-project/composite:autoscaled-igm \
--properties zone:us-central1-a
Tieni presente che:
Tutti i valori vengono analizzati come valori YAML. Ad esempio,
version: 3
viene passato come numero intero. Se vuoi specificarlo come stringa, inserisci virgolette singole con codice di escape intorno al valore,version: \'3\'
.I valori booleani non fanno distinzione tra maiuscole e minuscole, pertanto
TRUE
,true
eTrue
vengono trattati allo stesso modo.Devi passare tutte le proprietà obbligatorie definite dal tipo composito. Non puoi fornire solo un sottoinsieme di proprietà. Se alcune proprietà hanno valori predefinite, puoi omettere la proprietà dalla riga di comando.
Per specificare più proprietà, fornisci coppie chiave:valore separate da virgole. Non importa in quale ordine specifichi le coppie. Ad esempio:
gcloud deployment-manager deployments create my-igm \ --composite-type example-project/composite:autoscaled-igm \ --properties zone:us-central1-a,machineType:n1-standard-1,image:debian-8
Dopo aver eseguito questo comando, Deployment Manager crea un deployment utilizzando il tipo composito fornito. Puoi verificare che il deployment sia stato creato utilizzando la console Google Cloud o lgcloud CLI. Per informazioni su come visualizzare un deployment, consulta Visualizzare un manifest.
Esempio: creazione di un tipo composto
Deployment Manager offre molte configurazioni di esempio nel repository GitHub di Deployment Manager che puoi utilizzare come tipi compositi. Per questo esempio, aggiungerai un tipo composito che esegue il deployment di un servizio ad alta disponibilità bilanciato in più zone in una singola regione. Per ulteriori informazioni, consulta l'esempio completo.
In questo esempio, il file di configurazione di primo livello è ha-service.py. Tutti gli eventuali sottomodelli vengono importati nei file dello schema.
- Scarica i file Python e dello schema dalla directory GitHub. Ometti eventuali file in una sottodirectory ed eventuali file di diagrammi.
Nella directory locale in cui hai scaricato tutti i file, esegui il seguente comando per creare un nuovo tipo composito denominato
ha-service-example
:gcloud beta deployment-manager types create ha-service-example --template=ha-service.py
Visualizza un elenco di tipi per verificare che il tipo sia stato creato correttamente:
gcloud beta deployment-manager types list --provider composite
Descrivi il nuovo tipo:
gcloud beta deployment-manager types describe ha-service-example --provider composite
Crea una nuova configurazione che esegue il deployment del tipo. Sostituisci
[PROJECT_ID]
con l'ID del tuo progetto:resources: - name: ha-service-example type: [PROJECT_ID]/composite:ha-service-example properties: dockerImage: gcr.io/deployment-manager-examples/nodejsservicestatic zones: - us-central1-b - us-central1-a
Salva la configurazione come
example-config.yaml
. Tieni presente che non hai dovuto importare alcun modello nella configurazione.Esegui il deployment del nuovo tipo composito:
gcloud deployment-manager deployments create ha-service-deployment --config example-config.yaml
L'API restituisce un elenco di risorse create dal tipo:
Waiting for create [operation-1488254932422-5498f5a950d71-2bd3b8c8-b13ddab5]...done. Create operation operation-1488254932422-5498f5a950d71-2bd3b8c8-b13ddab5 completed successfully. NAME TYPE STATE ERRORS INTENT ha-service-deployment-lb-fr compute.v1.forwardingRule COMPLETED [] ha-service-deployment-lb-hc compute.v1.httpHealthCheck COMPLETED [] ha-service-deployment-lb-tp compute.v1.targetPool COMPLETED [] ha-service-deployment-service-us-central1-a-as compute.v1.autoscaler COMPLETED [] ha-service-deployment-service-us-central1-a-igm compute.v1.instanceGroupManager COMPLETED [] ha-service-deployment-service-us-central1-a-it compute.v1.instanceTemplate COMPLETED [] ha-service-deployment-service-us-central1-b-as compute.v1.autoscaler COMPLETED [] ha-service-deployment-service-us-central1-b-igm compute.v1.instanceGroupManager COMPLETED [] ha-service-deployment-service-us-central1-b-it compute.v1.instanceTemplate COMPLETED []
Congratulazioni, hai creato il tuo primo tipo composito.
Passaggi successivi
- Condividi i tipi con altri progetti.
- Eliminare un tipo.
- Crea una configurazione.
- Crea un deployment.
- Crea un tipo di base utilizzando un provider di tipi.