sce*_*eee 1 sails.js gitlab-ci kubernetes google-kubernetes-engine kubernetes-ingress
我想在 Google Kubernetes Engine 上运行 sails.js 应用程序。在本地运行应用程序 docker 容器效果很好。到 GKE 的部署是通过 gitlab Auto-Devops 管道完成的。到目前为止,将应用程序部署到 GKE 正在运行,我可以使用 gitlab-CI 生成的域访问 sails.js 应用程序的页面 - 例如xyz-review-autodevops-123.my.host.com
但是,当访问页面时,只能加载所请求的页面 - 所有资源(例如图像、javascript 和 css 文件)都不会加载,而是返回 404。
当查看 GKE 中的 nginx-ingress-controller 日志时,我发现请求了这些 url,但结果是 404:
[05/Aug/2018:12:27:25 +0000] "GET /js/cloud.setup.js HTTP/1.1" 404 9 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.84 Safari/537.36" 573 0.004 [my-app-review-autodevops-1232u0-my-app-443] xx.xx.xx.xx:80 9 0.004 404
Run Code Online (Sandbox Code Playgroud)
还经常记录如下错误。我不确定这是否与此问题有关,但仍然想提一下,以防万一:
error obtaining PEM from secret my-app-1239989/review-autodevops-1232u0-my-app-tls: error retrieving secret my-app-1239989/review-autodevops-1232u0-my-app-tls: secret my-app-1239989/review-autodevops-1232u0-my-app-tls was not found"
Run Code Online (Sandbox Code Playgroud)
我的猜测是,入口不知道资产所请求的主机,因为它们被请求为绝对路径(/js/cloud.setup.js)而不是相对路径(js/cloud.setup.js),因此不知道将该请求路由到哪里,因为请求中丢失了域信息。
但我现在知道如何解决这个 404 问题。将 sails.js 中的所有路径更改为相对路径是否可以解决此问题?我什至不知道这是否可以轻松完成,因为相当多的任务是由 sails.js 中的 grunt 任务生成的,并且是以绝对形式生成的。
好吧,自己发现了错误。这是一个愚蠢的错误,因为 sails 以某种方式配置为包含grunt且sails-hook-grunt仅作为package.json.
由于在生产容器上NODE_ENV设置为环境变量,npm install因此仅安装生产依赖项。
由于 grunt 用于操作和提供 sails.js 中的资源,因此这些资源尚未生成。
解决方案是移动grunt并sails-hook-grunt到dependenciesin package.json。
| 归档时间: |
|
| 查看次数: |
692 次 |
| 最近记录: |