0

我有一个静态网站包,我想在我的集群上提供服务。捆绑包存储在谷歌云存储桶中,这让我觉得我实际上可能不需要单独的“服务器”来返回文件。

我已经能够让 Python-Flask 引用存储桶中的文件,但我似乎无法弄清楚如何让大使做同样的事情。我可以做一些事情,比如将包添加到 nginx 实例中,但我不想将 JS 包构建到任何 docker 映像中,这样我就可以进行快速更新。

我不知道如何设置大使路线来执行以下操作:

如果用户去

https://my-website.com/

他们index.html从我的 Google Bucket 获得服务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 错误,控制台抱怨“未声明纯文本文档的编码字符”

我觉得我做错了。我可以像这样使用大使直接从桶中提供服务,还是我真的需要像 nginx 这样的东西?

4

1 回答 1

1

Ambassador 实际上不是网络服务器(正如 Laszlo Valko 指出的那样)。它需要将您的请求代理到其他一些 Web 服务器才能工作——当然可以是 Flask(事实上,Ambassador 诊断服务是在启动时在 Ambassador pod 内启动的 Flask 应用程序),但它需要运行某处。:)

于 2019-03-27T16:36:06.527 回答