Skip to content

Add support for several servicePorts per ingress using canary via alb plugin #3128

@andreosipov

Description

@andreosipov

Summary

At this moment argo rollouts spec with alb plugin supports several ingresses, but doesn't support several ports for k8s services. This is a problem, because there are lots of use cases when k8s service has several ports:
Screenshot 2023-10-26 at 18 05 47

Use Cases

In our setup we have several ingresses pointed at the same load balancer via alb.ingress.kubernetes.io/group.name annotation and each ingress has an underlying k8s service with a specific port (k8s service is the same for the business service), example:

ingress №1:

rules:
    - host: api-internal.example.net
      http:
        paths:
          - path: /*
            pathType: ImplementationSpecific
            backend:
              service:
                name: svc-stable
                port:
                  name: http-svc-internal

ingress №2:

rules:
    - host: api-specific.example.net
      http:
        paths:
          - path: /*
            pathType: ImplementationSpecific
            backend:
              service:
                name: svc-stable
                port:
                  name: http-svc-specific

Given the fact that the rollout spec should include all ingresses for the application and in case you have several ports being listened there is a problem with canary:

spec:
  strategy:
    canary:
      canaryService: svc-canary
      stableService: svc-stable
      maxUnavailable: '0%'
      maxSurge: '10%'
      trafficRouting:
        alb:
          ingresses:
            - internal-api
            - specific-api
          servicePort: http-svc-specific OR http-svc-internal 

It would be nice to add support for service ports per each ingress so canary could be used for all of them.


Message from the maintainers:

Impacted by this bug? Give it a 👍. We prioritize the issues with the most 👍.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions