
Podem dois andar juntos, se não estiverem de acordo? [Amós 3:3]
Na semana passada, a Amazon anunciou o suporte a recursos de terceiros no AWS CloudFormation.

Aqui na DoiT International, trabalhamos com AWS e Google Cloud, e adoramos automatizar tudo o que for possível. O AWS CloudFormation é uma ótima ferramenta para quem é cliente da AWS, mas hoje em dia muitas empresas usam vários provedores de nuvem. Então pensamos: por que não criar alguns clusters do Google Kubernetes Engine usando o CloudFormation, como prova de conceito para clientes interessados em infraestrutura como código em ambientes multi-cloud?
Um bom passo a passo sobre como desenvolver recursos customizados está disponível no tutorial do CloudFormation CLI e neste post. Vou focar em alguns pontos com os quais me deparei durante o desenvolvimento.
Vamos usar a API do Kubernetes Engine para criar novos clusters. Você vai precisar criar uma service account e atribuir a ela as permissões adequadas com o seguinte comando:
gcloud projects add-iam-policy-binding my-project —-member serviceAccount:[email protected] —-role roles/iam.serviceAccountUser —-role roles/container.adminAcesse o console do IAM > Service Account Key e baixe a chave em formato JSON. Copie o conteúdo do JSON e vá até o console do AWS Secret Manager. Crie um novo segredo em texto simples e cole o conteúdo do arquivo.
Para usar a API do Secret Manager no seu código, você vai precisar do AmazonWebServicesClientProxy.

Vale lembrar que, para testes locais com o SAM , você precisa substituir a linha:
getSecretValueResult = clientProxy.injectCredentialsAndInvoke(getSecretValueRequest, client::getSecretValue);por
getSecretValueResult = client.getSecretValue(getSecretValueRequest);A chamada de API para criar o cluster retorna na hora, mas a criação em si leva de 2 a 3 minutos. Queremos acompanhar o progresso e só retornar quando a criação for concluída com sucesso (ou falhar). Por isso, usamos o CallbackContext para informar o status da criação.

Depois de entender como desenvolver recursos customizados para criar um cluster, fica bem simples adicionar outras operações, como listar, excluir e atualizar. Dá para usar esse código como base para criar seus próprios recursos customizados para outros serviços do Google Cloud.
Você encontra o código aqui.
Quer mais conteúdos como esse? Confira o nosso blog ou siga o Aviv no Twitter.