Javascript 使用Kubernetes和Ambassador为静态网站提供服务
我有一个静态网站包,我想在我的集群上提供服务。捆绑包存储在谷歌云存储桶中,这让我觉得我可能不需要单独的“服务器”来返回文件 我已经能够让Python Flask引用桶中的文件,但我似乎不知道如何让Ambassador也这样做。我可以做一些类似于将捆绑包添加到nginx实例的事情,但我不想将JS捆绑包构建到任何docker映像中,以便快速更新 我不知道如何设置大使路线来执行以下操作: 如果用户转到 他们从我的Google Bucket中获得Javascript 使用Kubernetes和Ambassador为静态网站提供服务,javascript,kubernetes,google-cloud-storage,envoyproxy,Javascript,Kubernetes,Google Cloud Storage,Envoyproxy,我有一个静态网站包,我想在我的集群上提供服务。捆绑包存储在谷歌云存储桶中,这让我觉得我可能不需要单独的“服务器”来返回文件 我已经能够让Python Flask引用桶中的文件,但我似乎不知道如何让Ambassador也这样做。我可以做一些类似于将捆绑包添加到nginx实例的事情,但我不想将JS捆绑包构建到任何docker映像中,以便快速更新 我不知道如何设置大使路线来执行以下操作: 如果用户转到 他们从我的Google Bucket中获得index.html服务my Bucket/index.
index.html
服务my Bucket/index.html
当index.html在内部引用一个文件(/static/js/main.js)时,Ambassador会提供在my bucket/static/js/main.js
我尝试过设置这样的服务:
apiVersion: v1
kind: Service
metadata:
annotations:
getambassador.io/config: |
---
apiVersion: ambassador/v0
kind: Mapping
name: website_mapping
prefix: /website/
service: https://my-bucket-url/index.html
name: website-service
labels:
app: website-service
spec:
ports:
- port: 80
targetPort: 80
name: http-website
selector:
app: website
但是导航到my-website.com/website/
只会得到一个503错误,控制台抱怨“未声明纯文本文档的编码字符”
我觉得我做错了。我可以像这样直接使用Ambassador服务吗?或者我真的需要像nginx这样的东西吗?Ambassador实际上不是一个web服务器(正如Laszlo Valko指出的那样)。它需要将您的请求代理到其他web服务器,才能使其工作——这当然可以是Flask(事实上,Ambassador诊断服务是在Ambassador pod内启动时启动的Flask应用程序),但它需要在某处运行。:) 如果您输入
https://my-bucket-url/index.html
进入您的浏览器,您是否得到了想要的内容?大使将提供该内容(作为反向代理)。当然,为了让它起作用,“my website.com”必须指向大使服务的IP地址。我得到index.html,但问题是需要更多的逻辑来正确解释index.html中的导入路径。为了在flask中工作,我必须编写一个端点,将某些路径重定向为文件访问。。。大使将为您提供反向代理。你需要一个运行在大使背后的web服务。如果您碰巧有一个bucket storage web服务,它看起来与为您的web站点服务的web服务器完全相同(它可以作为web服务器为您的文件服务,即您可以直接在那里浏览您的web站点),那么Ambassador可以反向代理此web服务。如果没有,那么您还需要一个额外的web服务器,位于Ambassador和您的文件存储服务之间。