Saya mempunyai aplikasi VueJS yang berjalan dalam imej Docker dalam kubernetes. Setelah berbilang replika/pod wujud, pelanggan tidak dapat memuatkan aplikasi - banyak (tetapi tidak semua) panggilan untuk memuatkan fail mengembalikan 404.
Saya rasa ini kerana mereka dihantar ke Pod yang berbeza daripada Pod yang pada asalnya melayani permintaan itu.
Bagaimana untuk menyelesaikan masalah ini?
Ini adalah persediaan saya:
Berikut ialah contoh panggilan yang mengembalikan 404: Dapatkan https://myapp.mydomain.com/js/chunk-d18c0136.7a3f0664.js
Ini adalah spesifikasi perkhidmatan saya:
apiVersion: v1 kind: Service metadata: name: ${CI_PROJECT_NAME}-${CI_BUILD_REF_SLUG_SHORT} labels: app: ${CI_ENVIRONMENT_SLUG} spec: ports: - port: 80 targetPort: 8080 protocol: TCP name: ${CI_PROJECT_NAME}-${CI_BUILD_REF_SLUG} selector: app: ${CI_ENVIRONMENT_SLUG}
Ini adalah spesifikasi kemasukan nginx saya:
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: ${CI_PROJECT_NAME}-${CI_BUILD_REF_SLUG_SHORT} labels: app: ${CI_ENVIRONMENT_SLUG} annotations: kubernetes.io/ingress.class: "nginx" nginx.ingress.kubernetes.io/affinity: "cookie" nginx.ingress.kubernetes.io/proxy-connect-timeout: "30" nginx.ingress.kubernetes.io/proxy-send-timeout: "3600" nginx.ingress.kubernetes.io/proxy-read-timeout: "3600" spec: defaultBackend: service: name: ${CI_PROJECT_NAME}-${CI_BUILD_REF_SLUG_SHORT} port: number: 80 rules: - host: ${CI_APPLICATION_HOST} http: paths: - path: / pathType: Prefix backend: service: name: ${CI_PROJECT_NAME}-${CI_BUILD_REF_SLUG_SHORT} port: number: 80
Sebagai penyelesaian, kami mengkonfigurasi tembok api untuk berkomunikasi secara langsung dengan hanya satu Pod, atau hanya menjalankan satu replika.
Menetapkan "kuki" melekit sesi pada kemasukan nginx tidak berfungsi.
Maaf, ini adalah herring merah lengkap.
Akhirnya, masalahnya ialah kesilapan menaip dalam penghalaan proksi luaran - hanya dua daripada enam nod telah dikonfigurasikan dengan betul dan boleh diakses. Itulah sebabnya "kebanyakan" permintaan mengembalikan 404 - Node Tidak Ditemui.