You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Some scenarios require more than one condition to route traffic. The conditions-name in the annotation can be a either real serviceName or an annotation-based action name, i.e., the service does not need to exist. If it does not exist, you must specify an action annotation to be able to route its traffic: alb.ingress.kubernetes.io/actions.${action-name}.
Currently, argo-rollouts' traffic management only manages the action related to the rollout service, which uses the root/stable service name as the action name: alb.ingress.kubernetes.io/actions.<SERVICE-NAME>. This means I can't use the more than one condition per service since it needs to be named after the root/stable service.
Use Cases
Given I want to route requests based on their header value from the /path1 and requests based on their method to the /path2, the setup would look like this:
apiVersion: networking.k8s.io/v1kind: Ingressmetadata:
name: demoannotations:
alb.ingress.kubernetes.io/conditions.http-header: '[{"field":"http-header","httpHeaderConfig":{"httpHeaderName": "HeaderName", "values":["HeaderValue1"]}}]'alb.ingress.kubernetes.io/conditions.http-request-method: '[{"field":"http-request-method","httpRequestMethodConfig":{"Values":["POST"]}}]'spec:
rules:
- host: www.example.comhttp:
paths:
- backend:
serviceName: http-header # does not match the service name, requires actions annotationservicePort: use-annotationpath: /path1
- backend:
serviceName: http-request-method # does not match the service name, requires actions annotationservicePort: use-annotationpath: /path2
- backend:
serviceName: exampleservicePort: 80path: /*
If the Rollout knew which actions to take into account, it could take care of each condition's actions annotation weight management, e.g.:
apiVersion: argoproj.io/v1alpha1kind: Rolloutmetadata:
name: demospec:
strategy:
canary:
pingPong:
pingService: demo-pingpongService: demo-pongtrafficRouting:
alb:
ingress: demoservicePort: 80actionNames: # this field specifies a list of action names argo-rollouts should manage
- http-header
- http-request-method
By doing this, argo-rollouts would add an actions annotation for each condition:
Summary
AWS ALB provides a method for specifying routing conditions by adding a condition annotation:
alb.ingress.kubernetes.io/conditions.${conditions-name}
.Some scenarios require more than one condition to route traffic. The
conditions-name
in the annotation can be a either real serviceName or an annotation-based action name, i.e., the service does not need to exist. If it does not exist, you must specify an action annotation to be able to route its traffic:alb.ingress.kubernetes.io/actions.${action-name}
.Currently, argo-rollouts' traffic management only manages the action related to the rollout service, which uses the root/stable service name as the action name:
alb.ingress.kubernetes.io/actions.<SERVICE-NAME>
. This means I can't use the more than one condition per service since it needs to be named after the root/stable service.Use Cases
Given I want to route requests based on their header value from the /path1 and requests based on their method to the /path2, the setup would look like this:
If the Rollout knew which actions to take into account, it could take care of each condition's
actions
annotation weight management, e.g.:By doing this, argo-rollouts would add an
actions
annotation for each condition:The text was updated successfully, but these errors were encountered: