GithubHelp home page GithubHelp logo

nginx-flask-redis-mongodb's Introduction

Ejemplo de una aplicación compuesta por Nginx + Flask + Redis + MongoDB utilizando Kubernetes

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.

1. Pre-requisitos

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

2. Estructura del proyecto

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.

3. Instrucciones de uso

  1. Descargue el repositorio a una carpeta de su computadora utilizando el comando git clone.
  2. Cámbiese a la carpeta del proyecto.
  3. Cree un proyecto en la Consola de Google Cloud Platform. Póngale el nombre y ID que usted prefiera.
  4. 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.
  5. 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.
  6. 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

  1. Ejecute el comando anterior en una terminal de su computadora.
  2. 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/.

  1. Suba la imagen del contendor al registro de su proyecto en Google Cloud Platform:

gcloud docker -- push gcr.io/<PROJECT ID>/flask-api

  1. Despliegue la aplicación en Google Cloud Platform:

kubectl create -f proxy-api.yaml

  1. Verifique que los servicios se encuentran funcionando correctamente:

kubectl get deployment kubectl get service kubectl get pod

  1. Obtenga la URL del servicio. Ejecute varias veces este comando hasta que el valor EXTERNAL-IP se encuentre asignado:

kubectl get service

  1. Acceda a la aplicación en un browser con la IP externa obtenida en el paso anterior.

  2. Para eliminar la aplicación y los servicios creados ejecute:

kubectl delete -f proxy-api.yaml

  1. Elimine el clúster desde la Consola de Google Cloud Platform.

4. Recursos

Para conocer más sobre Kubernetes consulte la documentación oficial disponible en Kubernetes.

Para aprender a trabajar con el comando kubectlconsulte 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.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.