https://github.com/kostis-codefresh/rollouts-header-routing-example
Example with Argo Rollouts and Header based routing
https://github.com/kostis-codefresh/rollouts-header-routing-example
argo canary devops kubernetes rollouts
Last synced: 2 months ago
JSON representation
Example with Argo Rollouts and Header based routing
- Host: GitHub
- URL: https://github.com/kostis-codefresh/rollouts-header-routing-example
- Owner: kostis-codefresh
- Created: 2024-10-03T08:32:07.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2024-11-01T09:40:03.000Z (11 months ago)
- Last Synced: 2025-01-25T19:43:27.689Z (8 months ago)
- Topics: argo, canary, devops, kubernetes, rollouts
- Language: HTML
- Homepage:
- Size: 36.1 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Static and Dynamic routing for Canaries with Argo Rollouts
This repository contains 3 examples for using Traefik 3.x with Argo Rollouts
via the Gateway API1. Example with just a [route](simple)
2. Example with [static routes for preview/stable/canary](static-routing)
3. Example with [header based routing](dynamic-routing).Read the full blog at [https://codefresh.io/blog/argo-rollouts-header-based-routing/](https://codefresh.io/blog/argo-rollouts-header-based-routing/)
## Traefik setup
This process is common to both examples.
Install traefik 3.x, Argo Rollouts and the Gateway API plugin as described [traefik-setup/README.md](traefik-setup/README.md) in a local Kubernetes cluster.
Expose the Traefik endpoint as Load Balancer so you can visit it via the browser.
## Simple HTTP route example
To test just the Gateway API implementation of Traefik apply the manifests
at `simple` folder. Then visit `http://localhost/example/` to see the application.## Static routing example
Apply the manifests in the `static-routing` folder. Then start a canary
by editing the `rollout.yml` file and change the docker image to different tags.Then visit the 3 urls
* `http://localhost/stable/` This is always old version
* `http://localhost/canary/` This is active canary version
* `http://localhost/preview/` This is always new versionYou can inspect the rollout with
```
kubectl argo rollouts get rollout static-rollouts-demo
```## Dynamic routing example
Apply the manifests in the `dynamic-routing` folder. Then start a canary
by editing the `rollout.yml` file and change the APP_VERSION and APP_COLOR to start a canaryThen visit `http://localhost` and see that if you change the active header on the UI, the application can be forced to be part of the canary.
You can inspect the rollout with
```
kubectl argo rollouts get rollout smart-rollouts-demo
```## Kubecon Presentation for Header Based Routing
If you prefer video format see the [Kubecon Presentation](https://www.youtube.com/watch?v=95OFqU4UjiE).