Passa al contenuto principale
Versione: 0.5.3

Traefik su Aruba Cloud

Distribuisci Traefik v3 — un reverse proxy cloud-native con TLS Let's Encrypt automatico — su Aruba Cloud. Usalo come punto di ingresso HTTPS per qualsiasi altro servizio in esecuzione sulla stessa VM o nella stessa rete Docker.

Versione provider: arubacloud/arubacloud ~> 1.0 | Terraform: ≥ 1.9


Introduzione​

Traefik scopre automaticamente i container Docker e instrada il traffico HTTPS verso di essi usando le label dei servizi. I certificati TLS vengono emessi e rinnovati da Let's Encrypt senza intervento manuale. Aggiungi qualsiasi container Docker alla rete traefik-public ed etichettalo — Traefik instrada il traffico automaticamente.


Panoramica dell'architettura​


Infrastruttura creata​

RisorsaDescrizione
arubacloud_cloudservertraefik-prod-vm (CSO1A2)
arubacloud_blockstorageDisco di avvio 20 GB
arubacloud_elasticipIP pubblico
arubacloud_securitygroupIngresso TCP 80/443/8080/22

Costo mensile stimato​

RisorsaCosto/mese stimato
VM CSO1A2~€10
Disco 20 GB~€3
Elastic IP~€5
Totale~€18/mese

Variabili​

Obbligatorie​

arubacloud_client_id, arubacloud_client_secret, ssh_public_key, acme_email

Opzionali​

VariabileDefaultDescrizione
traefik_version"v3.2"Tag immagine Docker
enable_dashboardtrueAbilita dashboard web sulla porta 8080
dashboard_cidr"0.0.0.0/0"CIDR sorgente dashboard — limita al tuo IP
ssh_cidr"0.0.0.0/0"CIDR sorgente SSH — limita al tuo IP

Distribuzione​

cd terraform-arubacloud-examples/traefik
cp terraform.tfvars.example terraform.tfvars
# Imposta acme_email in terraform.tfvars
terraform init && terraform apply

Aggiunta di un servizio dietro Traefik​

Connettiti via SSH alla VM e aggiungi un container Docker con le label Traefik:

# In qualsiasi docker-compose.yml sulla stessa VM
services:
myapp:
image: nginx
labels:
- "traefik.enable=true"
- "traefik.http.routers.myapp.rule=Host(`myapp.example.com`)"
- "traefik.http.routers.myapp.entrypoints=websecure"
- "traefik.http.routers.myapp.tls.certresolver=letsencrypt"
networks:
- traefik-public

networks:
traefik-public:
external: true

Distruzione​

terraform destroy

Raccomandazioni di sicurezza​

  1. Limita dashboard_cidr — la dashboard mostra tutte le route e la configurazione. Restringi al tuo IP.
  2. Disabilita la dashboard in produzione (enable_dashboard = false) se non la usi attivamente.
  3. Usa i middleware per l'autenticazione: basicAuth o forwardAuth (con Keycloak/Authentik) davanti ai servizi.

Risoluzione dei problemi​

Certificati non emessi​

  • Il record DNS A deve puntare all'Elastic IP prima della prima richiesta.
  • Controlla i log Traefik: ssh ubuntu@<IP> 'docker logs traefik --tail 100'
  • La porta 80 deve essere raggiungibile (Traefik usa la challenge HTTP-01).

Dashboard non accessibile​

docker ps # Verifica che il container traefik sia in esecuzione
docker logs traefik

Riferimenti​