google-cloud-platform - 将流量重定向到外部 url
问题描述
基于评论的更新:
假设有一个 API 托管在另一个 GCP 项目中 @ hello.company1.com ......
我想有一种可能性,当 some1 访问一个 url abc.company.com 时,它们是来自 hello.company1.com 的服务器流量,类似于 API 网关......
它可以通过 API 网关轻松完成,我只是想弄清楚是否可以使用 K8S 服务和入口。
我已将 Cloud DNS 区域创建为 abc.company.com
当有人访问 abc.company.com/google 时,我希望将请求转发到外部 url,比如说 google.com
这可以通过创建外部名称类型的服务和主机名为 abc.company.com 的入口来实现吗
kind: Service
apiVersion: v1
metadata:
name: test-srv
spec:
type: ExternalName
externalName: google.com
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: test-ingress
spec:
rules:
- host: abc.company.com
- http:
paths:
- path: /google
backend:
serviceName: test-srv
解决方案
可以实现您想要的,但是您需要使用Nginx Ingress来做到这一点,因为您需要使用特定的注释 - nginx.ingress.kubernetes.io/upstream-vhost。
这个Github issue基于storage.googleapis.com
.
apiVersion: v1
kind: Service
metadata:
name: google-storage-buckets
spec:
type: ExternalName
externalName: storage.googleapis.com
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: proxy-assets-ingress
annotations:
kubernetes.io/ingress.class: nginx-ingress
nginx.ingress.kubernetes.io/rewrite-target: /[BUCKET_NAME]/[BUILD_SHA]
nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"
nginx.ingress.kubernetes.io/upstream-vhost: "storage.googleapis.com"
spec:
rules:
- host: abc.company.com
http:
paths:
- path: /your/path
backend:
serviceName: google-storage-buckets
servicePort: 443
取决于您的需要,如果您要在非 https 上使用它,则需要更改servicePort
为80
并删除 annotation nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"
。
有关更多详细信息,您可以查看其他类似Stackoverflow
问题。
请记住不要-
在spec.rules.host
同spec.rules.http
一个清单中使用。如果您的配置中没有,您应该-
只使用 with 。http
host
推荐阅读
- linux - 删除 0 大小文件的最快方法
- python - For Loop - TypeError:必须是 str,而不是 int
- session-cookies - jquery,从前端删除cookies
- connection - 与主机 localhost 端口 1433 的 TCP/IP 连接失败。错误:“连接超时。”
- reactjs - Typescript React延迟加载路由中的组件
- bash - 管道输入到 bash 脚本(翻译文本)
- apache-kafka - 具有自定义对象数据类型的 Kafka 流聚合
- postgresql - 有没有办法使用 massjs 并使用动态变量作为表名来创建表和选择表?
- amazon-web-services - SAML Assumed-Role 用户无权执行操作
- powershell - 如何在不安装 Sharepoint 的情况下将 Sharepoint 加载项与 PowerShell 一起使用?