【发布时间】:2019-02-21 15:26:21
【问题描述】:
我正在使用this ingress controller 并想为某个存储桶设置一个 s3 代理。如果我在浏览器中调用 url
https://my-kube-server.org/img/dog.jpg
我希望在
查看/下载图片https://s3.eu-central-1.amazonaws.com/mybucket123/pictures/dog.jpg
我可以按照this example 中的说明设置重写规则并指向外部服务:
kind: Service
apiVersion: v1
metadata:
name: s3-proxy
spec:
type: ExternalName
externalName: s3.eu-central-1.amazonaws.com
headers:
- host: s3.eu-central-1.amazonaws.com
但我从 aws 收到错误,因为它需要在标题中包含“Host:s3.eu-central-1.amazonaws.com”。我无法在 s3-proxy 服务定义和入口规则中设置此标头(configuration-snippet 不起作用,因为它会在已在 nginx.conf pod 中设置后添加另一个 Host 标头。
我的解决方案是为这个入口规则获取整个位置块并将其包含为server-snippet,这是相当蛮力的。
另一个选择是在 ingress 后面有一个 nginx pod+service,负责设置正确的标头。所以流程是 request -> ingress-controller -> nginx -> s3。
有人知道如何代理 s3 吗?
【问题讨论】:
标签: amazon-web-services nginx amazon-s3 kubernetes