เว็บเซิร์ฟเวอร์
Traefik: Reverse Proxy ที่อ่านโครงสร้างพื้นฐานของคุณ
Traefik เป็นพร็อกซีย้อนกลับแบบเนทีฟบนคลาวด์ที่สร้างขึ้นสำหรับสภาพแวดล้อมที่แบ็กเอนด์เปลี่ยนแปลงตลอดเวลา: ป้ายกำกับ Docker, Kubernetes CRD และการค้นพบบริการจะเติมการกำหนดค่าการกำหนดเส้นทางโดยอัตโนมัติ และการผสานรวม Let's Encrypt ครอบคลุม TLS ในแบบที่ Caddy ทำ ข้อดีข้อเสียคือตรงไปตรงมา: การค้นพบแบบไดนามิกนั้นทรงพลัง แต่คำศัพท์การกำหนดเส้นทางนั้นหนักกว่าไวยากรณ์ของ Caddyfile และสมควรได้รับโครงสร้างที่จงใจ
ประเด็นสำคัญ
- การค้นพบอัตโนมัติเป็นเรื่องราว: คอนเทนเนอร์เปิดเผยเส้นทางผ่านป้ายกำกับ บริการ Kubernetes ผ่าน Ingress/HTTPRoute CRD และ Traefik อัปเดตเส้นทางแบบสด ซึ่งจะลบลูป 'อัปเดตการกำหนดค่า nginx โหลดซ้ำ และอธิษฐาน' ในสภาพแวดล้อมที่แบ็กเอนด์ปรับขนาดขึ้นและลงทุกชั่วโมง
- ระบบอัตโนมัติของ TLS นั้นอยู่ในระดับเฟิร์สคลาส: ACME ผ่าน Let's Encrypt พร้อมการรองรับ wildcard ผ่านการท้าทาย DNS, การจัดเก็บใบรับรองที่คงอยู่ระหว่างการรีสตาร์ท และตัวเลือก TLS ต่อเราเตอร์ เมื่อรวมกับการกำหนดเส้นทางแบบไดนามิก วงจรชีวิตของใบรับรองในคอนเทนเนอร์เอสเตทจะกลายเป็นเหตุการณ์ที่ไม่ใช่เหตุการณ์
- มิดเดิลแวร์มีนโยบายการรับส่งข้อมูล: การจำกัดอัตรา, เซอร์กิตเบรกเกอร์, ลอจิกการลองใหม่, การจัดการส่วนหัว, การรับรองความถูกต้องขั้นพื้นฐานหรือการผสานรวม OIDC, การบีบอัด และแถบคำนำหน้า (พื้นฐานของชุดมิดเดิลแวร์ Edge สมัยใหม่) ซึ่งเป็นจุดที่คำศัพท์ของ Traefik หนักกว่าสิ่งที่เทียบเท่ากับ Caddyfile
- โหมดการทำงานทั้งสองโหมดมีความสำคัญต่อความเหมาะสม: จุดเข้ากำหนดค่าคงที่ (พอร์ต ผู้ให้บริการ ค่าเริ่มต้นของ TLS) บวกกับการกำหนดค่าแบบไดนามิกต่อเราเตอร์ ไฟล์ หรือ CRD; เปลี่ยนการโหลดซ้ำแบบสด แต่พื้นผิวการกำหนดค่าจำเป็นต้องมีโครงสร้าง (แบบแผนของป้ายกำกับต่อสแต็ก) มิฉะนั้นการแผ่ขยายของป้ายกำกับจะไม่สามารถบำรุงรักษาได้
- วินัยในการปฏิบัติงานสะท้อนทุกพร็อกซีย้อนกลับ: บันทึกการเข้าถึงในรูปแบบ JSON ที่มีโครงสร้าง (เหมาะสำหรับ SIEM) การตรวจสอบอายุใบรับรองและสถานภาพอัปสตรีม และการติดตาม (ช่วง OpenTelemetry) ที่พร้อมใช้งานสำหรับการดีบักเชิงลึก แดชบอร์ดควรได้รับการตรวจสอบสิทธิ์/ปิดตามค่าเริ่มต้นสำหรับผลิตภัณฑ์
- คำตัดสินที่ตรงไปตรงมาระหว่างผู้รับมอบฉันทะในหมวดหมู่ของเรา: Traefik ชนะการเป็นเจ้าของคอนเทนเนอร์แบบเนทีฟ (นักเทียบท่าเขียนสแต็กพร้อมป้ายกำกับ ทางเลือกทางเข้า K8) nginx ชนะการปรับแต่งประสิทธิภาพแบบดั้งเดิมและการกำหนดค่าแบบกำหนดเองแบบลึก แคดดี้ชนะรางวัลระบบอัตโนมัติแบบสแตติกพลัสแบบธรรมดา ทั้งสี่อยู่ร่วมกันในโครงสร้างพื้นฐานจริงเพราะแต่ละแห่งเน้นรูปแบบการทำงานที่แตกต่างกัน
บันทึกจากหน้างาน
คอนเทนเนอร์สแต็กของลูกค้าเพิ่มขึ้นจาก 2 เป็น 30 บริการในหนึ่งปี และไฟล์ nginx ที่รวมอยู่ด้วยก็ไม่สามารถเติบโตได้ ป้ายกำกับ Traefik บนไฟล์เขียนแทนที่การกำหนดค่าพร็อกซีทั้งหมด ขณะนี้การกำหนดเส้นทางอยู่ถัดจากบริการที่กำหนดเส้นทางไป และจะไม่มีอะไรถูกลืมเมื่อถึงเวลาปรับใช้
คำถามที่พบบ่อย
Traefik vs nginx สำหรับสภาพแวดล้อมคอนเทนเนอร์: อันไหน?
สำหรับพื้นที่คอนเทนเนอร์แบบไดนามิกที่มีป้ายกำกับ/การกำหนดเส้นทางที่ขับเคลื่อนด้วย CRD การค้นพบอัตโนมัติของ Traefik จะลบคลาสความล้มเหลวในการซิงค์การกำหนดค่าทั้งหมดออก สำหรับโครงสร้างพื้นฐานแบบคงที่พร้อมการปรับแต่งประสิทธิภาพเชิงลึก nginx ยังคงเป็นตัวเลือกที่ดีกว่า
Traefik สำหรับ Kubernetes เท่านั้นใช่ไหม
ไม่: สแต็คการเขียน Docker ธรรมดาเป็นหนึ่งในหน้าหลักที่ง่ายที่สุด (ป้ายกำกับกำหนดเราเตอร์) การรองรับ Kubernetes นั้นสมบูรณ์แล้ว (Ingress + API เกตเวย์) แต่เครื่องมือนี้ไม่ขึ้นอยู่กับผู้จัดทำเพียงคนเดียว
แล้ว Let's Encrypt ขีดจำกัดอัตราและไวด์การ์ดล่ะ?
Traefik จัดการกับความท้าทายของ ACME รวมถึง DNS-01 สำหรับไวด์การ์ด (จำเป็นต้องตั้งค่าโทเค็นเฉพาะผู้ให้บริการ) มีจุดสิ้นสุด ACME ชั่วคราวสำหรับการทดสอบโดยไม่ต้องใช้ขีดจำกัดอัตราการผลิต
การกำหนดค่า Traefik ผิดพลาดที่พบบ่อยที่สุดคืออะไร
ลำดับมิดเดิลแวร์และการกระจัดกระจายเลเบล: มิดเดิลแวร์จะใช้ตามลำดับที่แสดง และทีมที่ข้ามการจัดทำเอกสารข้อตกลงฉลากจบลงด้วยการดีบัก 'เหตุใดจึงใช้ขีดจำกัดอัตราของฉันสองครั้ง'; ถือว่าเค้าโครงฉลากเป็นแบบ config-as-code ด้วยแบบแผนที่เป็นลายลักษณ์อักษร
Kinetikatech ช่วยเรื่อง เว็บเซิร์ฟเวอร์ ได้อย่างไร
พูดตรง ๆ ว่าทีมส่วนใหญ่มาหาเราหลังลองทำเองมาแล้ว: การตั้งค่า การปรับแต่ง และความปลอดภัยของเว็บเซิร์ฟเวอร์ในสภาพแวดล้อมโปรดักชันและงานพัฒนา บริการ การเพิ่มความเร็วเว็บไซต์และการจัดการเซิร์ฟเวอร์ ของเรามีอยู่เพื่อไม่ให้คุณต้องเรียนรู้ เว็บเซิร์ฟเวอร์ แบบเจ็บปวด เราดูแลทั้งการตั้งค่า การเฝ้าดู และเรื่องกะทันหันตอนตีสาม