【发布时间】:2021-06-23 08:30:14
【问题描述】:
我有 Angular 应用程序,目前正在 kubernetes 集群的 pod 中运行,我可以通过 Pod ip 后跟端口访问应用程序,但无法通过我的入口 url 访问。
Dockerfile
FROM node:12.10.0 as build-stage
WORKDIR /app
COPY package*.json /app/
RUN npm install
COPY ./ /app/
ARG configuration=production
RUN npm run build -- --output-path=./dist/out --configuration $configuration
# Stage 1, based on Nginx, to have only the compiled app, ready for production with Nginx
FROM nginx:1.15
#Copy ci-dashboard-dist
COPY --from=build-stage /app/dist/out/ /usr/share/nginx/html
#Copy default nginx configuration
COPY ./nginx-custom.conf /etc/nginx/conf.d/default.conf
入口文件
apiVersion: "networking.k8s.io/v1beta1"
kind: "Ingress"
metadata:
name: "angular-app"
namespace: "development"
annotations:
nginx.ingress.kubernetes.io/rewrite-target: "/$1"
spec:
rules:
-
host: "localhost"
http:
paths:
-
backend:
serviceName: "angular-ser"
servicePort: 80
path: "/angular-app/ser/(.*)"
当我尝试通过 Pod ip 访问应用程序时,它工作正常,但是当我尝试通过入口路径访问它时,它正在加载 nginx 主页。
我尝试了所有可能的组合,但是当我尝试使用 Ingress 路径 url 访问时页面似乎是空白的。
我也在页面上进行了检查,并在控制台部分发现了这些错误。
加载资源失败:服务器响应状态为 503(服务暂时不可用) 运行时-es2015.362517ed12c07fa8e977.js:1 加载资源失败:服务器响应状态为 503(服务暂时不可用) polyfills-es2015.9147b0c83e6774bdcaea.js:1 加载资源失败:服务器响应状态为 503(服务暂时不可用) 主要-es2015.2f24ff2a3689aa55a7aa.js:1 加载资源失败:服务器响应状态为 503(服务暂时不可用) scripts.28bddca5d494a37163be.js:1
【问题讨论】:
-
1.您的 Angular 应用程序部署是否部署在开发命名空间中?由于 Ingress 规则必须驻留在它们配置的应用程序所在的命名空间中。 2. 您是否还可以添加
curl -v host/path命令的输出(对于两者,您的 pod ip 和入口路径),这样我们就可以看到这有什么不同? 3. 你可以尝试删除rewrite-target并尝试使用你的应用程序默认路径吗?那么它可以正常工作吗? -
1.是的,部署在开发命名空间中的 Angular 应用程序。 2.不知道怎么做,请您分享更多信息。 3. 是的,我确实尝试过删除 rewrite-target,但它只给出一个空页面,但是当我尝试使用 pod ip 访问时,它工作正常。
标签: angular docker kubernetes kubernetes-ingress