gpt4 book ai didi

nginx - 如何将多个服务映射到一个 Kubernetes Ingress 路径?

转载 作者:行者123 更新时间:2023-12-04 21:33:05 25 4
gpt4 key购买 nike

如何设置 Kubernentes Ingress 和 Controller 以基本上执行以下 nginx.conf 文件的操作:

upstream backend {
server server1.example.com weight=5;
server server2.example.com:8080;

server backup1.example.com:8080 backup;
}

我希望一个 http 端点映射到多个 Kubernetes 服务,并优先选择主要服务,但也有备份服务。 (对于我的特定项目,我需要有多个服务,而不是一个有多个 Pod 的服务。)

这是我尝试的 ingress.yaml 文件。我很确定我列出多个后端的方式是不正确的。我该怎么做?以及如何设置“备份”标志?
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: fanout-ingress
annotations:
ingress.kubernetes.io/rewrite-target: /
kubernetes.io/ingress.class: "nginx"
# kubernetes.io/ingress.global-static-ip-name: "kubernetes-ingress"
spec:
rules:
- http:
paths:
- path: /
backend:
serviceName: server1
servicePort:
- path: /
backend:
serviceName: server2
servicePort: 8080
- path: /
backend:
serviceName: backup1
servicePort: 8080

我在 GKE 上运行 Kubernetes。

最佳答案

你可以做simple fanout基于路径或 name based virtual hosting .

但是,您需要根据某些内容(端口除外,因为它是入口)进行区分,因此您的两个选项将是虚拟主机或路径。

路径不适用于某些需要标准路径的服务。根据您的示例判断,您很可能想要像 a.example.com 和 b.example.com 这样的东西。这是 Kubernetes 文档中的示例:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: name-virtual-host-ingress
spec:
rules:
- host: foo.bar.com
http:
paths:
- backend:
serviceName: service1
servicePort: 80
- host: bar.foo.com
http:
paths:
- backend:
serviceName: service2
servicePort: 80

关于nginx - 如何将多个服务映射到一个 Kubernetes Ingress 路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46373616/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com