Cloud Intelligence™Cloud Intelligence™

Cloud Intelligence™

Criando clusters do Google Kubernetes Engine com AWS CloudFormation

By Aviv LauferDec 5, 20192 min read

Esta página também está disponível em English, Deutsch, Español, Français, Italiano e 日本語.

1 qgjmd4zcbov9rnu 7qukfa

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.

1 qgjmd4zcbov9rnu 7qukfa

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

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

1 drxsdop2axuqaii8zuotqa

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.

1 nxvhyt gsrmvicwc27x4kq

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.