Cara menentukan Ingress di GKE, dengan container Netflix Spring Cloud

Aug 16 2020

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

1 TudorGrigoriu Aug 19 2020 at 17:49

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

ArghyaSadhu Aug 16 2020 at 00:24

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