在Kubernetes集群中使用ALB ingress控制器,可以实现基于路径的路由。例如,如果有两个服务serviceA和serviceB,我们可以使用path参数将它们区分开来。
以下是一个使用nginx-ingress控制器实现的基本示例:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: example-ingress
spec:
rules:
- host: example.com
http:
paths:
- path: /serviceA
backend:
serviceName: serviceA
servicePort: 80
- path: /serviceB
backend:
serviceName: serviceB
servicePort: 80
在这个例子中,我们定义了一个名为example-ingress的Ingress资源,并指定了两个路径/serviceA和/serviceB。当请求example.com/serviceA时,它将被路由到serviceA的80端口;当请求example.com/serviceB时,它将被路由到serviceB的80端口。
使用AWS ALB ingress控制器时,使用以下示例:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: example-ingress
annotations:
alb.ingress.kubernetes.io/target-type: ip
alb.ingress.kubernetes.io/scheme: internet-facing
spec:
rules:
- host: example.com
http:
paths:
- path: /serviceA
backend:
serviceName: serviceA
servicePort: 80
# Optional: use this if the service has additional listener ports
# targetPort: 8080
- path: /serviceB
backend:
serviceName: serviceB
servicePort: 80
# Optional: use this if the service has additional listener ports
# targetPort: 8080
与nginx-ingress相比,ALB ingress控制器的Ingress规则需要添加一些额外的注释,以告诉控制器使用ip目标类型和internet-facing方案