Traefik là một proxy ngược HTTP hiện đại và bộ cân bằng tải cho các dịch vụ vi mô. Traefik giúp triển khai mọi dịch vụ vi mô dễ dàng, tích hợp với các thành phần cơ sở hạ tầng hiện có như Docker, Swarm Mode, Kubernetes, Amazon ECS, Rancher, Etcd, Consul, v.v.
Traefik đóng vai trò là bộ định tuyến cho mọi ứng dụng dịch vụ vi mô của bạn, định tuyến mọi yêu cầu của máy khách đến đúng đích đến của dịch vụ vi mô.
Trong hướng dẫn này, tôi sẽ chỉ cho bạn từng bước cách cài đặt và cấu hình proxy ngược hiện đại Traefik dưới dạng vùng chứa Docker trên Ubuntu 18.04 LTS (Bionic Beaver).
Thêm khóa docker và kho lưu trữ bằng lệnh bên dưới.
Lệnh 'add-apt-repository' sẽ tự động cập nhật tất cả các kho lưu trữ.
Bây giờ hãy cài đặt docker-ce mới nhất.
Sau khi cài đặt hoàn tất, hãy khởi động dịch vụ docker và cho phép dịch vụ này khởi chạy mọi lúc khi khởi động hệ thống.
Docker community-edition đã được cài đặt trên hệ thống Ubuntu 18.04, hãy kiểm tra phiên bản docker đã cài đặt.
Thêm người dùng 'mohammad'.
Bây giờ hãy thêm người dùng 'mohammad' vào nhóm docker, sau đó khởi động lại dịch vụ docker.
Kiểm tra bằng cách chạy lệnh docker hello-world.
Và sau đây là kết quả.
Docker Compose là một tập lệnh python, có thể cài đặt bằng lệnh python pip hoặc bằng lệnh apt từ kho lưu trữ Ubuntu một cách dễ dàng. Với compose, chúng ta có thể chạy nhiều container Docker bằng một lệnh duy nhất.
Cài đặt docker compose từ kho lưu trữ bằng lệnh apt bên dưới.
Sau khi cài đặt hoàn tất, hãy kiểm tra phiên bản docker compose.
Docker compose 1.17 đã được cài đặt trên Ubuntu 18.04.
Kiểm tra mạng docker khả dụng trên hệ thống.
Bây giờ, hãy tạo một mạng tùy chỉnh mới có tên là 'proxy' cho vùng chứa traefik.
Và bạn sẽ nhận được một chuỗi ngẫu nhiên tên vùng chứa mạng. Kiểm tra lại mạng khả dụng.
Kết quả hiển thị bên dưới.
Mạng docker tùy chỉnh có tên 'proxy' cho traefik đã được tạo.
Cài đặt 'apache2-utils' bằng lệnh apt bên dưới.
Bây giờ hãy chạy lệnh htpasswd bên dưới để tạo mật khẩu mới cho xác thực bảng điều khiển traefik.
Lưu kết quả vào ghi chú của bạn.
Tiếp theo, đăng nhập vào người dùng 'mohammad'.
Tạo một thư mục mới có tên 'traefik' cho tất cả cấu hình traefik.
Dán cấu hình bên dưới.
Lưu và thoát.
Lưu ý:
Tất cả thông tin về cấu hình đều có trong phần bình luận '#...'.
Dán cấu hình bên dưới.
Lưu và thoát.
Lưu ý:
Tạo tệp JSON mới 'acme.json' và thay đổi quyền thành '600'.
Tất cả nhật ký về thông tin SSL letsencrypt sẽ được lưu trong tệp.
Tất cả các tệp cấu hình 'traefik.toml', 'docker-compose.yml' và 'acme.json'.
Xây dựng container bằng lệnh docker compose bên dưới.
Khi hoàn tất, hãy kiểm tra container đang chạy.
Và bạn sẽ có container Traefik hoạt động, hiển thị các cổng ngoài HTTP và HTTPS.
Bạn sẽ được chuyển hướng đến kết nối HTTPS và sẽ được yêu cầu xác thực tên người dùng và mật khẩu.
Đăng nhập bằng người dùng 'mohammad' và mật khẩu là 'password'.
Và bạn sẽ nhận được bảng điều khiển Traefik như bên dưới.
Trang trạng thái Traefik Health.
Proxy ngược HTTP hiện đại Traefik đã được cài đặt dưới dạng vùng chứa Docker trên Ubuntu 18.04.
Traefik đóng vai trò là bộ định tuyến cho mọi ứng dụng dịch vụ vi mô của bạn, định tuyến mọi yêu cầu của máy khách đến đúng đích đến của dịch vụ vi mô.
Trong hướng dẫn này, tôi sẽ chỉ cho bạn từng bước cách cài đặt và cấu hình proxy ngược hiện đại Traefik dưới dạng vùng chứa Docker trên Ubuntu 18.04 LTS (Bionic Beaver).
Điều kiện tiên quyết
- Ubuntu 18.04
- Quyền root
Chúng ta sẽ làm gì?
- Cài đặt Docker trên Ubuntu 18.04
- Cài đặt Docker Compose
- Tạo Mạng Docker Tùy chỉnh
- Cài đặt và Cấu hình Traefik
- Kiểm tra
Bước 1 - Cài đặt Docker trên Ubuntu 18.04
Đối với hướng dẫn này, chúng tôi sẽ sử dụng phiên bản docker mới nhất có thể cài đặt từ kho lưu trữ docker chính thức.Thêm khóa docker và kho lưu trữ bằng lệnh bên dưới.
Mã:
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"
Bây giờ hãy cài đặt docker-ce mới nhất.
Mã:
sudo apt install docker-ce
Mã:
systemctl start docker
systemctl enable docker
Mã:
phiên bản docker
Bổ sung: Chạy Docker cho người dùng không phải root
Có thể chạy container Docker dưới quyền người dùng không phải root. Chúng ta chỉ cần thêm người dùng vào nhóm docker.Thêm người dùng 'mohammad'.
Mã:
useradd -m -s /bin/bash mohammad
Mã:
usermod -a -G docker mohammad
systemctl restart docker
Mã:
docker run -it hello-world
Bước 2 - Cài đặt Docker Compose
Docker-Compose là một công cụ dòng lệnh để xác định và quản lý các ứng dụng docker đa vùng chứa.Docker Compose là một tập lệnh python, có thể cài đặt bằng lệnh python pip hoặc bằng lệnh apt từ kho lưu trữ Ubuntu một cách dễ dàng. Với compose, chúng ta có thể chạy nhiều container Docker bằng một lệnh duy nhất.
Cài đặt docker compose từ kho lưu trữ bằng lệnh apt bên dưới.
Mã:
sudo apt install docker-compose
Mã:
docker-compose version
Bước 3 - Tạo mạng Docker tùy chỉnh
Trong hướng dẫn này, container traefik sẽ chạy trên mạng tùy chỉnh docker. Vì vậy, chúng ta cần tạo một mạng tùy chỉnh docker mới trên máy chủ.Kiểm tra mạng docker khả dụng trên hệ thống.
Mã:
docker network ls
Mã:
docker network create proxy
Mã:
docker network ls
Mạng docker tùy chỉnh có tên 'proxy' cho traefik đã được tạo.
Bước 4 - Cài đặt và cấu hình Traefik Reverse Proxy
Trong bước này, chúng ta sẽ tạo vùng chứa traefik với HTTPS letsencrypt được bật (sử dụng tên miền 'traefik.hakase-labs.io) và tự động chuyển hướng HTTP sang HTTPS trên traefik.Cài đặt trước Traefik
Trước khi tạo tất cả cấu hình traefik, chúng ta cần cài đặt 'apache2-utils' để tạo mật khẩu htpasswd được mã hóa và tạo thư mục traefik mới.Cài đặt 'apache2-utils' bằng lệnh apt bên dưới.
Mã:
sudo apt install apache2-utils -y
Mã:
htpasswd -nb mohammad password
Mã:
mohammad:$apr1$hEgpZUN2$OYG3KwpzI3T1FqIg9LIbi.
Tiếp theo, đăng nhập vào người dùng 'mohammad'.
Mã:
su - mohammad
Mã:
mkdir -p traefik/
cd traefik/
Tạo cấu hình Traefik
Đi tới thư mục 'traefik' và tạo tệp cấu hình mới 'traefik.toml' sử dụng trình soạn thảo vim.
Mã:
cd traefik/
vim traefik.toml
Mã:
#Cấu hình Traefik toàn cụcdebug = falsecheckNewVersion = truelogLevel = "ERROR"#Xác định EntryPoint cho HTTP và HTTPSdefaultEntryPoints = ["https","http"]#Bật Traefik Dashboard trên cổng 8080#với phương pháp xác thực cơ bản#mohammad và mật khẩu[web]address = ":8080"[web.auth.basic]users = ["mohammad:$apr1$hEgpZUN2$OYG3KwpzI3T1FqIg9LIbi."]#Xác định cổng HTTP 80 và#Cổng HTTPS 443 EntryPoint#Bật tự động chuyển hướng HTTP sang HTTPS[entryPoints][entryPoints.http]address = ":80"[entryPoints.http.redirect]entryPoint = "https"[entryPoints.https]address = ":443"[entryPoints.https.tls]#Bật thử lại gửi yêu cầu nếu lỗi mạng[retry]#Định nghĩa cấu hình Docker Backend[docker]endpoint = "unix:///var/run/docker.sock"domain = "traefik.hakase-labs.io"watch = trueexposedbydefault = false#Đăng ký Letsencrypt#Định nghĩa thử thách Letsencrypt ACME HTTP[acme]email = "[emailprotected]"storage = "acme.json"entryPoint = "https"OnHostRule = true [acme.httpChallenge] entryPoint = "http"
Lưu ý:
Tất cả thông tin về cấu hình đều có trong phần bình luận '#...'.
Tạo Traefik Docker Compose Script
Bây giờ hãy tạo tập lệnh yml docker-compose.
Mã:
vim docker-compose.yml
Mã:
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: alwaysnetworks: proxy: external: true
Lưu ý:
- Chúng tôi đang tạo một container mới có tên 'traefik' dựa trên hình ảnh docker 'traefik:latest'.
- Container 'traefik' sẽ chạy trên mạng docker tùy chỉnh có tên 'proxy' và hiển thị các cổng ngoài HTTP 80 và HTTPS 443.
- Container sẽ gắn cấu hình traefik 'traefik.toml' và 'acme.json', bao gồm tệp sock docker.
- Cấu hình nhãn cho traefik, tên miền giao diện người dùng và cổng traefik.
Cấu hình ACME Letsencrypt
Cấu hình acme trên 'traefik.toml' được sử dụng để tự động tạo SSL letsencrypt. Và nó được yêu cầu cho tệp lưu trữ 'acme.json'.Tạo tệp JSON mới 'acme.json' và thay đổi quyền thành '600'.
Mã:
touch acme.json
chmod 600 acme.json
Xây dựng Traefik Container
Bây giờ chúng ta đã sẵn sàng để xây dựng traefik container của riêng mình bằng cách sử dụng các tệp cấu hình ở trên.
Mã:
cd traefik/
ls -lah
Xây dựng container bằng lệnh docker compose bên dưới.
Mã:
docker-compose up -d
Khi hoàn tất, hãy kiểm tra container đang chạy.
Mã:
docker-compose ps
Bước 5 - Kiểm tra
Mở trình duyệt web của bạn và nhập tên miền traefik vào thanh địa chỉ. Của tôi là:Bạn sẽ được chuyển hướng đến kết nối HTTPS và sẽ được yêu cầu xác thực tên người dùng và mật khẩu.
Đăng nhập bằng người dùng 'mohammad' và mật khẩu là 'password'.
Và bạn sẽ nhận được bảng điều khiển Traefik như bên dưới.
Trang trạng thái Traefik Health.
Proxy ngược HTTP hiện đại Traefik đã được cài đặt dưới dạng vùng chứa Docker trên Ubuntu 18.04.