Cloud Intelligence™Cloud Intelligence™

Cloud Intelligence™

Crear clusters de Google Kubernetes Engine con AWS CloudFormation

By Aviv LauferDec 5, 20192 min read

Esta página también está disponible en English, Deutsch, Français, Italiano, 日本語 y Português.

1 qgjmd4zcbov9rnu 7qukfa

¿Andarán dos juntos, si no estuvieren de acuerdo? [Amós 3:3]

La semana pasada, Amazon anunció el soporte para recursos de terceros en AWS CloudFormation.

1 qgjmd4zcbov9rnu 7qukfa

En DoiT International trabajamos tanto con AWS como con Google Cloud, y nos encanta automatizar todo lo posible. AWS CloudFormation es una herramienta excelente si eres cliente de AWS, pero hoy en día muchas empresas trabajan con varios proveedores de nube. Así que nos preguntamos: ¿por qué no crear clusters de Google Kubernetes Engine con CloudFormation, como prueba de concepto para los clientes interesados en infrastructure-as-code en entornos multi-cloud?

En la guía de la CloudFormation CLI y en este blog post encontrarás un buen recorrido sobre cómo desarrollar recursos personalizados. Aquí me voy a centrar en algunos de los problemas con los que me encontré durante el desarrollo.

Vamos a usar la API de Kubernetes Engine para crear nuevos clusters. Tendrás que crear una cuenta de servicio y asignarle los roles correspondientes con el siguiente comando:

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

Entra a la consola de IAM > Service Account Key y descarga la clave en formato JSON. Copia el contenido del JSON y ve a la consola de AWS Secret Manager. Crea un secreto nuevo en texto plano y pega ahí el contenido del archivo.

Para usar la API de Secret Manager desde tu código, vas a necesitar AmazonWebServicesClientProxy.

1 drxsdop2axuqaii8zuotqa

Ten en cuenta que, si vas a hacer pruebas locales con SAM , tendrás que reemplazar la línea:

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

por

getSecretValueResult = client.getSecretValue(getSecretValueRequest);

La llamada a la API para crear el cluster responde de inmediato, pero la creación del cluster tarda entre 2 y 3 minutos. Como queremos monitorear el avance y devolver una respuesta solo cuando la creación termine con éxito (o falle), usamos el CallbackContext para informar el estado de la creación.

1 nxvhyt gsrmvicwc27x4kq

Una vez que entiendes cómo desarrollar recursos personalizados para crear un cluster, agregar otras operaciones como list, delete y update resulta bastante sencillo. Y puedes reutilizar el código para crear tus propios recursos personalizados para otros servicios de Google Cloud.

Puedes encontrar el código aquí.

¿Quieres leer más historias? Visita nuestro blog o sigue a Aviv en Twitter.