پرش به محتویات

شب ۲۸: مدیریت ایمن تغییر و GitOps

بخش ۲۸ از مجموعهٔ آموزش Traefik در ۳۰ شب؛ هر جلسه برای ۶۰ تا ۹۰ دقیقه مطالعه، تمرین عملی، بررسی نتیجه و تمرین رفع خرابی طراحی شده است. مثال‌ها مطابق منبع با Traefik Proxy v3.7 نوشته شده‌اند؛ برای محیط عملیاتی نسخهٔ اصلاحی آزموده‌شده یا digest مشخصی را ثابت کنید. تمرین‌ها را روی میزبان یا کلاستر آزمایشگاهی اجرا کنید.

فهرست کامل دورهٔ ترافیک در ۳۰ شب

هدف‌های یادگیری

  • تبدیل ویرایش تنظیمات به انتشار تکرارپذیر و بازبینی‌شده.
  • اعتبارسنجی نحو، وضعیت مطلوب تولیدشده، پذیرش صفحهٔ کنترل و رفتار صفحهٔ داده.
  • تعیین آستانه‌های canary، توقف و بازگشت پیش از استقرار.

تمرین عملی: خط لولهٔ تغییر

# change.yml
id: EDGE-2026-001
scope: add whoami route
risk: medium
static_change: false
dynamic_change: true
preconditions:
  - backup completed
  - config lint and render pass
  - staging synthetic pass
success:
  window: 10m
  error_rate_max: 0.01
  p95_latency_ms_max: 250
rollback:
  trigger: any success threshold exceeded
  action: revert desired-state commit and reconcile
owner: platform-oncall

دستورها به تفکیک پلتفرم:

# Common text/YAML hygiene (install tools in your admin environment):
yamllint .
rg -n '(latest|api\.insecure=true|insecureSkipVerify|BEGIN .*PRIVATE KEY)' .

# Compose
docker compose config --quiet
docker compose config > release/compose-rendered.yaml

# Swarm
docker stack config -c swarm.yml > release/swarm-rendered.yaml

# Nomad
nomad fmt -check traefik.nomad
nomad job validate traefik.nomad
nomad job plan traefik.nomad

# Kubernetes
helm lint traefik/ -f values.yaml  # when validating a local chart
helm template traefik traefik/traefik --version CHART_VERSION -f values.yaml > release/k8s.yaml
kubectl apply --dry-run=server -f release/k8s.yaml

Traefik اعتبارسنج آفلاین جامعی برای گراف کامل تنظیمات تمام ارائه‌دهنده‌ها ندارد. ایمیج و تنظیمات نامزد را در محیط ایزوله به‌صورت آزمایشی راه‌اندازی کنید، لاگ و اشیای API را ببینید و سپس درخواست‌های عملکردی بفرستید. پذیرش ارائه‌دهنده لازم است، اما کافی نیست.

ترتیب پیشبرد انتشار:

  1. بدون secret، lint و اسکن انجام دهید.
  2. با نسخه‌های ثابت خروجی تولید کنید و تفاوت‌ها را ببینید.
  3. dry-run یا plan سمت سرور یا صفحهٔ کنترل اجرا کنید.
  4. روی مقصد موقت یا staging اعمال کنید.
  5. عدم تطابق، احراز هویت، تغییرمسیر، TLS، خرابی پشت‌صحنه و مسیرهای موفق را بیازمایید.
  6. یک نمونه، مسیر یا سهم ترافیک را canary کنید.
  7. در بازهٔ اعلام‌شده مشاهده کنید؛ انتشار را تأیید کنید یا خودکار برگردید.
  8. شواهد را ثبت و دسترسی موقت را حذف کنید.

نکته‌های عیب‌یابی

  • تفاوت خروجی بسیار بزرگ است: تغییر chart، پیش‌فرض یا نسخه با تغییر موردنظر مخلوط شده؛ آن‌ها را جدا کنید.
  • dry-run موفق است اما ترافیک نه: شبکهٔ زمان اجرا، secret، گواهی، DNS یا متعادل‌کنندهٔ بار یا رفتار پشت‌صحنه پوشش داده نشده است.
  • Git revert اثری ندارد: عامل تطبیق وضعیت وجود ندارد یا متوقف است، یا تغییر دستوری خارج از Git باقی مانده است.
  • secret در خروجی تولیدشده ظاهر می‌شود: متوقف شوید، آن را بچرخانید، با مجوز لازم تاریخچه و مخزن خروجی‌ها را پاک‌سازی و خط لوله را اصلاح کنید.

خودآزمایی

  1. کدام تغییرها Traefik را restart می‌کنند؟ تنظیمات نصب و راه‌اندازی؛ تغییرات ارائه‌دهندهٔ مسیریابی معمولاً زنده بازخوانی می‌شوند.
  2. چرا خروجی تولیدشده را بایگانی می‌کنیم؟ پیش‌فرض‌ها و وضعیت دقیق قابل‌استقرار را ثبت می‌کند.
  3. محرک بازگشت چه باید داشته باشد؟ آستانه‌های عینی اثر روی کاربر، خطا، تأخیر و آمادگی.
  4. اثبات کنید: تغییر پویا بسازید، خط لوله را بگذرانید، عمداً معیار canary را ناموفق کنید و بازگشت را با وضعیت اجرا تطبیق دهید.