Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/464.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用Kubernetes和Ambassador为静态网站提供服务_Javascript_Kubernetes_Google Cloud Storage_Envoyproxy - Fatal编程技术网

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

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.

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

我已经能够让Python Flask引用桶中的文件,但我似乎不知道如何让Ambassador也这样做。我可以做一些类似于将捆绑包添加到nginx实例的事情,但我不想将JS捆绑包构建到任何docker映像中,以便快速更新

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

如果用户转到

他们从我的Google Bucket中获得
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和您的文件存储服务之间。