
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.

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.adminAndare 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.

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.

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.