شب ۰۵: تنظیمات ایستا و پویا در Traefik¶
بخش ۰۵ از مجموعهٔ آموزش Traefik در ۳۰ شب؛ هر جلسه برای ۶۰ تا ۹۰ دقیقه مطالعه، تمرین عملی، بررسی نتیجه و تمرین رفع خرابی طراحی شده است. مثالها مطابق منبع با Traefik Proxy v3.7 نوشته شدهاند؛ برای محیط عملیاتی نسخهٔ اصلاحی آزمودهشده یا digest مشخصی را ثابت کنید. تمرینها را روی میزبان یا کلاستر آزمایشگاهی اجرا کنید.
فهرست کامل دورهٔ ترافیک در ۳۰ شب
هدفهای یادگیری¶
- دنبالکردن درخواست در مدل اشیای Traefik.
- شناخت تغییرهای نیازمند راهاندازی مجدد و ارائهدهندههای دارای بازخوانی زنده.
- خواندن نام اشیا با پسوند ارائهدهنده و دادههای تشخیصی API.
مدل ذهنی¶
client → entryPoint → router(rule + priority + TLS) → middleware chain
→ service(load balancer) → server/backend
تنظیمات نصب یا ایستا، entrypointها، ارائهدهندهها، API و داشبورد، لاگها، متریکها، ردیابی، حلکنندههای گواهی و تنظیمات چرخهٔ عمر را میسازد. تنظیمات مسیریابی یا پویا، مسیریابها، میانافزارها، سرویسها، گواهیها و گزینهها و مخزنهای TLS و انتقالهای سرور را تعریف میکند. هر شیء پویا به فضای نام یک ارائهدهنده تعلق دارد؛ مانند secure-headers@file، app@docker یا route@kubernetescrd.
تمرین عملی: تنظیم هر دو لایه¶
# static.yml — restart/redeploy to change
entryPoints:
web: {address: ":80"}
providers:
file:
directory: /etc/traefik/dynamic
watch: true
api: {dashboard: true}
ping: {}
log: {level: DEBUG}
# dynamic/routes.yml — atomically replace to hot-reload
http:
routers:
demo:
entryPoints: [web]
rule: "Host(`demo.example.test`)"
middlewares: [response-header]
service: demo
middlewares:
response-header:
headers:
customResponseHeaders: {X-Training-Night: "05"}
services:
demo:
loadBalancer:
servers:
- url: "http://whoami:80"
docker run --rm traefik:v3.7 version
# Smoke-start mounted startup/routing files in an isolated lab and inspect startup logs;
# Traefik has no universal offline validator for every provider graph.
curl -sv -H 'Host: demo.example.test' http://127.0.0.1/
# Access the API only through a protected route or local port-forward:
curl -s http://127.0.0.1:8080/api/rawdata
curl -s http://127.0.0.1:8080/api/http/routers
عمداً service: typo را قرار دهید، فایل پویا را بهصورت اتمی ذخیره کنید و لاگها، /api/rawdata و نتیجهٔ HTTP را مقایسه کنید. سپس service: demo را برگردانید. ارائهدهنده ممکن است هنگام نامعتبر بودن فایل جدید، آخرین تنظیمات معتبر را حفظ کند؛ بنابراین ثابتماندن ترافیک را نشانهٔ موفقیت بازخوانی ندانید.
روشهای پیشنهادی¶
- برای هر شیء یک منبع اصلی انتخاب کنید؛ از نام تکراری و اولویت پنهان بپرهیزید.
- تنظیمات ایستا را کوچک و بازبینیشده نگه دارید و نیاز آن به راهاندازی مجدد را لحاظ کنید.
- تنظیمات پویا را ابتدا در فایل موقت بنویسید و در همان فایلسیستم تغییر نام دهید.
- ارجاع میان ارائهدهندهها را صریحاً با
@providerمشخص کنید. - API و داشبورد را محافظت کنید؛
api.insecureفقط میانبری برای آزمایشگاه موقت است. - هم صفحهٔ کنترل، یعنی وجود شیء، و هم صفحهٔ داده، یعنی موفقیت درخواست، را اعتبارسنجی کنید.
نکتههای عیبیابی¶
- خطای 404 از Traefik: هیچ مسیریابی با entrypoint یا قاعده منطبق نشده، یا اولویت درخواست را جای دیگری فرستاده است.
- مسیریاب در API وجود دارد اما قرمز است: میانافزار، سرویس یا گزینهٔ TLS ارجاعشده موجود نیست.
- خطای 502 یا 504: مسیریابی منطبق شده؛ حالا پورت، شبکه، پروتکل و سلامت پشتصحنه را بررسی کنید.
- فایل ویرایششده بازخوانی نمیشود: اتصال پوشهٔ ارائهدهنده و رفتار نوشتن اتمی را بررسی کنید.
- خطای
name does not exist: پسوند درست ارائهدهنده، مثلاًauth@file، را اضافه کنید.
خودآزمایی¶
- entrypoint ایستا است یا پویا؟ ایستا.
- میانافزار ایستا است یا پویا؟ پویا.
auth@fileچه معنایی دارد؟ میانافزارauthکه ارائهدهندهٔ فایل تأمین میکند.- اثبات کنید: ارجاع سرویس را خراب کنید، خطا را در دادهٔ خام یا لاگ بیابید، اصلاح کنید و هدر سفارشی پاسخ را دریافت کنید.