3 Tips untuk Men-deploy APISIX di Kubernetes (Bagian 1)
March 14, 2024
Era komputasi cloud-native telah melihat adopsi luas Kubernetes sebagai platform orkestrasi kontainer, dengan Apache APISIX muncul sebagai gateway API dinamis cloud-native yang berkinerja tinggi. Menyebarkan Apache APISIX di Kubernetes telah menjadi semakin umum. Namun, meskipun proses penyebaran Apache APISIX di Kubernetes relatif mudah, masih ada beberapa masalah kunci yang perlu dipertimbangkan. Dalam seri artikel ini, kita akan membahas topik-topik berikut:
- Pertimbangan untuk metode penyebaran
- Pemeriksaan kesehatan, pencatatan, dan pemantauan
- Menangani plugin dan konfigurasi kustom
Dalam artikel ini, kita akan fokus pada poin pertama, yaitu pertimbangan untuk metode penyebaran saat menyebarkan Apache APISIX di Kubernetes.
Metode Penyebaran APISIX di Kubernetes
Untuk menyebarkan dan mengelola APISIX dengan lancar di Kubernetes sambil memastikan stabilitas dan keandalan sistem, beberapa faktor perlu dipertimbangkan dalam metode penyebaran.
1. Pemisahan Data Plane dan Control Plane
Saat menyebarkan di Kubernetes, sangat penting untuk memisahkan data plane APISIX (node yang menangani lalu lintas aktual) dari control plane-nya (node yang mengelola konfigurasi dan memproses panggilan API). Pemisahan ini menawarkan beberapa manfaat:
-
Skalabilitas Elastis: Data plane menangani pemrosesan permintaan aktual, sementara control plane mengelola distribusi konfigurasi dan kebijakan. Dengan pemisahan, sistem dapat secara independen menskalakan data dan control plane secara horizontal, menyesuaikan sistem secara dinamis berdasarkan tuntutan beban kerja aktual. Ini memfasilitasi skalabilitas elastis, meningkatkan skalabilitas keseluruhan sistem.
-
Isolasi Kesalahan: Memisahkan data dan control plane membantu mencapai isolasi kesalahan. Jika control plane gagal, data plane dapat terus memproses permintaan, memastikan ketersediaan layanan, dan sebaliknya. Pemisahan ini membantu mencegah kegagalan titik tunggal memengaruhi seluruh sistem, sehingga meningkatkan toleransi kesalahan dan stabilitas.
-
Peningkatan Keamanan: Memisahkan data dan control plane meningkatkan keamanan sistem. Control plane biasanya berisi informasi sensitif seperti kebijakan kontrol akses dan konfigurasi autentikasi, sementara data plane memproses permintaan aktual. Dengan menyebarkannya secara terpisah, keamanan control plane dapat lebih terlindungi, mengurangi risiko serangan potensial.

2. Solusi Penyebaran Persisten etcd
Apache APISIX menawarkan berbagai mode konfigurasi, seperti mode standalone dan mode pusat konfigurasi etcd. Jika Anda memilih kluster etcd sebagai pusat konfigurasi untuk Apache APISIX, ada beberapa pertimbangan yang perlu diperhatikan:
-
Penggunaan StatefulSet: Di Kubernetes, StatefulSet umumnya digunakan untuk menyebarkan etcd. StatefulSet menyediakan pengidentifikasi jaringan yang stabil dan penyebaran Pod yang teratur, yang sangat penting untuk sistem terdistribusi. Setiap node etcd dapat memiliki pengidentifikasi unik dan mempertahankan penyimpanan persisten untuk memastikan keamanan data.
-
Batasan sumber daya yang tepat: Tetapkan batasan sumber daya yang sesuai untuk Pod etcd untuk memastikan mereka berjalan dengan lancar di kluster. Sesuaikan sesuai dengan ukuran kluster dan beban kerja untuk menghindari kekurangan atau pemborosan sumber daya.
-
Mengkonfigurasi penyimpanan persisten: Untuk memastikan persistensi dan keandalan data, disarankan untuk menyimpan data etcd dalam penyimpanan persisten. Persistent Volumes (PV) dan Persistent Volume Claims (PVC) Kubernetes dapat digunakan untuk tujuan ini.
-
Mengaktifkan enkripsi TLS: Aktifkan enkripsi TLS di kluster etcd untuk melindungi transmisi data. Gunakan sertifikat dan kunci privat untuk mengautentikasi kluster etcd dan mengenkripsi komunikasi antar node. Ini dapat dicapai dengan membuat dan menggunakan sertifikat yang ditandatangani sendiri atau sertifikat yang dikeluarkan oleh otoritas sertifikat (CA) yang tepercaya.
-
Mengaktifkan autentikasi dan otorisasi: etcd mendukung autentikasi berdasarkan nama pengguna dan kata sandi, serta otorisasi berbasis peran. Disarankan untuk mengaktifkan fitur ini di lingkungan produksi untuk memastikan hanya pengguna yang berwenang yang dapat mengakses dan memodifikasi data di etcd. Saat menghubungkan control plane dan data plane Apache APISIX ke etcd, disarankan untuk menetapkan peran yang berbeda, seperti memberikan kemampuan baca-tulis ke control plane dan kemampuan hanya baca ke data plane.
-
Backup rutin: Lakukan backup rutin data etcd untuk mencegah kehilangan atau kerusakan data. Gunakan alat backup yang disediakan oleh etcd dan simpan backup di lokasi yang aman untuk pemulihan saat diperlukan. Metode backup termasuk metode hot dan cold backup. Untuk keamanan data, disarankan untuk menggunakan metode etcd learner untuk hot backup dan menggabungkannya dengan metode cold backup snapshot untuk memaksimalkan kemampuan pemulihan data.
-
Pemantauan dan peringatan: Sebarkan alat pemantauan untuk memantau status kesehatan kluster etcd secara real-time. Prometheus adalah alat pemantauan yang umum digunakan yang dapat diintegrasikan dengan etcd. Tetapkan aturan peringatan untuk mengambil tindakan tepat waktu ketika masalah terjadi.
-
Menangani perubahan node dengan benar: Penambahan, penghapusan, atau penggantian node mungkin terjadi di kluster etcd. Pastikan penanganan perubahan node dilakukan dengan benar untuk menghindari ketidakkonsistenan data dan gangguan layanan.
3. Menggunakan APISIX Ingress Controller Alih-alih K8s Ingress Controller
APISIX Ingress Controller adalah alat yang berfokus pada manajemen API, menawarkan kinerja tinggi dan opsi konfigurasi yang fleksibel. Jika Anda memerlukan aturan routing yang lebih kompleks, pembatasan laju, pemutusan sirkuit, dan fitur lanjutan lainnya, APISIX Ingress Controller mungkin menjadi pilihan yang lebih baik. Ini menyediakan sistem plugin yang kaya, memungkinkan integrasi plugin melalui APISIX Ingress CRD menggunakan konfigurasi deklaratif untuk menangani autentikasi, otorisasi, pemantauan, pencatatan, dan fungsi lainnya. Ini memperkaya kemampuan APISIX Ingress Controller dan menyederhanakan konfigurasi.

Jika Anda memerlukan antarmuka konfigurasi yang komprehensif dan integrasi mendalam dengan Kubernetes, pertimbangkan Platform Manajemen Siklus Hidup API Lengkap API7 Enterprise berbasis Apache APISIX. API7 Enterprise menyediakan solusi komprehensif untuk otomatisasi lanjutan, pemantauan, dan pemecahan masalah, memberikan dukungan yang lebih andal untuk bisnis.
Kesimpulan
Saat menyebarkan APISIX di Kubernetes, perhatian perlu diberikan pada beberapa aspek. Pertama, fokus pada pemisahan data plane dan control plane untuk mencapai skalabilitas elastis, isolasi kesalahan, dan peningkatan keamanan. Kedua, adopsi skema penyebaran persisten berbasis etcd untuk memastikan persistensi dan keandalan konfigurasi. Selain itu, pertimbangkan untuk menggunakan APISIX Ingress Controller yang lebih sesuai alih-alih K8s Ingress Controller untuk mendapatkan fungsionalitas yang lebih kaya dan konfigurasi yang lebih sederhana. Hanya dengan mengikuti praktik terbaik ini, stabilitas dan keandalan sistem dapat dipastikan.