Ingress v1和v1beta1区别(二)

2023-05-05 09:32:46 浏览数 (1)

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端口号,以及将该端口号映射到哪个后端服务上。

0 人点赞