Angular SSR 和静态服务的 Kubernetes 入口配置问题

问题描述 投票:0回答:1

使用 Kubernetes 部署时,我的 Angular 应用程序遇到问题。当我将 SSR 或静态服务端口转发到本地主机时,该应用程序可以完美运行。但是,通过 DNS (demo.example.com) 访问应用程序会导致类型错误:无法在控制台中读取未定义的属性(读取“调用”),这在本地设置中不会发生。

这是我的 Ingress 配置:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: c-frontend-dev
  namespace: development
  annotations:
    nginx.ingress.kubernetes.io/ssl-redirect: "true"
    nginx.ingress.kubernetes.io/rewrite-target: /$1
spec:
  ingressClassName: nginx
  rules:
    - host: "demo.example.com"
      http:
        paths:
          # Specific path for SSR
          - pathType: Prefix
            path: "/pages/subscriptions"
            backend:
              service:
                name: c-ssr-dev
                port:
                  number: 4000
          # Default path for static content
          - pathType: Prefix
            path: "/"
            backend:
              service:
                name: c-static-dev
                port:
                  number: 8080

我怀疑 Ingress 设置可能存在问题,可能与重写目标或路径路由方式有关。具有为具有 SSR 和静态托管的 Angular 应用程序配置 Ingress 经验的人能否权衡此设置中是否缺少某些内容或配置错误?

仅供参考:c-static-dev 映像创建如下所示:

FROM node:18-alpine3.19 as build
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
RUN npm run build --prod-nocdn

# Serve using a lightweight static server
FROM node:18-alpine3.19
WORKDIR /app
COPY --from=build /app/dist/c/browser .
RUN npm install -g serve
CMD ["serve", "-s", ".", "-l", "8080"]
EXPOSE 8080

任何见解或建议将不胜感激!

angular kubernetes server-side-rendering nginx-ingress
1个回答
0
投票

事实证明问题是来自 cloudflare 的缓存配置,因为我在我的案例中使用了它。

© www.soinside.com 2019 - 2024. All rights reserved.