Kubernetes ALB ingress: How to expose multiple ports on ingress resource

前端 未结 1 1523
一个人的身影
一个人的身影 2021-01-01 04:53

I\'m trying to find a solution for the problem that seems like something very common.

  1. I have a k8s cluster ip service which exposes two ports: 8088 and 60004
相关标签:
1条回答
  • 2021-01-01 05:35

    Eventually, to solve this problem, I've used ALB ingress controller group feature, which is currently in alpha state: https://github.com/kubernetes-sigs/aws-alb-ingress-controller/issues/914

    This is how my ingress resource looks now:

    ---
    apiVersion: extensions/v1beta1
    kind: Ingress
    metadata:
      name: myingress_1
      namespace: myns
      annotations:
        kubernetes.io/ingress.class: alb
        alb.ingress.kubernetes.io/scheme: internet-facing
        alb.ingress.kubernetes.io/tags: Environment=dev,Team=test
        alb.ingress.kubernetes.io/target-type: ip
        alb.ingress.kubernetes.io/group.name: mygroup
        alb.ingress.kubernetes.io/listen-ports: '[{"HTTP": 8088}]'
    spec:
      rules:
        - host: <HOST>
          http:
            paths:
              - path: /*
                backend:
                  serviceName: myservice
                  servicePort: 8088
    ---
    apiVersion: extensions/v1beta1
    kind: Ingress
    metadata:
      name: myingress_2
      namespace: myns
      annotations:
        kubernetes.io/ingress.class: alb
        alb.ingress.kubernetes.io/scheme: internet-facing
        alb.ingress.kubernetes.io/tags: Environment=dev,Team=test
        alb.ingress.kubernetes.io/target-type: ip
        alb.ingress.kubernetes.io/group.name: mygroup
        alb.ingress.kubernetes.io/listen-ports: '[{"HTTP": 60004}]'
    spec:
      rules:
        - host: <HOST>
          http:
            paths:
              - path: /*
                backend:
                  serviceName: myservice
                  servicePort: 60004
    

    where key thing is

    alb.ingress.kubernetes.io/group.name: mygroup
    

    which connects these two ingress resources.

    Therefore, I end up with following:

    • Service with multiple (two) ports in k8s exposed with two separate ingress resources but they both point to the same AWS ALB (because of the same group name)
    • On the AWS ALB side, I get one ALB with two ports exposed: 8088 and 60004 and each of them points to same k8s service but different port on the same pod (this could easily be two different k8s services if that was needed)
    0 讨论(0)
提交回复
热议问题