3 poin oleh GN⁺ 2024-05-06 | 1 komentar | Bagikan ke WhatsApp

Alasan untuk Memperhatikan Traefik Bahkan Jika Tidak Menggunakan Kontainer

Hal-Hal yang Diketahui tentang Traefik

  • Traefik bertujuan membantu dunia mikroservis.
  • Banyak YouTuber berbagi bahwa mereka menggunakan infrastruktur kontainer seperti Docker atau Kubernetes.
  • Traefik berjalan sebagai kontainer, dan dengan mount Docker socket ke kontainer Traefik, Anda dapat secara otomatis mendeteksi kontainer lain yang ingin diekspos lewat Traefik.
  • Tindakan proxy pada kontainer tertentu dapat dikonfigurasi lewat label.
  • Traefik dapat secara otomatis meminta sertifikat TLS dari Let's Encrypt dan membuat layanan langsung dapat digunakan begitu terdeteksi adanya kontainer baru.

Mengapa Traefik Berguna Meski Tidak Menggunakan Kontainer

Miskonsepsi Umum: Tidak Membutuhkan Mesin Kontainer

  • Traefik tidak perlu berjalan di mesin kontainer, dan layanan pun tidak perlu berjalan di mesin kontainer.
  • Traefik ditulis dengan Golang dan dikompilasi sebagai satu binary eksekusi tunggal.
  • Saat berhadapan dengan software yang ditulis dengan Go dan dikompilasi menjadi satu binary, memang terasa sangat menyenangkan.
  • Ini membuat deployment mudah dan kontrol tetap penuh.

Miskonsepsi Umum: Mendukung File Konfigurasi

  • Jika tidak memakai kontainer, Anda tidak dapat menggunakan label kontainer, tetapi label cukup membingungkan dan sulit dibaca.
  • Traefik juga dapat dikonfigurasi lewat file konfigurasi.
  • Traefik membagi konfigurasi menjadi konfigurasi "statis" yang berisi provider sertifikat (misalnya: Let's Encrypt) dan entry point (port yang didengarkan Traefik), serta konfigurasi "dinamis" yang berisi router, service, dan middleware.
  • Traefik dapat mendengarkan event filesystem dan melakukan hot reload pada bagian dinamis.

Dokumentasi yang Baik

  • Semua konsep dasar Traefik dijelaskan dengan jelas.
  • Pada awal halaman terkait, terdapat contoh konfigurasi untuk metode konfigurasi instans yang dipilih.
  • Dokumennya mencakup sebagian besar kebutuhan.
  • Sidebar-nya membantu.

Traefik Terlihat Kuat dan Dirancang dengan Baik

  • Traefik memberi peringatan ketika konfigurasi terasa tidak logis, dan saya belum melihat masalah acak.
  • Traefik sepertinya tidak banyak mencatat log secara bawaan, namun cara kerja permintaan menjadi mudah dipahami sehingga Anda bisa langsung mulai tanpa rasa frustrasi.

Fitur yang Sangat Disukai

TLS Passthrough dan Protokol PROXY

  • Traefik mendukung TLS passthrough dan protokol PROXY dari HAProxy (masuk dan keluar).
  • TLS passthrough berarti dapat meneruskan traffic ke layanan web yang menyediakan sertifikat TLS-nya sendiri.
  • Anda dapat meminta sertifikat ke Let's Encrypt langsung dari layanan tanpa menghentikan TLS di proxy.
  • Protokol PROXY adalah cara mengirim informasi yang hilang saat user pertama kali mencapai proxy dengan lebih aman.
  • Protokol PROXY juga harus didukung oleh layanan target; untuk Apache2 dan Nginx (dan karena itu PHP), hal ini didukung, dan daftar layanan yang mendukung protokol ini terus bertambah.

Kekurangan Saat Menggunakan Traefik

Autentikasi

  • Di NGINX, Vouch Proxy digunakan untuk mengamankan layanan tertentu memakai Azure AD.
  • Traefik mendukung ForwardAuth yang mirip dengan autentikasi NGINX, tetapi Vouch Proxy belum berfungsi di Traefik.
  • Anda dapat melakukan rollout instance Keycloak, mengintegrasikannya dengan AAD, lalu menggunakannya untuk ForwardAuth, tetapi Anda harus menyiapkan dan menjaga instance Keycloak tersebut tetap aman dan terbarui terlebih dahulu.
  • traefik-forward-auth sering direkomendasikan, tetapi pembaruan terakhirnya terjadi pada Juni 2020, pengembangnya menghilang dari GitHub, dan dependensinya perlu diperbarui.
  • Pernah punya pengalaman buruk sebelumnya dengan oauth2-proxy.
  • HTTP/2/3, timeout, ukuran body, dan WebSocket perlu dikonfigurasi di setiap proxy di antara user dan layanan, sehingga proxying terasa sangat rawan kesalahan.
  • Karena Traefik ForwardAuth terlihat sederhana, maka perlu membuat alat sederhana sendiri untuk integrasi AAD atau melakukan fork pada traefik-forward-auth, mengaudit, lalu memperbarui dependensinya.

Pemblokiran User-Agent dan Alamat IP

  • Saya tidak ingin archive.org mengarsipkan layanan internal.
  • robots.txt dan header serupa tidak efektif untuk mencegah Archive.org, jadi cara satu-satunya untuk memblokir crawler adalah memblokir user-agent archive.org_bot atau memblokir range IP.
  • Di Traefik, pemblokiran user-agent atau IP hanya bisa dilakukan melalui plugin pihak ketiga.
  • Plugin pihak ketiga tidak saya suka karena harus selalu dipertimbangkan saat update dan bisa menimbulkan kerentanan keamanan.
  • Dengan middleware IPAllowList, Anda bisa memblokir IP dan mengizinkan semua IP lain kecuali yang diblokir.
  • Anda dapat menghitung range IP-nya; ini tidak terlalu buruk dibanding memblokir satu per satu, tetapi karena hanya bisa melihat sisa rentang, Anda tak bisa melihat dengan tepat subnet mana yang diblokir sehingga terasa kurang elegan.

Pendapat GN+

  • Traefik tampak sebagai solusi reverse proxy yang menarik, terlepas dari apakah Anda menggunakan kontainer atau tidak. Keunggulannya adalah ditulis dengan Go dan dikompilasi menjadi binary tunggal, sehingga deployment dan pengelolaannya lebih mudah.
  • Dokumentasinya juga baik, jadi akan sangat membantu memahami konsep Traefik sekaligus menemukan contoh konfigurasi.
  • Fitur lanjutan seperti dukungan TLS passthrough dan PROXY protocol juga terlihat cukup baik.
  • Namun di sisi autentikasi sepertinya belum ada solusi yang memuaskan; tampaknya diperlukan upaya membangun server autentikasi sendiri atau memperbaiki proyek yang sudah ada.
  • Fitur pemblokiran user-agent atau IP akan lebih baik jika tersedia bawaan, karena di luar plugin eksternal belum ada cara yang elegan.
  • Sebagai alternatif NGINX, Traefik tampaknya layak dipertimbangkan. Terutama jika Anda merasa konfigurasi NGINX itu kompleks, kesederhanaan Traefik akan terasa menarik.

1 komentar

 
GN⁺ 2024-05-06
Komentar Hacker News
  • Perbandingan kelebihan dan kekurangan Traefik
    • Keuntungan: migrasi dari NGINX ke Traefik karena integrasi otomatis Let's Encrypt
    • Kekurangan: dokumentasi dan logging kurang memadai, serta kadang gagal membuat ulang sertifikat hingga menyebabkan insiden produksi
    • Akhirnya kembali ke NGINX
  • Opini yang lebih memilih Caddy daripada Traefik
    • Caddyfile jauh lebih mudah dikelola dibanding konfigurasi YAML Traefik
    • Dukungan plugin yang beragam (contoh: plugin Coraza WAF pada Caddy)
  • Diskusi tentang kasus penggunaan di mana Traefik mungkin memiliki keunggulan dibanding NGINX
    • Untuk lingkungan host Docker dengan puluhan kontainer, NGINX Proxy Manager pun sudah memadai
    • Di K3s, karena Traefik sudah terkonfigurasi default, lebih menguntungkan untuk menyetel klaster K8s guna pengujian
  • Jika mempertimbangkan migrasi dari Caddy ke Traefik
    • Kelebihan Caddy: konfigurasi otomatis berbasis label Docker, manajemen sertifikat TLS, pengaturan DNS otomatis, dan sebagainya
    • Kekurangan Caddy: Caddy melakukan restart penuh saat workload di-restart sehingga menyebabkan gangguan layanan sementara, dan konfigurasi sertifikat wildcard cukup rumit
    • Pengalaman memakai Traefik di lingkungan K8s yang baik membuat saya mempertimbangkan penerapannya di proyek pribadi juga
  • Pengalaman beralih ke Caddy karena konfigurasi dinamis dan debugging Traefik sulit
    • Caddy lebih sederhana karena lapisannya lebih sedikit, sehingga konfigurasinya jauh lebih mudah
  • Menyadari manfaat konfigurasi statis setelah lama menggunakan Traefik
    • Kesulitan dan kerepotan dalam debugging konfigurasi dinamis lewat label Docker
    • Membuat file konfigurasi statis sederhana dengan kombinasi host/target/port melalui template engine
    • Otomatisasi pembuatan dan deployment file konfigurasi menggunakan Ansible
  • Perbandingan dengan HAProxy
    • Saya telah menggunakan HAProxy selama lebih dari 10 tahun, dan diperbarui untuk era cloud melalui fitur-fitur seperti konfigurasi dinamis lewat runtime API
  • Keunggulan dan kelemahan terbesar penggunaan Traefik
    • Kelebihan: konfigurasi disuntikkan melalui label Docker sehingga hampir tidak perlu mengubah konfigurasi Traefik itu sendiri
    • Kekurangan: sulit menentukan pelafalan yang tepat untuk Traefik (terkadang terdorong untuk mengucapkannya sebagai "trey-feek")