Traefik adalah proxy terbalik HTTP modern dan penyeimbang beban untuk layanan mikro. Traefik membuat semua penerapan layanan mikro menjadi mudah, terintegrasi dengan komponen infrastruktur yang ada seperti Docker, Swarm Mode, Kubernetes, Amazon ECS, Rancher, Etcd, Consul, dll.
Traefik berfungsi sebagai router untuk semua aplikasi layanan mikro Anda, mengarahkan semua permintaan klien ke tujuan layanan mikro yang benar.
Dalam tutorial ini, saya akan menunjukkan langkah demi langkah cara menginstal dan mengkonfigurasi Traefik modern reverse proxy sebagai wadah Docker di Ubuntu 18.04 LTS (Bionic Beaver).
Prasyarat
- Ubuntu 18.04
- Hak istimewa root
Apa yang akan kita lakukan?
- Instal Docker di Ubuntu 18.04
- Instal Docker Compose
- Buat Jaringan Docker Khusus
- Instal dan Konfigurasi Traefik
- Pengujian
Langkah 1 - Instal Docker di Ubuntu 18.04
Untuk panduan ini, kami akan menggunakan versi buruh pelabuhan terbaru yang dapat diinstal dari repositori buruh pelabuhan resmi.
Tambahkan kunci buruh pelabuhan dan repositori menggunakan perintah di bawah ini.
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"
Perintah 'add-apt-repository' akan secara otomatis memperbarui semua repositori.
Sekarang instal docker-ce terbaru.
sudo apt install docker-ce
Setelah instalasi selesai, mulai layanan buruh pelabuhan dan aktifkan untuk diluncurkan setiap kali sistem boot.
systemctl start docker
systemctl enable docker
Edisi komunitas buruh pelabuhan telah diinstal pada sistem Ubuntu 18.04, periksa versi buruh pelabuhan yang diinstal.
docker version
Tambahan:Menjalankan Docker untuk pengguna non-root
Wadah Docker dapat dijalankan di bawah pengguna non-root. Kita hanya perlu menambahkan pengguna ke grup buruh pelabuhan.
Tambahkan pengguna 'mohammad'.
useradd -m -s /bin/bash mohammad
Sekarang tambahkan pengguna 'mohammad' ke grup buruh pelabuhan, lalu mulai ulang layanan buruh pelabuhan.
usermod -a -G docker mohammad
systemctl restart docker
Uji dengan menjalankan docker hello-world.
docker run -it hello-world
Dan berikut adalah hasilnya.
Langkah 2 - Instal Docker Compose
Docker-Compose adalah alat baris perintah untuk mendefinisikan dan mengelola aplikasi buruh pelabuhan multi-kontainer.
Docker Compose adalah skrip python, dapat diinstal dengan perintah python pip atau dengan perintah apt dari repositori Ubuntu dengan mudah. Dengan compose, kita dapat menjalankan beberapa container Docker dengan satu perintah.
Instal docker compose dari repositori menggunakan perintah apt di bawah ini.
sudo apt install docker-compose
Setelah instalasi selesai, periksa versi penulisan buruh pelabuhan.
docker-compose version
Docker compose 1.17 telah diinstal di Ubuntu 18.04.
Langkah 3 - Buat Jaringan Docker Khusus
Dalam tutorial ini, wadah traefik akan berjalan di jaringan kustom buruh pelabuhan. Jadi kita perlu membuat jaringan khusus buruh pelabuhan baru di server.
Periksa jaringan buruh pelabuhan yang tersedia di sistem.
docker network ls
Sekarang buat jaringan kustom baru bernama 'proxy' untuk wadah traefik.
docker network create proxy
Dan Anda akan mendapatkan string acak dari nama wadah jaringan. Periksa kembali jaringan yang tersedia.
docker network ls
Di bawah ini adalah hasilnya.
Jaringan buruh pelabuhan khusus bernama 'proxy' untuk traefik telah dibuat.
Langkah 4 - Instal dan Konfigurasikan Traefik Reverse Proxy
Pada langkah ini, kita akan membuat wadah traefik dengan HTTPS letsencrypt diaktifkan (menggunakan nama domain 'traefik.hakase-labs.io), dan secara otomatis mengarahkan HTTP ke HTTPS di traefik.
Praefik Pra-Instalasi
Sebelum membuat semua konfigurasi traefik, kita perlu menginstal 'apache2-utils' untuk membuat sandi htpasswd terenkripsi dan membuat direktori traefik baru.
Instal 'apache2-utils' menggunakan perintah apt di bawah ini.
sudo apt install apache2-utils -y
Sekarang jalankan perintah htpasswd di bawah ini untuk membuat kata sandi baru untuk otentikasi dasbor traefik.
htpasswd -nb mohammad password
Simpan hasilnya di catatan Anda.
mohammad:$apr1$hEgpZUN2$OYG3KwpzI3T1FqIg9LIbi.
Selanjutnya, login ke pengguna 'mohammad'.
su - mohammad
Buat direktori baru bernama 'traefik' untuk semua konfigurasi traefik.
mkdir -p traefik/
cd traefik/
Buat Konfigurasi Traefik
Buka direktori 'traefik' dan buat file konfigurasi baru 'traefik.toml' menggunakan editor vim.
cd traefik/
vim traefik.toml
Tempelkan konfigurasi di bawah ini.
#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"
Simpan dan keluar.
Catatan:
Semua informasi tentang konfigurasi ada di bagian komentar '#... '.
Buat Skrip Penulisan Traefik Docker
Sekarang buat skrip docker-compose yml.
vim docker-compose.yml
Tempelkan konfigurasi di bawah ini.
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
Simpan dan keluar.
Catatan:
- Kami membuat wadah baru bernama 'traefik' berdasarkan gambar buruh pelabuhan 'traefik:latest'.
- Kontainer 'traefik' akan berjalan pada jaringan buruh pelabuhan khusus bernama 'proxy' dan mengekspos port eksternal HTTP 80 dan HTTPS 443.
- Wadah akan memasang konfigurasi traefik 'traefik.toml' dan 'acme.json', termasuk file kaus kaki buruh pelabuhan.
- Konfigurasi label untuk traefik, nama domain frontend, dan port traefik.
Letsencrypt Konfigurasi ACME
Konfigurasi acme pada 'traefik.toml' digunakan untuk membuat SSL letsencrypt secara otomatis. Dan itu diperlukan untuk file penyimpanan 'acme.json'.
Buat file JSON baru 'acme.json' dan ubah izin menjadi '600'.
touch acme.json
chmod 600 acme.json
Semua log tentang info SSL letsencrypt akan disimpan dalam file.
Membangun Penampung Traefik
Sekarang kita siap untuk membangun wadah traefik kita sendiri menggunakan file konfigurasi di atas.
cd traefik/
ls -lah
Semua file konfigurasi 'traefik.toml', 'docker-compose.yml', dan 'acme.json'.
Bangun wadah menggunakan perintah penulisan buruh pelabuhan di bawah ini.
docker-compose up -d
Jika sudah selesai, periksa container yang sedang berjalan.
docker-compose ps
Dan Anda akan mengaktifkan dan menjalankan wadah Traefik, mengekspos port eksternal HTTP dan HTTPS.
Langkah 5 - Pengujian
Buka browser web Anda dan ketik nama domain traefik di bilah alamat. Milik saya adalah:
http://traefik.hakase-labs.io/
Anda akan diarahkan ke koneksi HTTPS dan akan dimintai otentikasi nama pengguna dan sandi.
Login dengan user 'mohammad' dan passwordnya adalah 'password'.
Dan Anda akan mendapatkan dashboard Traefik seperti di bawah ini.
Halaman status Traefik Health.
Traefik HTTP reverse-proxy modern telah diinstal sebagai wadah Docker di Ubuntu 18.04.