Cara menentukan Ingress di GKE, dengan container Netflix Spring Cloud
Saya memiliki arsitektur layanan mikro, dibangun di atas Spring Cloud Netflix:
- bisnis-pemilik-layanan menunjuk ke aplikasi Spring Boot yang berjalan pada port 8763. Penerusan port selesai, layanan-pemilik-bisnis: 80 dialihkan ke port 8763.
- layanan pelanggan menunjuk ke aplikasi Spring Boot yang berjalan pada port 8766. customer-service: 80 -> 8766
Arsitektur berjalan dengan benar jika saya memanggilnya melalui gateway Spring Cloud Zuul tetapi saya ingin menyiapkan Ingress.
Konfigurasi persis saya adalah sebagai berikut:
masuk
konfigurasi jalur masuk
Masalahnya adalah bahwa ingress memiliki semua layanan backend yang tidak sehat dan saya tidak tahu apa yang saya lakukan salah. Apa yang harus saya lakukan untuk memiliki Ingress yang berfungsi?
Edit: Per komentar, saya mencoba mendefinisikan readinessProbe, untuk pod layanan pelanggan, sebagai berikut:
Ini tidak berhasil, dan ketika saya mencoba untuk memeriksa ulang konfigurasi yang diperbarui, readinessProbe tidak terlihat. Saya pikir ini adalah bug, tetapi saya tidak yakin bagaimana cara memeriksa apakah probe diperbarui atau tidak.
Selain itu, aktuator / kesehatan GET berjalan melalui gateway Zuul:
Jawaban
Apa yang akhirnya menjadi solusi dalam kasus saya adalah konfigurasi pemeriksaan kesehatan, bukan readinessProbe. Saya memperbarui health check yang secara otomatis dibuat untuk layanan backend masuk agar mengarah ke / aktuator / kesehatan. Ini berhasil
Pengontrol ingress GKE melakukan health check dengan probe kesiapan yang ditentukan dalam penerapan pod. Tambahkan probe kesiapan seperti di bawah ini menggunakan aktuator pegas
spec:
containers:
- name: name
readinessProbe:
httpGet:
port: 8080
path: /actuator/health
initialDelaySeconds: 10