我正在设置我的入口控制器、入口类和入口,以在集群外部公开服务。这是全新的集群设置。
我已经使用 nginx 入口控制器设置了 nginx-ingress 控制器
<code>kubectl应用-fhttps://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v0.41.0/deploy/static/provider/baremetal/deploy.yaml
根据我的理解,下一步是创建入口类https://v1-18.docs.kubernetes.io/docs/concepts/services-networking/ingress/#ingress-class
apiVersion: networking.k8s.io/v1beta1
kind: IngressClass
metadata:
name: external-lb
spec:
controller: example.com/ingress-controller
parameters:
apiGroup: k8s.example.com/v1alpha
kind: IngressParameters
name: external-lb
他们如何获得控制器的名称< code > example . com/ingress-controller ?
您将创建< code > Ingres class 作为< code >使用清单安装步骤的一部分(此处为步骤3)。这将创建一个类似于以下内容的< code > Ingres class :
apiVersion: networking.k8s.io/v1beta1
kind: IngressClass
metadata:
name: nginx
# annotations:
# ingressclass.kubernetes.io/is-default-class: "true"
spec:
controller: nginx.org/ingress-controller
然后,要配置nginx
使用的入口
资源,只需在入口规范中
指定ingressClassName:nginx
,如下所示,并再次粘贴如下:
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: cafe-ingress
spec:
ingressClassName: nginx
tls:
- hosts:
- cafe.example.com
secretName: cafe-secret
rules:
- host: cafe.example.com
. . .
我已经用< code > Ingres class 、< code>Ingress和< code>Nginx Ingress控制器运行了多个场景。
情景1
--ingress-class
值的NGINX入口控制器,该值为nGINX
输出:响应404
场景2
入口类
入口测试输出:响应404
场景3
输出:适当的反应
塞纳里奥4
输出:适当的反应
结论
首先,请记住,有3种类型的Nginx
。开源Nginx Ingress Controller
,您可能正在使用它。Nginx Incorporaton(nginx inc)和Nginx Incorporaton Plus
。
在其中一个场景中,当我使用<code>规范时。控制器:nginx。org/ingress-controller,带有参数--ingress class=Nginx
,在NginxIngress-controller-
pod中,您将看到指向
nginx<="" ode="">
的条目。
要重现此行为,您需要使用特定的控制器部署< code>IngressClass,然后部署nginx。
apiVersion: networking.k8s.io/v1beta1
kind: IngressClass
metadata:
name: nginx
spec:
controller: nginx.org/ingress-controller
部署Ngin x In的控制器
后,控制器pod将处于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"
仅当IngressClass
name设置为nginx
时,它才有效。
我会说<code>nginx。org/ingress控制器用于Nginx Incorporated
k8s。io/ingress nginx用于开源nginx ingress
。
如果自定义值用于控制器部署清单
中的--IngressClass
argument,则存在或不存在具有相同名称的IngressClass
对象不会对集群的工作方式产生任何影响,只要您保留ingress规范。ingressClass
值与控制器参数相同。此外,如果存在IngressClass<code>规范。控制器可以具有与所需模式“类域”匹配的任何值,并且完全不影响集群上的Ingress
工作流行为。
此外,如果我将Ingress类
的正确值设置为规范,
。如果尝试将两个值都放在同一Ingres对象上,则会出现如下错误:
就可以正常工作。ingressClass</code>属性或<code>metadata.annotation.kubernetes.io/ingress。类
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: test-ingress
annotations:
kubernetes.io/ingress.class: nginx
spec:
ingressClassName: nginx
入口“测试入口”无效:annotations.kubernetes.io/Ingress。class:无效值:“nginx”:当class字段也被设置时无法设置
请记住,它仅针对N的入口控制器进行了测试。如果您想将Ingresclass
与其他入口控制器
(如Traefik或Ambasader)一起使用,您可以查看他们的发行说明。
我正在AWS EKS上设置NGINX入口控制器。 我浏览了k8s入口资源,它非常有助于理解我们将LB端口映射到k8s服务端口,例如file Def。我安装了nginx控制器,直到必要的步骤。然后教程指示我创建一个入口资源。 我错过了什么?
新来的。我想知道是否有人可以帮助我区分我可以用来识别入口控制器和通过YAML和服务识别入口的特征。我有一个预先存在的集群,我认为入口控制器可能是通过helm安装的,但我不确定。有没有办法了解helm在安装nginx ingress控制器时使用的yaml?
我们正在GKE(谷歌kubernetes引擎)上运行一个API服务器。我们使用Google云endpoint和API密钥处理授权。我们将每个API密钥上的某些IP地址列为白名单。为了做到这一点,我们必须将负载平衡器转换为入口控制器,以公开我们的API服务器。IP白名单不适用于loadbalancer服务。现在,我们有一个类似以下内容的入口设置:
我在RedHat EC2实例上安装了Minikube v1.3.1以进行一些测试。 由于nginx-ingress-控制器默认使用的端口已经在使用中,我正在尝试在部署中更改它们,但没有结果。有人能建议如何做吗? 如何知道端口已在使用? 当我使用命令kubectl-n kube system get deployment | grep nginx列出系统吊舱时,我得到: nginx入口控制器0/1
GCP入口的以下注释等效于什么?我试图使用一个自定义的nginx模板,但我找不到以下注释的参考。在github的回答中,他们使用的是AWS,但我需要使用GCP来实现这一点。 我正在使用ingress类nginx 我正在尝试使用入口控制器在GCP Kubernetes集群中进行入口TCP SSL终止。 我想要来自<代码>https://example.com:1234重定向到
操作系统:RHEL7|k8s版本:1.12/13|kubes祈祷|裸机 我部署了一个标准的kubespray裸机集群,我正在尝试了解部署nginx ingress controller的最简单推荐方法是什么,它将允许我部署简单的服务。没有提供负载平衡器。我希望我的主公共IP作为我的服务的endpoint。 Github k8s ingress nginx建议将节点端口服务作为“强制”步骤,这似乎不