根据此文档( https://kubernetes.github.io/ingress-nginx/user-guide/nginx-configuration/annotations/#server-alias ),我可以将额外的 server_name 添加到 nginx 配置文件中。 但是,它向我的所有主机添加了额外的 server_name,这肯定会导致冲突。 有没有办法仅为我的一台主机添加服务器别名?假设我只想将 10.10.0.100 添加到我的 test1 主机。 入口示例:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: test-ingress
namespace: default
annotations:
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/server-alias: 10.10.0.100
spec:
rules:
- host: test1.com
http:
paths:
- path: /
backend:
service:
name: test1-service
port:
number: 8000
pathType: Prefix
- host: test2.com
http:
paths:
- path: /
backend:
service:
name: test2-service
port:
number: 8000
pathType: Prefix
最佳答案
TL;DR
您可以将 Ingress
资源拆分到多个对象(将协同工作)上,以仅将注释
添加到特定的主机
。
Annotations
can only be set on the whole kubernetes resource, as they are part of the resourcemetadata
. Theingress spec
doesn't include that functionality at a lower level.-- Stackoverflow.com: Questions: Apply nginx-ingress annotations at path level
扩展答案以给出如何创建此类设置的示例。让我们假设(示例):
- 指向
nginx-ingress-controller
的LoadBalancer
类型的Service
的所有必需域:hello.kubernetes.docker.internal
- 用于host
.spec
hello-two.kubernetes.docker.internal
- 用于注释
.metadata
- --
goodbye.kubernetes.docker.internal
- 用于host
.spec
goodbye-two.kubernetes.docker.internal
- 用于注释
.metadata
跳过Deployment
和Service
定义,Ingress
资源应如下所示:
hello-ingress.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: hello-ingress
annotations:
nginx.ingress.kubernetes.io/server-alias: "hello-two.kubernetes.docker.internal"
spec:
rules:
- host: hello.kubernetes.docker.internal # <-- IMPORTANT
http:
paths:
- path: /
backend:
service:
name: hello-service
port:
number: 80
pathType: Prefix
再见-ingress.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: goodbye-ingress
annotations:
nginx.ingress.kubernetes.io/server-alias: "goodbye-two.kubernetes.docker.internal"
spec:
rules:
- host: goodbye.kubernetes.docker.internal # <-- IMPORTANT
http:
paths:
- path: /
backend:
service:
name: goodbye-service
port:
number: 80
pathType: Prefix
以上定义将创建 2 个将被合并的 Ingress
资源:
hello-service
将响应:hello.kubernetes.docker.internal
hello-two.kubernetes.docker.internal
goodbye-service
将响应:再见.kubernetes.docker.internal
再见-two.kubernetes.docker.internal
运行:
$ kubectl 获取入口
:
NAME CLASS HOSTS ADDRESS PORTS AGE
goodbye-ingress <none> goodbye.kubernetes.docker.internal localhost 80 36m
hello-ingress <none> hello.kubernetes.docker.internal localhost 80 36m
其他资源:
关于nginx - kubernetes ingress server-alias 仅适用于一台 ingress 主机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65543927/