使用Kubernetes和大使为静态网站提供服务

时间:2019-01-25 18:43:27

标签: javascript kubernetes google-cloud-storage envoyproxy

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

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

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

如果用户去

https://my-website.com/

他们从我的Google存储桶index.html中获取了my-bucket/index.html

,当index.html内部引用文件(/static/js/main.js)时,大使将提供在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这样的东西吗?

1 个答案:

答案 0 :(得分:1)

大使实际上不是Web服务器(正如Laszlo Valko指出的那样)。它需要将您的请求代理到其他Web服务器上才能起作用-可以肯定是Flask(实际上,Ambassador诊断服务是在启动时在Ambassador pod内启动的Flask应用程序),但是它需要运行某处。 :)