Aplikasi VueJS tidak memuatkan fail js dalam kubernetes
P粉936509635
P粉936509635 2024-03-29 16:00:27
0
1
452

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:

  • Aplikasi VueJS (node.js-Server) dijalankan daripada imej Docker dalam kubernetes.
  • Perkhidmatan dan titik akhir dalam kubernetes di atas.
  • Masukan nginx ke dalam Kubernetes berfungsi sebagai lapisan luar seterusnya (lihat di bawah).
  • Haproxy firewall untuk menghalakan myapp.mydomain.com/ ke kemasukan pada k8s.

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.

P粉936509635
P粉936509635

membalas semua(1)
P粉403549616

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.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan