Ingress Class
Ingress Class是v1版本中引入的新概念,用于区分不同类型的Ingress控制器。Ingress Class通过ingressClassName
字段指定,其值为用户定义的字符串。在v1beta1中,没有Ingress Class的概念,因此没有相关的字段。
以下是一个使用Ingress Class的v1版本的示例配置:
代码语言:javascript复制apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: example-ingress
annotations:
kubernetes.io/ingress.class: nginx
spec:
ingressClassName: nginx
rules:
- host: example.com
http:
paths:
- path: /example
pathType: Prefix
backend:
service:
name: example-service
port:
number: 80
在上面的配置中,ingressClassName
字段指定了该Ingress所使用的Ingress Class的名称,而annotations
字段中的kubernetes.io/ingress.class
注解也可以用来指定Ingress Class。
路由规则
Ingress的路由规则用于将请求映射到对应的后端服务上。在v1beta1中,路由规则如下:
代码语言:javascript复制apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: example-ingress
spec:
rules:
- host: example.com
http:
paths:
- path: /example
backend:
serviceName: example-service
servicePort: 80
在v1中,路由规则变成了这样:
代码语言:javascript复制apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: example-ingress
spec:
rules:
- host: example.com
http:
paths:
- path: /example
pathType: Prefix
backend:
service:
name: example-service
port:
number: 80
注意到在v1中,backend
字段变成了service
字段,而且servicePort
变成了port.number
。此外,pathType
字段的加入,使得可以更灵活地定义请求的匹配方式。
TCP和UDP支持
在v1版本中,新增了TCP和UDP协议的支持。可以使用如下的配置为TCP或UDP服务创建Ingress规则:
代码语言:javascript复制apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: example-tcp-ingress
spec:
rules:
- host: example.com
tcp:
- port: 1234
backend:
service:
name: example-tcp-service
port:
number: 5678
在上面的配置中,tcp
字段指定了要暴露的TCP端口号,以及将该端口号映射到哪个后端服务上。