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

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

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.

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.