我已经用它运行了多个场景
IngressClass
,
Ingress
和
Nginx Ingress Controller
.
情景1
-
具有自定义名称的入口类
-
带有默认设置的Nginx入口控制器
--ingress-class
价值是什么
nginx
-
使用与IngressClass name相同的IngressClass name的入口
输出:响应404
情景2
-
具有自定义名称的入口类
-
Nginx入口控制器,带有自己的
ingress-class
侵入试验
-
使用与IngressClass name相同的IngressClass name的入口
输出:响应404
情景3
-
与…擦肩而过
test
名称
-
Nginx入口控制器
--入门级
有价值
测验
-
使用
测验
以你的名义
输出:正确响应
塞纳里奥4号
-
与…擦肩而过
nginx
名称
-
Nginx入口控制器
--入门级
有价值
nginx
-
使用
nginx
以你的名义
输出:正确响应
结论
首先,请记住有三种类型的
Nginx
.
Open Source Nginx Ingress Controller
,您可能正在使用它。
Nginx Incorporaton
(nginx inc.)和
Nginx Incorporaton Plus
.
在其中一个场景中,当我使用
spec.controller: nginx.org/ingress-controller
具有
Nginx入口控制器
争论不休
--ingress-class=nginx
在里面
Nginx入口控制器
你们会看到入口指向
k8s.io/ingress-nginx
.
要重现这种行为,您需要部署
安格拉斯
使用特定的控制器,然后部署nginx。
apiVersion: networking.k8s.io/v1beta1
kind: IngressClass
metadata:
name: nginx
spec:
controller: nginx.org/ingress-controller
部署后
Nginx入口控制器
,控制器吊舱将在
CrashLoopBackOff
状态在日志中,您可以找到以下条目:
E1118 15:42:19.008911 8 main.go:134] Invalid IngressClass (Spec.Controller) value "nginx.org/ingress-controller". Should be "k8s.io/ingress-nginx"
只有当
安格拉斯
名称设置为
nginx
.
我会这么说
nginx.org/ingress-controller
是为了
Nginx Incorporated
和
k8s。io/ingress nginx
对于
Open Source Nginx Ingress
.
如果自定义值用于
--入门级
辩论
controller Deployment manifest
,是否有
安格拉斯
相同名称的对象对集群的工作方式没有任何影响,只要保持入口
spec.ingressClass
值与控制器参数相同。而且,如果它存在的话
spec.controller
可以具有任何与所需模式“类似域”匹配且不影响
进入
我的集群上的工作流行为。
此外
进入
如果我将
入门级
要么
规格入口等级
财产还是
metadata.annotation.kubernetes.io/ingress.class
照着如果试图将两个值都放在同一个Ingres对象上,则会出现如下错误:
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: test-ingress
annotations:
kubernetes.io/ingress.class: nginx
spec:
ingressClassName: nginx
The Ingress "test-ingress" is invalid: annotations.kubernetes.io/ingress.class: Invalid value: "nginx": can not be set when the class field is also set
请记住,它只测试了
Nginx Ingress Controlle
.如果你想用
安格拉斯
与其他
Ingress Controllers
喜欢
Traefik
或
Ambasador
,你可以查看他们的发行说明。