Ura rapida introduzione al problema di esporre come esporre un servizio su protocollo HTTP in modo sicuro, ricostruendo tramite i principali tool una timeline che ci porta a Traefik, il tools oggetto della demo.
3. #CLOUDDAY2021
Topics
•Definiamo il contesto e i
concetti base
•Apache, chi e cosa
•Nginx, chi e cosa
•Traefik, chi e cosa
•Let’s Encrypt, chi e cosa
•Scenari Docker con Nginx
•Scenari Docker con Traefik
•Cosa portiamo a casa
7. #CLOUDDAY2021
Apache, chi e cosa 1/2
• Derivato da Httpd di Rob McCool presso i
laboratori NCSA tramite patching e contributi a
partire dal 1995.
• Architettura con approccio multi-threaded basata
sul ciclo di polling schematizzato nel diagramma
qui a fianco che interpreta la richiesta ricevuta e
innesca i moduli registrati nella configurazione del
deamon/servizio;
• La configurazione viene letta allo start del server
dal file httpd.conf riorganizzato in un filesystem di
configurazione a partire da Apache2.
8. #CLOUDDAY2021
Apache, chi e cosa 2/2
• Dalla versione 2.4 si passa dall’approccio
mpm_prefork al mpm_event. La 2.4.49 è l’attuale
release disponibile
• Pro: stabile e semplice da configurare per tutte le
piattaforma su VM o Container singoli. Usa
HAProxy per scenari in cui va garantita la
ridondanza.
• Contro: mal si presta ad architetture dinamiche
con funzioni di scalabilità e ridondanza che ne
garantiscano la resilienza.
9. #CLOUDDAY2021
Nginx, chi e cosa 1/3
• Rilasciato nel 2004 da Igor Sysoev come web
server leggero ad alte prestazioni.
• Disponibile in OpenSource (Nginx v1.21.3) su
licenza BSD o su licenza commerciale
(Nginx+) dalla F5 Networks come suite di
prodotti.
• Le richieste vengono gestite in modo
asincrono con un approccio «ad eventi».
11. #CLOUDDAY2021
Nginx, chi e cosa 3/3
• È usato anche come reverse
proxy, load balancer, cache
HTTP e proxy SMTP/IMAP/POP.
• Supporta SSL e STARTTLS, la
compressione gzip, flussi di
streaming, Rewrite URL, Alta
disponibilità, clustering, service
mesh e molto altro.
• Ingress controller per K8s
Opensource disponibile su
Github su licenza Apache2 o
Commercial da F5 Network.
12. #CLOUDDAY2021
Let’s Encrypt, chi e cosa
• Let’s Encrypt è una certification autority
no-profit fondata da EFF, Mozilla
Fondation, University of Michigan,
Akamay, Cisco nel 2014 con lo scopo di
accrescere la sicurezza del web
incentivando l’uso di HTTPS, TLS e SSL.
• Il rilascio e rinnovo dei certificati si basa
sul protocollo ACME che interroga il DNS
autoritativo del dominio o il WebServer
per verificare l’autorità del richiedente
sull’FQDN per cui si rilascia o rinnova il
certificato .
13. #CLOUDDAY2021
Traefik, chi e cosa 1/3
• Rilasciato nel 2016 da Emile Vauge.
• Stack di prodotti rilasciati in OpenSource
su lincenza MIT ed Enterprise su licenza
Commercial da TraefikLabs.
• Ha l’obiettivo di risolvere le esigenze di
routing del traffico HTTP(S) e TCP(TLS)
per le infrastrutture microservices.
14. #CLOUDDAY2021
Traefik, chi e cosa 2/3
• Ready per Websocket, HTTP/2 e GRPC.
• HTTPS integrato con Let’s Encrypt
• Gestione via WebGUI o Rest API
• Logs e Metriche integrato con i backend
• Service discovery, load balancing e
routing integrati con Docker, Swarm,
K8s, Ranchers, Marathon, File, Redis,
Consul, Etcd, Zookeeper, HTTP.
• Zero-install, eseguibile autocontenuto.
17. #CLOUDDAY2021
Cosa portiamo a casa
• Esporre pubblicamente risorse via
HTTP significa ignorare le
conseguenze a cui ci si espone:
Data Breach, Vandalismo,
Sabotaggio, Sanzioni.
• Il tempo che il difensore non investe
in conoscenza è un vantaggio
competitivo per l’aggressore.
• Un sistema automatico ha più
resilienza rispetto quello gestito
manualmente mentre feedback e
osservabilità riducono l’ansia.
• Un’ape ha meno inerzia e più
velocità rispetto un elefante.
• Le risorse fornite dall’infrastruttura
da vantaggio odierno diventano un
pesante debito tecnico quando si
migra.
19. #CLOUDDAY2021
Bibliografia 1/3
•HTTP SERVER Project
•Nginx+ F5 Network
•Nginx Opensorce
•kubernetes / nginx-ingress
@ Github
•TraefikLabs
•traefik / traefik @ Github
•Traefik Labs: Incubating the
Future of Cloud Native
Networking
•Awesome Traefik, a
collection of contributions
•Let's Encrypt
20. #CLOUDDAY2021
Bibliografia 2/3
• GARRTV - Internet Protocol, Indirizzi IP, DNS, Registri, IPV6 - Gabriella Paolini
• GARRTV - Internet: definizione di una rete a pacchetti, pile protocollari - Gabriella
Paolini
• How To Solve The Problem Of Centralized Let’s Encrypt Certificate by using
Ansible
• Let’s Encrypt: An Automated Certificate Authority to Encrypt the Entire Web
• Easy routing and service discovery with Docker, Consul and nginx
• Service Discovery for NGINX Plus Using Consul APIs
• Nginxinc / NGINX - Demos / consul-api-demo @ Github
21. #CLOUDDAY2021
Bibliografia 3/3
• [Demo Live] Service Discovery in Docker Using NGINX and NGINX Plus with
Consul
• Setting up a Reverse-Proxy with Nginx and docker-compose | Dominik Weber's
Personal Website (domysee.com)
• Docker - Traefik
• DoTheEvo / Traefik-v2-examples @ Github
• DoTheEvo / Traefik-simplest-step-by-step @ Github
• Service AutoDiscovery Using Traefik For Docker Containers | by Deepesh Tripathi
| Medium
• Traefik 2.0 + Docker — a Simple Step by Step Guide | by containeroo | Medium