ALB Ingress 在 EKS 上暴露多个端口时需要使用 annotations 来配置。以下是一种示例配置方法:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: my-ingress
annotations:
alb.ingress.kubernetes.io/scheme: internet-facing
alb.ingress.kubernetes.io/listen-ports: '[{"HTTP": 80}, {"HTTPS": 443}, {"GRPC": 50051}]'
alb.ingress.kubernetes.io/actions.ssl-redirect: '{"Type": "redirect", "RedirectConfig": {"Protocol": "HTTPS", "Port": "443", "StatusCode": "HTTP_301"}}'
spec:
rules:
- host: example.com
http:
paths:
- path: /api
backend:
serviceName: my-service
servicePort: 8080
在上述配置中,使用 alb.ingress.kubernetes.io/listen-ports 来指定要暴露的端口及其协议。例如,在上面的配置中,我们将 GRPC 端口指定为 50051。在 spec 部分中,我们只需要为 Service 指定端口 8080,不需要指定协议。
注意,在使用上述配置时,您需要在 EKS 集群上安装“AWS load balancer controller”(AWS 负载均衡器控制器),该控制器支持 ALB Ingress 的多端口暴露。