Skip to content

Commit 3f0a4e3

Browse files
committed
updated Readme file
1 parent 5795e5d commit 3f0a4e3

File tree

2 files changed

+42
-23
lines changed

2 files changed

+42
-23
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,3 +20,4 @@ crash.log
2020
*.db
2121
*.db-shm
2222
*.db-wal
23+
infra/terraform.tfvars

README.md

Lines changed: 41 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ Proyecto de ejemplo para aprender Kubernetes en Azure (AKS) con una API .NET 8 +
44

55
---
66

7-
## Contenido
7+
## 🧱 Estructura del Proyecto
88

99
```
1010
k8s-dotnet-aks/
@@ -18,20 +18,31 @@ k8s-dotnet-aks/
1818

1919
---
2020

21-
## Requisitos
21+
## 🔐 Requisitos
2222

23-
- Azure Subscription con Service Principal (usar secrets ARM_*).
24-
- GitHub repo con estos **Secrets**:
25-
- `ARM_CLIENT_ID`
26-
- `ARM_CLIENT_SECRET`
27-
- `ARM_SUBSCRIPTION_ID`
28-
- `ARM_TENANT_ID`
29-
- `VM_SSH_PUB_KEY` (clave pública para nodos AKS)
30-
- (Opcional) `VM_SSH_KEY` si quieres conectarte a nodos; no requerido por los workflows.
23+
- Azure Subscription con Service Principal
24+
- GitHub repo con estos **Secrets** configurados:
25+
26+
| Secret | Descripción |
27+
|---------------------|------------------------------------------------------------------|
28+
| `AZURE_CREDENTIALS` | Credenciales JSON generadas con `az ad sp create-for-rbac --sdk-auth` |
29+
| `VM_SSH_PUB_KEY` | Clave pública SSH para nodos AKS |
30+
| `VM_SSH_KEY` | (Opcional) Clave privada SSH para acceso manual a nodos |
31+
32+
---
33+
34+
## 🚀 Workflows de GitHub Actions
35+
36+
| Archivo | Propósito | Cuándo se ejecuta |
37+
|---------------------------|------------------------------------------|----------------------------------------------|
38+
| `terraform-create.yml` | Provisiona la infraestructura (AKS, ACR) | `push` a `main` o manual desde GitHub |
39+
| `terraform-destroy.yml` | Elimina toda la infraestructura | Manual desde la UI de GitHub Actions |
40+
| `ci.yml` | Compila y testea la API (.NET) | `push` o `pull_request` hacia `main` |
41+
| `cd.yml` | Construye imagen Docker y despliega a AKS| `push` a `main` |
3142

3243
---
3344

34-
## Flujo de Trabajo Automatizado
45+
## 🌐 Flujo de Trabajo Automatizado
3546

3647
1. **Push a `main`** → corre *Terraform Create Infra* (crea RG, ACR, AKS).
3748
2. Cuando finaliza, corre **CI Build & Push**:
@@ -46,14 +57,15 @@ k8s-dotnet-aks/
4657

4758
---
4859

49-
## Inicialización del Backend de Terraform
60+
## ☁️ Backend Remoto de Terraform
61+
62+
Los workflows crean automáticamente (idempotente) estos recursos para almacenar el estado remoto:
5063

51-
Los workflows crean (idempotente) los recursos del backend remoto si no existen:
5264
- Resource Group: `tfstate-rg`
5365
- Storage Account: `tfstatek8sstore`
5466
- Container: `tfstate`
5567

56-
Si prefieres hacerlo manualmente:
68+
O puedes crearlos manualmente con:
5769

5870
```bash
5971
az group create -n tfstate-rg -l eastus
@@ -63,7 +75,7 @@ az storage container create -n tfstate --account-name tfstatek8sstore
6375

6476
---
6577

66-
## Ejecutar Localmente (opcional)
78+
## ▶️ Ejecutar API Localmente
6779

6880
```bash
6981
cd src/K8sDotnetApi
@@ -81,7 +93,7 @@ curl -X POST http://localhost:5164/movies -H "Content-Type: application/json" -d
8193

8294
---
8395

84-
## Construir Imagen Docker Local
96+
## 🐳 Construir Imagen Docker Local
8597

8698
```bash
8799
cd src/K8sDotnetApi
@@ -91,18 +103,24 @@ docker run -p 8080:8080 holamundo-dotnet:local
91103

92104
---
93105

94-
## Notas Importantes
106+
## ⚠️ Notas Importantes
95107

96-
- El nombre del ACR en Terraform está configurado como `k8sdotnetacr` (global único en Azure; cámbialo si ya existe).
97-
- El `deployment.yaml` usa marcador `<ACR_LOGIN_SERVER>` que el workflow CD sustituye dinámicamente antes de aplicar.
98-
- SQLite se almacena en `/app/data/movies.db`, montado desde un PVC (Azure Disk vía StorageClass default). No escalar a múltiples réplicas sin mover a una BD externa (Azure SQL, PostgreSQL, etc.).
108+
- El nombre del ACR en Terraform está configurado como `k8sdotnetacr` (debe ser único globalmente).
109+
- El `deployment.yaml` usa el marcador `<ACR_LOGIN_SERVER>` que es sustituido por el workflow `cd.yml` automáticamente.
110+
- SQLite se monta en `/app/data/movies.db` mediante un PVC con Azure Disk. Para escalar horizontalmente, deberías usar una base de datos externa como Azure SQL.
99111

100112
---
101113

102-
## Limpieza
114+
## 🧹 Limpieza
115+
116+
Para evitar costos innecesarios, ejecuta el workflow manual:
117+
118+
```
119+
Terraform Destroy Infra
120+
```
103121

104-
Para destruir la infra (y evitar costos): usa el workflow **Terraform Destroy Infra** desde la pestaña *Actions* en GitHub.
122+
Desde la pestaña **Actions** en GitHub.
105123

106124
---
107125

108-
¡Disfruta aprendiendo AKS! 💪
126+
¡Disfruta aprendiendo AKS! 💪

0 commit comments

Comments
 (0)