3 Tips for Deploying APISIX in Kubernetes (Part 2)

Wei Jin

Wei Jin

May 7, 2024

Technology

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:

  1. Pertimbangan untuk metode penyebaran
  2. Pemeriksaan kesehatan, pencatatan, dan pemantauan
  3. Menangani plugin dan konfigurasi kustom

Dalam artikel sebelumnya, kita telah membahas poin pertama. Artikel ini akan fokus pada poin kedua: pertimbangan mengenai pemeriksaan kesehatan, pencatatan, dan pemantauan.

Pemeriksaan Kesehatan

Saat menyebarkan APISIX di Kubernetes, pemeriksaan kesehatan sangat penting, karena ini merupakan persyaratan dasar untuk aplikasi di Kubernetes. Di Kubernetes, dengan mengkonfigurasi Liveness dan Readiness Probes, status kesehatan dan ketersediaan instance APISIX dapat dipastikan.

  • Liveness Probe digunakan untuk menentukan apakah aplikasi sedang berjalan. Jika aplikasi dianggap tidak sehat, Kubernetes akan me-restart instance tersebut.

  • Readiness Probe digunakan untuk memastikan apakah aplikasi siap menerima lalu lintas. Jika aplikasi belum siap, maka tidak akan menerima lalu lintas apa pun. Ini membantu mencegah lalu lintas dikirim ke instance yang belum sepenuhnya dimulai atau rusak.

Dengan mengkonfigurasi Liveness dan Readiness Probes dengan benar, Kubernetes dapat secara otomatis mengelola instance Pod yang tidak sehat. Ini berarti ketika instance mengalami masalah, Kubernetes akan secara otomatis me-restart mereka atau menghentikan pengiriman lalu lintas ke instance yang tidak sehat, sehingga meningkatkan ketersediaan dan stabilitas sistem.

Contoh Konfigurasi YAML:

apiVersion: v1 kind: Deployment metadata: name: my-apisix-pod spec: containers: - name: my-apisix-container image: my-apisix-image livenessProbe: httpGet: path: /healthz port: 9080 initialDelaySeconds: 15 periodSeconds: 10 readinessProbe: httpGet: path: /readyz port: 9080 initialDelaySeconds: 10 periodSeconds: 5

Contoh ini mendefinisikan Liveness dan Readiness Probes untuk kontainer. Liveness Probe mengirim permintaan HTTP GET ke path /healthz setiap 10 detik untuk memeriksa status kesehatan kontainer. Jika kontainer tidak merespons atau mengembalikan kode status selain 200, Kubernetes menganggap kontainer tidak sehat dan mencoba me-restart-nya. Readiness Probe serupa tetapi digunakan untuk memeriksa apakah kontainer siap menerima lalu lintas.

Pemantauan

Ada berbagai metode untuk memantau APISIX saat runtime, dengan mengintegrasikan Prometheus menjadi pendekatan yang direkomendasikan. Faktanya, Prometheus tetap menjadi komponen pemantauan yang paling banyak digunakan hingga saat ini.

Mengintegrasikan Prometheus membantu dalam mengumpulkan dan memantau metrik untuk APISIX dan layanan yang diproksinya. Metrik ini dapat mencakup tingkat permintaan, tingkat kesalahan, latensi, dan indikator kinerja kritis lainnya. Dengan memantau metrik ini, masalah dapat diidentifikasi dengan cepat dan penyesuaian kinerja serta pemecahan masalah dapat dilakukan. Pastikan untuk mengkonfigurasi metrik dan aturan peringatan dengan benar untuk mengambil tindakan segera ketika masalah muncul.

Mengaktifkan plugin Prometheus di APISIX cukup mudah. Pertama, atur export_uri di config.yaml.

plugin_attr: prometheus: export_uri: /apisix/metrics

Kemudian aktifkan plugin pada API atau layanan yang perlu dianalisis secara statistik oleh Prometheus.

curl http://127.0.0.1:9180/apisix/admin/routes/1 -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d ' { "uri": "/hello", "plugins": { "prometheus":{} }, "upstream": { ... } }'

Akhirnya, server Prometheus dapat secara berkala menarik konfigurasi dari export_uri.

scrape_configs: - job_name: "apisix" scrape_interval: 15s metrics_path: "/apisix/prometheus/metrics" static_configs: - targets: ["127.0.0.1:9091"]

Dalam penggunaan praktis, Prometheus juga memerlukan penyebaran dengan cara yang sangat tersedia, seperti menggunakan solusi open-source seperti Thanos. Integrasi dengan APISIX dapat dicapai menggunakan mode sidecar Thanos.

Pencatatan

Di APISIX, log penting secara umum dikategorikan menjadi dua jenis: log lalu lintas dan log audit.

  • Log lalu lintas merujuk pada pencatatan setiap permintaan ketika APISIX bertindak sebagai proxy terbalik. Log ini, yang berisi lalu lintas permintaan dan informasi yang dikembalikan, bersama dengan log operasi internal APISIX, sangat penting untuk pelacakan dan pemecahan masalah. Biasanya, tingkat log dan format yang sesuai ditetapkan untuk pencatatan. Dalam skenario praktis, pertimbangkan untuk mengeluarkan log ke sistem pencatatan terpusat, seperti ELK (Elasticsearch, Logstash, dan Kibana), Fluentd, atau Splunk. APISIX menyediakan plugin log untuk dipilih.

  • Log audit terutama merujuk pada log yang dihasilkan saat mengelola konfigurasi APISIX. Log ini tidak hanya membantu dalam memenuhi persyaratan kepatuhan tetapi juga berfungsi untuk analisis keamanan. Dengan menganalisis log audit, risiko keamanan potensial dan konfigurasi atau perilaku manajemen yang tidak tepat dapat diidentifikasi, dan tindakan yang sesuai dapat diambil untuk meningkatkan keamanan sistem.

APISIX open-source menyediakan Admin API untuk distribusi konfigurasi yang mudah tetapi tidak memiliki konfigurasi terkait log audit. Biasanya, pengguna perlu mencatat log ini sendiri atau menggunakan edisi enterprise APISIX.

Tidak banyak perbedaan dalam konfigurasi pencatatan antara Kubernetes dan lingkungan lainnya. Perlu dicatat bahwa saat mengkonfigurasi upstream dan informasi terkait di APISIX, penemuan layanan Kubernetes umumnya digunakan. Disarankan untuk mencatat nama layanan dalam log untuk memudahkan pemecahan masalah dalam masalah selanjutnya.

Kesimpulan

Dengan mengkonfigurasi mekanisme pemeriksaan kesehatan untuk mendeteksi instance APISIX yang tidak sehat, Kubernetes dapat segera mengambil tindakan untuk memigrasikan lalu lintas dan memfasilitasi pemulihan, sehingga memastikan kelangsungan dan stabilitas layanan API. APISIX juga mendukung integrasi dengan alat pemantauan canggih seperti Prometheus, memungkinkan pemantauan kinerja dan stabilitas API, termasuk metrik kunci seperti tingkat permintaan, tingkat kesalahan, dan latensi. Kemampuan pemantauan ini memungkinkan organisasi untuk dengan cepat mengidentifikasi masalah potensial, dan melakukan penyesuaian dan optimasi kinerja tepat waktu, memastikan operasi yang efisien dari layanan API.

Tags: