Traefik la gi
Show Traefik is an open-source Edge Router that makes publishing your services a fun and easy experience. It receives requests on behalf of your system and finds out which components are responsible for handling them. What sets Traefik apart, besides its many features, is that it automatically discovers the right configuration for your services. The magic happens when Traefik inspects your infrastructure, where it finds relevant information and discovers which service serves which request. Traefik is natively compliant with every major cluster technology, such as Kubernetes, Docker, Docker Swarm, AWS, Mesos, Marathon, and the list goes on; and can handle many at the same time. (It even works for legacy software running on bare metal.) With Traefik, there is no need to maintain and synchronize a separate configuration file: everything happens automatically, in real time (no restarts, no connection interruptions). With Traefik, you spend time developing and deploying new features to your system, not on configuring and maintaining its working state. Developing Traefik, our main goal is to make it simple to use, and we're sure you'll enjoy it. -- The Traefik Maintainer Team Xin chào mọi người, bài viết này mình lại đề cập đôi chút về Traefik – một phần mềm opensource mà mình đã từng giới thiệu trên Viblo. Thời điểm đó, phiên bản mới nhất của Traefik ở version Traefik v1.7 – Điểm quaĐiểm qua lại một tẹo! Traefik là một reverse-proxy, thân thiện với kiến trúc micro services – giúp chúng ta dễ dàng hơn trong việc deploy các service của hệ thống. Được sử dụng kết hợp với Docker, K8s… Cấu hình Traefik để publish một web service với Docker thông qua docker label nên việc triển khai khá đơn giản:
Bạn có thể dựng thử stack đơn giản ở trên nhé:
Ở Traefik v1.7 thì chúng ta biết tới có ba khái niệm chính đó là
Traefik v2 bây giờ ngoài support static configuration file ở format TOML thì còn support thêm cả YAML. Nếu bạn là fan của YAML thì quả thực xin chúc mừng nhé! Trong phần tiếp theo dưới đây chúng ta sẽ cùng khám phá những điều mới trên v2 và migrate stack nhỏ bên trên sang v2. ProviderMặc dù Traefik v1 cũng support khá nhiều Infrastructure như: Docker, Kubernetes, Amazon ECS… nhưng các cấu hình còn khá rời rạc. Sang v2, tất cả đã được quy về một mối gọi là Provider. Ý tưởng là Traefik sẽ query các API của provider để tìm các thông tin cho việc định tuyến (routing). Các provider được support gồm:
Trong bài này, mình sử dụng Traefik + Docker nên mình sẽ dùng provider là Docker. Ngoài ra, một số provider chưa được hỗ trợ nhưng có lẽ sẽ được cung cấp trong thời gian tới gồm:
Do đó, hãy cân nhắc kỹ lưỡng nếu bạn có dự định upgrade Traefik lên v2 nhé! Frontend, Backend are dead?Ngoài Provider ở trên, Traefik cũng viết lại và tổ chức lại một số các
thành phần trong đó có
Chính vì sự thay đổi lớn này nên toàn bộ các config cho việc routing đều bị thay đổi. Chi tiết các rule/matcher sẽ bị thay đổi như nào ở trang https://docs.traefik.io/routing/routers/#rule. Một số thay đổi matcher để check request cơ bản gồm:
Traefik v2 "lột xác"Cũng chính vì việc tái cấu trúc như trên nên v2 có rất nhiều breaking change với v1. Bây giờ mình sẽ convert cấu hình Traefik v1 lên v2 xem khác bọt gì không nhé!
Chạy thử:
Thay vì sử dụng label Một số docker label rất hay dùng vẫn được giữ nguyên giống v1 như:
Ngoài ra, Traefik v2 cũng đã lột xác với một bộ áo mới rất hiện đại, bố cục rõ ràng và bắt mắt: Traefik Dashboard Traefik Routers Traefik Service Detail, load lablancer với 5 server HTTPS redirectionConfig để redirect từ HTTP sang HTTPS bị loại bỏ khỏi
ACME (Let’s Encrypt)ACME là config để sử dụng Let’s Encrypt để tự động tạo cert key cho https free. Phiên bản này sẽ thay config key
Traefik LogsCó một thay đổi nhỏ đối với cấu hình logs của Traefik. Lưu ý, có nhiều loại cấu hình logs như: Traefik log, access log, metric logs… và phần này mình đang đề cập tới là Traefik log nhé. Ở version 2, tất cả các config cho traefik log bây giờ đã vào trong
TracingTraefik vẫn implement tuân thủ theo các đặc tả của
Cùng với đó là một thay đổi nhỏ trong config. Key
MetricsMetrics trong version 2 sẽ support cho các services. Ngoài ra, Traefik vẫn support metric cho entry point giống version 1. Còn về config thì vẫn giống v1.
Version 2 vẫn hỗ trợ 4 system gồm:
Không còn config ở Root LevelNếu bạn để ý các config thay đổi ở trên thì sẽ nhận ra rằng các
|