argoproj / argo-rollouts

Progressive Delivery for Kubernetes
https://argo-rollouts.readthedocs.io/
Apache License 2.0
2.69k stars 841 forks source link

Canary support for Tyk Ingress / Tyk ApiDefinition. Plugin system to support more ingresses in a generic way #922

Open asoorm opened 3 years ago

asoorm commented 3 years ago

Summary

I am currently working on the https://github.com/TykTechnologies/tyk-operator/ which contains an ingress controller & an API Definition Controller (Custom Resource Definition).

I have 2 customers currently asking us to reach out to you about getting Argo Rollouts integrated.

I'm happy to give it a go - and help contribute the integration for the short-term.

For the medium-longer term however, do you have any plans to make integration with different ingresses generic / pluggable? e.g. rather than maintaining tight integration with every vendor's ingress controller - which all work slightly differently - maybe we can create something a little more maintainable?

Use Cases

Any time I want argo rollouts but don't use NginX / AWS.


Message from the maintainers:

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

jessesuen commented 3 years ago

For the medium-longer term however, do you have any plans to make integration with different ingresses generic / pluggable? e.g. rather than maintaining tight integration with every vendor's ingress controller - which all work slightly differently - maybe we can create something a little more maintainable?

This is the purpose of the SMI spec. In fact, using the SMI spec is how we are able to integrate with Linkerd using the SMI's TrafficSplit object (there is no linkerd specific integration). Ideally we will avoid tight integrations with specific controllers and the controllers would adopt this standard.

asoorm commented 3 years ago

This is the purpose of the SMI spec. In fact, using the SMI spec is how we are able to integrate with Linkerd using the SMI's TrafficSplit object (there is no linkerd specific integration). Ideally we will avoid tight integrations with specific controllers and the controllers would adopt this standard.

Thanks @jessesuen for the quick reply. I think i'm a little lost - maybe im missing something.

Tyk is not a service mesh. It's an ingress API Gateway. I have yet to see an ingress controller implement the SMI spec, only service meshes. I've been looking a bit into the SMI spec - but only see it as useful for describing service-service communication. For Ingress, we have the official Ingress Specification https://kubernetes.io/docs/concepts/services-networking/ingress/

This feature request is for the use-case where I might not have a service mesh and NginX is not my ingress controller. But I still wish to use Argo Rollouts canary deployments with my own Ingress Gateway.

kostis-codefresh commented 3 years ago

There seems to be an upcoming gateway API that can function the same way as SMI but for gateways/ingresses https://github.com/argoproj/argo-rollouts/issues/1438

github-actions[bot] commented 1 year ago

This issue is stale because it has been open 60 days with no activity.

kostis-codefresh commented 1 year ago

@asoorm There is now a Kubernetes API Gateway spec https://gateway-api.sigs.k8s.io/ and the respective Argo Rollouts plugin https://github.com/argoproj-labs/rollouts-plugin-trafficrouter-gatewayapi/

Maybe Tyk can become one of the implementations? https://gateway-api.sigs.k8s.io/implementations/

kostis-codefresh commented 2 months ago

Since 1.5 Argo Rollouts now has a plugin system :-) https://argo-rollouts.readthedocs.io/en/stable/features/traffic-management/plugins/