Parte 1 despliegue app¶
Notas¶
- PAAS: Plataforma como servicio: Es un servicio sobre el cual podemos construir servicios
- IAAS: Infraestructura como servicio: Nos permite tener procesamiento o almacenamiento como servicio
- SAAS: Software como servicio: Es una aplicativo que nos provee servicios
Ejemplo¶
Aplicación local¶
Vamos a construir una aplicación local en flask que nos provee unos endpoints sencillos
https://gist.github.com/cardel/acd9a6dd7eddf608c4674dfe6131376d
Como probar¶
#Usar postman con las URL
curl -X GET -G localhost:5000/mult -d "a=10" -d "b=40"
curl -X GET -G localhost:5000/mult -d "a=10" -d "b=40"
curl -X POST localhost:5000/div -d "a=10" -d "b=50"
curl -X GET -G localhost:5000/mult -d "a=10" -d "b=40"
curl -X POST localhost:5000/div -d "a=10" -d "b=50"
Implementación local¶
Usando ambientes virtuales (python)¶
Es dependiente de las versiones en el sistema operativa
#Requiere levantar un ambiente con las dependencias
python -m venv vnev
source venv/bin/activate
pip install pip --upgrade
pip install -r requirements.txt
#Levantamos el servidor
python -m flask --host=0.0.0.0
Implementación usando docker¶
https://gist.github.com/cardel/84254b214e11fbd15974a7a86a259699
docker compose up -d #levanta el servidor no-attach (proceso aparte)
docker compose down #quiero bajar el servicio
Ejemplo de despliegue en Microsoft Azure¶
Autenticarse
az login --use-device-code
#Creamos el grupo de recursos
az acr create --resource-group usb20242 --sku Basic
#Crear el registro de contenedores (PAAS)
az acr create --resource-group usb20242 --sku Basic --name flaskapp
#Autenticamos en el ACR
az acr login --name flaskapp
#Tag de la imagen en nuestro Docker local
docker ps -a #Revisar el nombre
':
El nombre suele ser
<carpeta> "-" web
'
docker tag ejemplo-web flaskapp.azurecr.io/app
#Subimos el repositorio
docker push flaskapp.azurecr.io/app
#Verificamos
az acr repository show --name flaskapp --repository app
#Creamos el plan (asignamos capacidades a nuestro webapp)
az appservice plan create \
--name basico \
--resource-group usb20242 \
--sku B1 \
--is-linux \
--number-of-workers 2
#Habilito acceso de administrador al ACR
az acr update --name flaskapp --admin-enabled true
#Creo el webapp
az webapp create \
--resource-group usb20242 \
--plan basico \
--name flaskapp-web \
--deployment-container-image-name flaskapp-azurecr.io/app:latest
#Configuro el webapp
ACR_USERNAME=$(az acr credential show --name flaskapp --query "username" -o tsv)
ACR_PASSWORD=$(az acr credential show --name flaskapp --query "passwords[0].value" -o tsv)
az webapp config container set \
--name flaskapp-web \
--resource-group usb20242 \
--docker-custom-image-name flaskapp.azurecr.io/app:latest \
--docker-registry-server-url https://flaskapp.azurecr.io \
--docker-registry-server-user $ACR_USERNAME \
--docker-registry-server-password $ACR_PASSWORD
az webapp config appsettings set \
--resource-group usb20242 \
--name flaskapp-web \
--settings WEBSITES_PORT=5000