在 Kubernetes Ingress 后面服务静态 React 应用程序
Serving a static react application behind a Kubernetes Ingress
我目前正在尝试在 kubernetes 上将 React SPA 设置为 deployment/service。就像我目前拥有 运行 的后端服务一样,我希望能够在 Ingress 后面打它。
因为 SPA 只是一堆静态文件,所以我通过 nginx 公开这些文件。在部署中运行的容器安装了 nginx 来为静态资产提供服务(docker 文件中的 nginx -g daemon off
)。如果我使用 LoadBalancer
公开部署,这完全可以正常工作,但如果我使用 Ingress,我将得不到任何响应。在 ingress 后面提供静态资产时,有什么特别的事情需要考虑吗?或者任何已知的 references/resources 这样做?
这是我的 ingress.yml:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: web-ingress
annotations:
kubernetes.io/ingress.global-static-ip-name: web-static-ip
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- host: api.my-domain.com
http:
paths:
- backend:
serviceName: web-backend-service
servicePort: 80
- host: app.my-domain.com
http:
paths:
- backend:
serviceName: web-frontend-service
servicePort: 80
您需要在集群上部署入口控制器,入口资源才能真正生效。这是 Nginx 入口 installation guide controller.An 服务静态内容的示例入口如下所示。
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: web-ingress
annotations:
kubernetes.io/ingress.class: "nginx"
nginx.ingress.kubernetes.io/add-base-url: "true"
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- host: api.my-domain.com
http:
paths:
- backend:
serviceName: web-backend-service
servicePort: 80
- host: app.my-domain.com
http:
paths:
- backend:
serviceName: web-frontend-service
servicePort: 80
这里是 guide 关于如何使用 Nginx ingress 在 Minikube 上服务 angular 8 应用程序。
我目前正在尝试在 kubernetes 上将 React SPA 设置为 deployment/service。就像我目前拥有 运行 的后端服务一样,我希望能够在 Ingress 后面打它。
因为 SPA 只是一堆静态文件,所以我通过 nginx 公开这些文件。在部署中运行的容器安装了 nginx 来为静态资产提供服务(docker 文件中的 nginx -g daemon off
)。如果我使用 LoadBalancer
公开部署,这完全可以正常工作,但如果我使用 Ingress,我将得不到任何响应。在 ingress 后面提供静态资产时,有什么特别的事情需要考虑吗?或者任何已知的 references/resources 这样做?
这是我的 ingress.yml:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: web-ingress
annotations:
kubernetes.io/ingress.global-static-ip-name: web-static-ip
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- host: api.my-domain.com
http:
paths:
- backend:
serviceName: web-backend-service
servicePort: 80
- host: app.my-domain.com
http:
paths:
- backend:
serviceName: web-frontend-service
servicePort: 80
您需要在集群上部署入口控制器,入口资源才能真正生效。这是 Nginx 入口 installation guide controller.An 服务静态内容的示例入口如下所示。
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: web-ingress
annotations:
kubernetes.io/ingress.class: "nginx"
nginx.ingress.kubernetes.io/add-base-url: "true"
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- host: api.my-domain.com
http:
paths:
- backend:
serviceName: web-backend-service
servicePort: 80
- host: app.my-domain.com
http:
paths:
- backend:
serviceName: web-frontend-service
servicePort: 80
这里是 guide 关于如何使用 Nginx ingress 在 Minikube 上服务 angular 8 应用程序。