Cloud Intelligence™Cloud Intelligence™

Cloud Intelligence™

Avviare cluster Google Kubernetes Engine con AWS CloudFormation

By Aviv LauferDec 5, 20192 min read

Questa pagina è disponibile anche in English, Deutsch, Español, Français, 日本語 e Português.

1 qgjmd4zcbov9rnu 7qukfa

Camminano forse due uomini insieme, senza essersi messi d'accordo? [Amos 3:3]

La scorsa settimana Amazon ha annunciato il supporto alle risorse di terze parti in AWS CloudFormation.

1 qgjmd4zcbov9rnu 7qukfa

In DoiT International lavoriamo sia con AWS sia con Google Cloud e amiamo automatizzare il più possibile. AWS CloudFormation è uno strumento eccellente per chi usa AWS, ma ormai sempre più aziende si affidano a più cloud provider. Ci siamo quindi chiesti: perché non provare a creare cluster Google Kubernetes Engine con CloudFormation, come proof of concept per i clienti interessati all'infrastructure-as-code in ambienti multi-cloud?

Una guida dettagliata su come sviluppare risorse personalizzate è disponibile nel walkthrough della CloudFormation CLI e in questo articolo. Qui mi soffermerò su alcune criticità incontrate durante lo sviluppo.

Useremo l'API di Kubernetes Engine per avviare nuovi cluster. Occorre creare un service account e assegnargli i ruoli appropriati con il seguente comando:

gcloud projects add-iam-policy-binding my-project —-member serviceAccount:[email protected] —-role roles/iam.serviceAccountUser —-role roles/container.admin

Andare nella console IAM > Service Account Key e scaricare la chiave come file JSON. Copiarne il contenuto e aprire la console di AWS Secret Manager. Creare un nuovo secret in formato testo semplice e incollare il contenuto del file.

Per usare l'API di Secret Manager nel codice è necessario ricorrere ad AmazonWebServicesClientProxy.

1 drxsdop2axuqaii8zuotqa

Da tenere presente che per i test in locale con SAM , occorre sostituire la riga:

getSecretValueResult =
clientProxy.injectCredentialsAndInvoke(getSecretValueRequest, client::getSecretValue);

con

getSecretValueResult = client.getSecretValue(getSecretValueRequest);

La chiamata API di creazione del cluster restituisce subito una risposta, ma la creazione vera e propria richiede circa 2-3 minuti: vogliamo quindi monitorarne l'avanzamento e restituire il controllo solo a creazione completata (o fallita). Per questo ci serviamo del CallbackContext per riportare lo stato dell'operazione.

1 nxvhyt gsrmvicwc27x4kq

Una volta capito come sviluppare risorse personalizzate per creare un cluster, aggiungere altre operazioni come list, delete e update risulta piuttosto semplice. Lo stesso codice può essere riutilizzato per creare risorse personalizzate per altri servizi di Google Cloud.

Il codice è disponibile qui.

Vuoi altri contenuti come questo? Dai un'occhiata al nostro blog oppure segui Aviv su Twitter.