TLS/HTTPS¶
AltruPets utiliza Let's Encrypt para certificados TLS automáticos.
Arquitectura¶
┌─────────────────┐
│ Cloudflare │ DNS Provider
│ (DNS-01) │
└────────┬────────┘
│
▼
┌─────────────────┐
│ cert-manager │ Gestión de certificados
│ (Kubernetes) │
└────────┬────────┘
│
▼
┌─────────────────┐
│ NGINX Gateway │ TLS Termination
│ Fabric │
└─────────────────┘
Componentes¶
cert-manager¶
# Instalación
helm install cert-manager jetstack/cert-manager \
--namespace cert-manager \
--create-namespace \
--set crds.enabled=true
ClusterIssuers¶
| Issuer | Uso |
|---|---|
letsencrypt-staging |
Desarrollo, pruebas |
letsencrypt-prod |
Producción |
Certificate¶
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
name: altrupets-app-tls
spec:
secretName: altrupets-app-tls
issuerRef:
name: letsencrypt-staging # o letsencrypt-prod
kind: ClusterIssuer
dnsNames:
- altrupets.app
- "*.altrupets.app"
Configuración¶
Variables requeridas¶
| Variable | Descripción |
|---|---|
CLOUDFLARE_API_TOKEN |
Token con permisos DNS edit |
CLOUDFLARE_ZONE_ID |
ID de la zona en Cloudflare |
Terraform¶
module "cert_manager" {
source = "../../modules/kubernetes/cert-manager"
environment = "dev"
namespace = "altrupets-dev"
domain_name = "altrupets.app"
acme_email = "altrupets.workspace@gmail.com"
cloudflare_api_token = var.cloudflare_api_token
}
Validación DNS-01¶
- cert-manager crea registro TXT en
_acme-challenge.altrupets.app - Let's Encrypt valida el registro
- cert-manager emite el certificado
- Secret creado en
altrupets-app-tls
Ambientes¶
| Ambiente | Issuer | Dominio |
|---|---|---|
| DEV | staging | localhost (sin TLS) |
| QA | staging | qa.altrupets.app |
| STAGING | prod | staging.altrupets.app |
| PROD | prod | altrupets.app |
Troubleshooting¶
Certificate pending¶
kubectl describe certificate altrupets-app-tls -n altrupets-dev
kubectl get challenge -n altrupets-dev
DNS propagation¶
Logs¶
Renovación¶
Los certificados se renuevan automáticamente 30 días antes de expirar.
Rate Limits¶
Let's Encrypt tiene límites: - Staging: sin límite estricto - Production: 50 certificados/semana por dominio
Usar staging para desarrollo.