En este ejemplo se muestra una aplicación compuesta por un proxy Nginx, una API desarrollada en Flask, una base de datos Redis para manejo de sesiones y una base de datos en MongoDB para el almacenamiento persistente de la información. La aplicación se despliega en un clúster de Kubernetes en Google Cloud Platform.
Para Redis y MongoDB se utilizan servicios en la nube ofrecidos por Redis Labs y mLab respectivamente.
- Tener instalado
docker
. Mas información se encuentra disponible en Docker. - Tener instalado
kubectl
. Mas información se encuentra disponible en Install and Set Up kubectl . - Tener una cuenta activa en Google Cloud Platform.
- Tener una cuenta activa en Redis Labs o utilizar un servidor Redis local. Puede crear una cuenta gratuita aquí.
- Tener una cuenta activa en mLab o utilizar un servidor de MongoDB local. Puede crear una cuenta gratuita aquí.
- Tener instalado el Google Cloud SDK.
- Acceso a Internet.
A continuación se describen los archivos y carpetas que forman parte del proyecto, así como la función que juega cada uno de ellos:
- proxy-api.yaml: Archivo de configuración donde se definen los servicios a ejecutar dentro del clúster de Kubernetes.
- app: Carpeta que contiene el código de la aplicación desarrollada en Flask.
- config.py: Archivo de configuración de la aplicación.
- Descargue el repositorio a una carpeta de su computadora utilizando el comando
git clone
. - Cámbiese a la carpeta del proyecto.
- Cree un proyecto en la Consola de Google Cloud Platform. Póngale el nombre y ID que usted prefiera.
- Dentro de la misma consola, en el menú de la izquierda seleccione la opción Kubernetes Engine / Clústeres de Kubernetes y cree un nuevo clúster dentro del proyecto creado en el paso anterior.
- Cambie el nombre nombre del clúster, la versión del clúster a la 1.9.4-gke.1 y el tamaño del clúster a 1 nodo. Los demás valores déjelos como aparecen de manera predeterminada.
- Una vez creado el clúster, seleccione la opción "Ejecutar" y en la ventana que aparece, seleccione el primer comando relacionado con
kubectl
. El comando a copiar tiene una estructura similar a la siguiente:
gcloud container clusters get-credentials demo-webinar --zone us-central1-a --project webinar-199317
- Ejecute el comando anterior en una terminal de su computadora.
- Compile la imagen del contenedor de la aplicación, sustituyendo
<PROJECT ID>
por el que le correponde. Este valor es el que aparece en el parámetro--project
del comando ejecutado en el paso anterior:
docker build -t gcr.io/<PROJECT ID>/flask-api app/.
- Suba la imagen del contendor al registro de su proyecto en Google Cloud Platform:
gcloud docker -- push gcr.io/<PROJECT ID>/flask-api
- Despliegue la aplicación en Google Cloud Platform:
kubectl create -f proxy-api.yaml
- Verifique que los servicios se encuentran funcionando correctamente:
kubectl get deployment
kubectl get service
kubectl get pod
- Obtenga la URL del servicio. Ejecute varias veces este comando hasta que el valor EXTERNAL-IP se encuentre asignado:
kubectl get service
-
Acceda a la aplicación en un browser con la IP externa obtenida en el paso anterior.
-
Para eliminar la aplicación y los servicios creados ejecute:
kubectl delete -f proxy-api.yaml
- Elimine el clúster desde la Consola de Google Cloud Platform.
Para conocer más sobre Kubernetes consulte la documentación oficial disponible en Kubernetes.
Para aprender a trabajar con el comando kubectl
consulte la documentación oficial disponible en Install and Set Up kubectl
.
Para conocer más sobre Google Cloud Platform consulte la documentación oficial disponible en GCP Documentation.