Hướng dẫn Docker: Cài đặt Traefik - Proxy ngược hiện đại cho dịch vụ vi mô

theanh

Administrator
Nhân viên
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).

Điều kiện tiên quyết​

  • Ubuntu 18.04
  • Quyền root

Chúng ta sẽ làm gì?​

  1. Cài đặt Docker trên Ubuntu 18.04
  2. Cài đặt Docker Compose
  3. Tạo Mạng Docker Tùy chỉnh
  4. Cài đặt và Cấu hình Traefik
  5. 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"
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.
Mã:
sudo apt install docker-ce
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.
Mã:
systemctl start docker
systemctl enable docker
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.
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
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.
Mã:
usermod -a -G docker mohammad
systemctl restart docker
Kiểm tra bằng cách chạy lệnh docker hello-world.
Mã:
docker run -it hello-world
Và sau đây là kết quả.


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
Sau khi cài đặt hoàn tất, hãy kiểm tra phiên bản docker compose.
Mã:
docker-compose version
Docker compose 1.17 đã được cài đặt trên Ubuntu 18.04.


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
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.
Mã:
docker network create proxy
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.
Mã:
docker network ls
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.

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
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.
Mã:
htpasswd -nb mohammad password
Lưu kết quả vào ghi chú của bạn.
Mã:
mohammad:$apr1$hEgpZUN2$OYG3KwpzI3T1FqIg9LIbi.


Tiếp theo, đăng nhập vào người dùng 'mohammad'.
Mã:
su - mohammad
Tạo một thư mục mới có tên 'traefik' cho tất cả cấu hình traefik.
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
Dán cấu hình bên dưới.
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 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 '#...'.

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
Dán cấu hình bên dưới.
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 và thoát.

Lưu ý:
  1. 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'.
  2. 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.
  3. Container sẽ gắn cấu hình traefik 'traefik.toml' và 'acme.json', bao gồm tệp sock docker.
  4. 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
Tất cả nhật ký về thông tin SSL letsencrypt sẽ được lưu trong tệp.

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
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.
Mã:
docker-compose up -d


Khi hoàn tất, hãy kiểm tra container đang chạy.
Mã:
docker-compose ps
Và bạn sẽ có container Traefik hoạt động, hiển thị các cổng ngoài HTTP và HTTPS.


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.

Tham khảo​

 
Back
Bên trên