Ingress是Kubernetes中的一个重要组件,可以将外部流量路由到集群中的Service对象。在Kubernetes版本1.19之前,Ingress资源的版本为v1beta1,从Kubernetes版本1.19开始,Ingress资源的版本为V1。
Ingress v1beta1
Ingress v1beta1是Kubernetes的早期版本中定义的Ingress资源。它允许开发人员在Kubernetes集群外部定义路由规则,以便将外部流量路由到集群内的Service对象。Ingress v1beta1定义了一个名为ingress.extensions/v1beta1
的API组,并使用类似于下面的示例定义Ingress资源:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: example-ingress
spec:
rules:
- host: example.com
http:
paths:
- path: /test
backend:
serviceName: example-service
servicePort: 80
在上面的示例中,Ingress资源指定了将example.com
主机名的流量路由到example-service
Service对象的80端口,路径为/test
。该Ingress资源使用HTTP协议路由流量。
虽然Ingress v1beta1是Kubernetes中的一种有用资源,但它有几个限制。例如,它不支持TCP/UDP流量的路由和TLS证书管理等功能。
Ingress v1
Ingress v1是Kubernetes 1.19版本中引入的新版本Ingress资源。与Ingress v1beta1不同,Ingress v1使用一个名为networking.k8s.io/v1
的API组,可以管理更广泛的网络资源。Ingress v1支持TCP/UDP流量路由、TLS证书管理和HTTP/2协议等功能。下面是一个使用Ingress v1的示例:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: example-ingress
spec:
tls:
- hosts:
- example.com
secretName: example-tls-secret
rules:
- host: example.com
http:
paths:
- path: /test
pathType: Prefix
backend:
service:
name: example-service
port:
name: http
在上面的示例中,Ingress资源指定了将example.com
主机名的流量路由到example-service
Service对象的HTTP端口,路径为/test
。此外,还指定了使用TLS证书对流量进行加密。在Ingress v1中,还可以指定其他规则和参数,例如流量策略和负载均衡算法等。