https://github.com/iliangithub/Proyecto_AWS_IaC-monitoring-Web-PaaS-
🔵PART 2
https://github.com/iliangithub/Proyecto_AWS_IaC-monitoring-Web-PaaS-
aws boostrap centreon containers docker docker-compose flask grafana prometheus terraform
Last synced: about 1 month ago
JSON representation
🔵PART 2
- Host: GitHub
- URL: https://github.com/iliangithub/Proyecto_AWS_IaC-monitoring-Web-PaaS-
- Owner: iliangithub
- Created: 2024-11-04T16:52:47.000Z (7 months ago)
- Default Branch: produccion
- Last Pushed: 2025-03-12T11:50:50.000Z (3 months ago)
- Last Synced: 2025-03-21T16:46:55.966Z (2 months ago)
- Topics: aws, boostrap, centreon, containers, docker, docker-compose, flask, grafana, prometheus, terraform
- Homepage:
- Size: 64.5 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Project AWS, Terraform, Web, PaaS y Monitorización.
# 1.0 Introduction.The intention of this project, is the simulate a real life, enterprise situation, what a DevOps could be doing on a Daily Basis, aswell as applying as much tools and technology as posible, making special enphasis
on automating as much as I possibly can, and to make it rigurous.Consistirá en desplegar en AWS, la página web que el cliente nos ha pedido hacer. Está pagina Web ha sido previamente creada, gracias a nuestro entorno de desarrollo que he creado en: https://github.com/iliangithub/Proyecto_entorno_desarrollo_docker-compose .El despliegue de la página Web, será realizado utilizando Terraform como IaaC, de hecho toda la infraestructura, será hecha usando Terraform, la página será monitrizada utilizando, Grafana, Centreon y Prometheus, estas herramientas, se encontrarán en instancias EC2, gracias a Terraform. La aplicación en sà deberá de ser desplegada en contenedores y orquestrada por Kubernetes.
## 1.1 Resumen + Arquitectura:
El primer paso es montar la Infraestructura, para ello, vamos a utilizar Terraform.

Entonces, sabiendo esto, ahora la estructura de directorios es la siguiente:
```
📂 terraform-eks/
│── main.tf # Archivo principal
│── variables.tf # Variables reutilizables
│── versions.tf # Versiones de Terraform
│── providers.tf # Configuración de AWS
│── 📂 sub/ # Carpeta con los módulos
│ ├── 📂 vpc/ # Módulo de VPC
│ │ ├── main.tf
│ │ ├── variables.tf
│ │ ├── outputs.tf
│ ├── 📂 eks/ # Módulo de EKS
│ │ ├── main.tf
│ │ ├── variables.tf
│ │ ├── outputs.tf
│ ├── 📂 database/ # Módulo de la Base de Datos
│ │ ├── main.tf
│ │ ├── variables.tf
│ │ ├── outputs.tf
│ ├── 📂 webapp/ # Módulo de la WebApp PHP
│ │ ├── main.tf
│ │ ├── variables.tf
│ │ ├── outputs.tf
│ ├── 📂 monitoring/ # Módulo de Monitoreo
│ ├── main.tf
│ ├── variables.tf
│ ├── outputs.tf
```El clúster en sÃ, va a tener la siguiente arquitectura:
## 1.2 ¿Por qué he usado el Stack que he usado para este proyecto?
### 1.2.1 AWS
### 1.2.2 Terraform:
- ✅ Automatización: Provisión de infraestructura de manera repetible y automatizada.
- ✅ Infraestructura como Código: Control de versiones, revisiones y modularidad.
- ✅ Gestión de Estado: Mantiene un archivo de estado (terraform.tfstate) para rastrear recursos creados.
- ✅ Multi-nube: Puede usarse con otras nubes (Azure, Google Cloud, etc.).
### 1.2.3 Clúster de Kubernetes, EKS (AWS):### 1.2.4 RDS (Relational Database Service):
Partiendo de la base de que la base de datos, NO puede estar dentro del clúster de Kubernetes. Por la simple razón de que Kubernetes puede perfectamente, matar/destruir Pods, y si tenemos la base de datos en el clúster y encima la BD tiene datos, pues lo perderÃamos y eso es grave.
### 1.2.5 Prometheus, Centreon, Grafana:
### 1.2.6 Balanceador de Carga NGINX:
- ✅ Más control sobre el tráfico (puedes definir reglas avanzadas).
- ✅ Evitas costos de ELB (porque ELB cobra por tráfico y horas activas).
- ✅ Puedes configurar rate limiting, redirecciones, etc.### 1.2.7 AWS Cognito.
Para autenticar:
En arquitecturas de microservicios, por ejemplo, se utiliza autenticación (a través de herramientas como AWS Cognito o Keycloak) para asegurar que cada servicio interactúe de manera segura y que los usuarios tengan acceso solo a las partes del sistema que les corresponden.### 1.2.8 AWS SQS.
### 1.2.9 Backend: NodeJS or Java (Springboot).
En mi caso, voy a utilizar NodeJS. Ya que en LinkedIn, veo constantemente ofertas de NodeJS o Java, en este caso, como manejo JavaScript, aunque sea un poco, pues quiero hacerla asÃ.
Java sin embargo, pues es un lenguaje que no he utilizado jamás.### 1.2.10 Frontend, Nginx + React:
Estoy prácticamente obligado a usar entonces React, debido a que estoy usando NodeJS, el stack LAMP, aquà ya no puedo utilizarlo.
No voy a utilizar Apache.
### 1.2.11 AWS API Gateway.
## 1.3 Prerequisitos.
- Tener el AWS CLI instalado: https://awscli.amazonaws.com/AWSCLIV2.msi
- Tener Terraform.
- Cuenta de AWS.# 2.0 Infraestructura con Terraform: