Traefik è un moderno proxy inverso HTTP e bilanciamento del carico per microservizi. Traefik semplifica l'implementazione di tutti i microservizi, integrandoli con i componenti dell'infrastruttura esistente come Docker, Swarm Mode, Kubernetes, Amazon ECS, Rancher, Etcd, Consul ecc.
Traefik funge da router per tutte le tue applicazioni di microservizi, instradando tutte le richieste dei client alla corretta destinazione dei microservizi.
In questo tutorial, ti mostrerò passo dopo passo come installare e configurare il proxy inverso moderno di Traefik come contenitore Docker su Ubuntu 18.04 LTS (Bionic Beaver).
Prerequisiti
- Ubuntu 18.04
- Privilegi di root
Cosa faremo?
- Installa Docker su Ubuntu 18.04
- Installa Docker Compose
- Crea rete Docker personalizzata
- Installa e configura Traefik
- Test
Passaggio 1 - Installa Docker su Ubuntu 18.04
Per questa guida, utilizzeremo l'ultima versione della finestra mobile che può essere installata dal repository ufficiale della finestra mobile.
Aggiungi la chiave mobile e il repository utilizzando il comando seguente.
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
Il comando 'add-apt-repository' aggiornerà automaticamente tutti i repository.
Ora installa l'ultimo docker-ce.
sudo apt install docker-ce
Al termine dell'installazione, avvia il servizio Docker e abilitalo per l'avvio ogni volta all'avvio del sistema.
systemctl start docker
systemctl enable docker
L'edizione della comunità Docker è stata installata sul sistema Ubuntu 18.04, controlla la versione Docker installata.
docker version
Aggiuntivo:esecuzione di Docker per utenti non root
Il contenitore Docker può essere eseguito con l'utente non root. Dobbiamo solo aggiungere l'utente al gruppo Docker.
Aggiungi l'utente "mohammad".
useradd -m -s /bin/bash mohammad
Ora aggiungi l'utente 'mohammad' al gruppo Docker, quindi riavvia il servizio Docker.
usermod -a -G docker mohammad
systemctl restart docker
Prova eseguendo la finestra mobile hello-world.
docker run -it hello-world
E di seguito il risultato.
Passaggio 2:installazione di Docker Compose
Docker-Compose è uno strumento a riga di comando per la definizione e la gestione di applicazioni docker multi-container.
Docker Compose è uno script python, può essere installato facilmente con il comando python pip o con il comando apt dal repository di Ubuntu. Con Compose, possiamo eseguire più contenitori Docker con un unico comando.
Installa docker compose dal repository usando il comando apt di seguito.
sudo apt install docker-compose
Al termine dell'installazione, controlla la versione di composizione della finestra mobile.
docker-compose version
La finestra mobile compone 1.17 è stata installata su Ubuntu 18.04.
Passaggio 3:crea una rete Docker personalizzata
In questo tutorial, il contenitore traefik verrà eseguito sulla rete personalizzata Docker. Quindi dobbiamo creare una nuova rete personalizzata Docker sul server.
Controlla la rete Docker disponibile sul sistema.
docker network ls
Ora crea una nuova rete personalizzata denominata "proxy" per il container traefik.
docker network create proxy
E otterrai una stringa casuale del nome del contenitore di rete. Ricontrolla la rete disponibile.
docker network ls
Di seguito è mostrato il risultato.
È stata creata la rete docker personalizzata denominata 'proxy' per traefik.
Fase 4:installazione e configurazione di Traefik Reverse Proxy
In questo passaggio, creeremo il contenitore traefik con HTTPSletsencrypt abilitato (usando un nome di dominio 'traefik.hakase-labs.io) e reindirizzeremo automaticamente HTTP a HTTPS su traefik.
Preinstallazione di Traefik
Prima di creare tutta la configurazione di traefik, è necessario installare 'apache2-utils' per generare la password htpasswd crittografata e creare la nuova directory traefik.
Installa 'apache2-utils' usando il comando apt di seguito.
sudo apt install apache2-utils -y
Ora esegui il comando htpasswd di seguito per generare una nuova password per l'autenticazione del dashboard di traefik.
htpasswd -nb mohammad password
Conserva il risultato nella tua nota.
mohammad:$apr1$hEgpZUN2$OYG3KwpzI3T1FqIg9LIbi.
Quindi, accedi all'utente 'mohammad'.
su - mohammad
Crea una nuova directory denominata 'traefik' per tutte le configurazioni di traefik.
mkdir -p traefik/
cd traefik/
Crea configurazione Traefik
Vai alla directory 'traefik' e crea un nuovo file di configurazione 'traefik.toml' usando l'editor vim.
cd traefik/
vim traefik.toml
Incolla la configurazione qui sotto.
#Traefik Global Configuration debug = false checkNewVersion = true logLevel = "ERROR" #Define the EntryPoint for HTTP and HTTPS defaultEntryPoints = ["https","http"] #Enable Traefik Dashboard on port 8080 #with basic authentication method #mohammad and password [web] address = ":8080" [web.auth.basic] users = ["mohammad:$apr1$hEgpZUN2$OYG3KwpzI3T1FqIg9LIbi."] #Define the HTTP port 80 and #HTTPS port 443 EntryPoint #Enable automatically redirect HTTP to HTTPS [entryPoints] [entryPoints.http] address = ":80" [entryPoints.http.redirect] entryPoint = "https" [entryPoints.https] address = ":443" [entryPoints.https.tls] #Enable retry sending a request if the network error [retry] #Define Docker Backend Configuration [docker] endpoint = "unix:///var/run/docker.sock" domain = "traefik.hakase-labs.io" watch = true exposedbydefault = false #Letsencrypt Registration #Define the Letsencrypt ACME HTTP challenge [acme] email = "[email protected]" storage = "acme.json" entryPoint = "https" OnHostRule = true [acme.httpChallenge] entryPoint = "http"
Salva ed esci.
Nota:
Tutte le informazioni sulla configurazione sono nella sezione commenti '#... '.
Crea script di composizione Traefik Docker
Ora crea lo script yml di composizione mobile.
vim docker-compose.yml
Incolla la configurazione qui sotto.
version: '3' services: traefik: image: traefik:latest command: --docker --docker.domain=hakase-labs.io ports: - 80:80 - 443:443 networks: - proxy volumes: - /var/run/docker.sock:/var/run/docker.sock - ./traefik.toml:/traefik.toml - ./acme.json:/acme.json labels: - "traefik.frontend.rule=Host:traefik.hakase-labs.io" - "traefik.port=8080" container_name: traefik restart: always networks: proxy: external: true
Salva ed esci.
Nota:
- Stiamo creando un nuovo contenitore denominato 'traefik' basato sull'immagine della finestra mobile 'traefik:latest'.
- Il contenitore 'traefik' verrà eseguito sulla rete Docker personalizzata denominata 'proxy' ed esporrà le porte esterne HTTP 80 e HTTPS 443.
- Il contenitore monterà la configurazione di traefik 'traefik.toml' e 'acme.json', incluso il file docker sock.
- Configurazione dell'etichetta per traefik, il nome di dominio frontend e la porta traefik.
Configurazione Letsencrypt ACME
La configurazione acme su 'traefik.toml' viene utilizzata per generare automaticamente il letencrypt SSL. Ed è necessario per il file di archiviazione "acme.json".
Crea un nuovo file JSON "acme.json" e modifica l'autorizzazione in "600".
touch acme.json
chmod 600 acme.json
Tutti i registri sulle informazioni di Letencrypt SSL verranno salvati nel file.
Costruisci un container Traefik
Ora siamo pronti per creare il nostro container traefik utilizzando i file di configurazione sopra.
cd traefik/
ls -lah
Tutti i file di configurazione "traefik.toml", "docker-compose.yml" e "acme.json".
Costruisci il contenitore utilizzando il comando Docker Compose di seguito.
docker-compose up -d
Al termine, controlla il contenitore in esecuzione.
docker-compose ps
E otterrai il container Traefik attivo e funzionante, esporrai le porte esterne HTTP e HTTPS.
Fase 5 - Test
Apri il tuo browser web e digita il nome di dominio traefik nella barra degli indirizzi. Il mio è:
http://traefik.hakase-labs.io/
Verrai reindirizzato alla connessione HTTPS e ti verrà richiesta l'autenticazione di nome utente e password.
Accedi con l'utente 'mohammad' e la password è 'password'.
E otterrai la dashboard di Traefik come di seguito.
Pagina dello stato di Traefik Health.
Il proxy inverso HTTP moderno di Traefik è stato installato come contenitore Docker su Ubuntu 18.04.