Routing and managing traffic by using the Knative CLI
You can use the following kn CLI command to split traffic between revisions:
$ kn service update –traffic =
For example, to split traffic for a Service named example, by sending 80% of traffic to the Revision green and 20% of traffic to the Revision blue, you could run the following command:
$ kn service update example-service –traffic green=80 –traffic blue=20
It is also possible to add tags to Revisions and then split traffic according to the tags you have set:
$ kn service update example –tag revision-0001=green –tag @latest=blue
The @latest tag means that blue resolves to the latest Revision of the Service. The following example sends 80% of traffic to the latest Revision and 20% to a Revision named v1.
$ kn service update example-service –traffic @latest=80 –traffic v1=20
The following example shows a traffic spec where 100% of traffic is routed to the latestRevision of the Service. Under status you can see the name of the latest Revision that latestRevision was resolved to:
apiVersion: serving.knative.dev/v1 | |
kind: Service | |
metadata: | |
name: hello | |
spec: | |
template: | |
spec: | |
containers: | |
- image: gcr.io/knative-samples/helloworld-go | |
ports: | |
- containerPort: 8080 | |
env: | |
- name: TARGET | |
value: "Knative-2" | |
traffic: | |
- latestRevision: true | |
percent: 100 |
The following example shows a traffic spec where 100% of traffic is routed to the current Revision, and the name of that Revision is specified as example-service-1. The latest ready Revision is kept available, even though no traffic is being routed to it:
apiVersion: serving.knative.dev/v1 | |
kind: Service | |
metadata: | |
name: hello | |
spec: | |
template: | |
spec: | |
containers: | |
- image: gcr.io/knative-samples/helloworld-go | |
ports: | |
- containerPort: 8080 | |
env: | |
- name: TARGET | |
value: "Knative-2" | |
traffic: | |
- tag: current | |
revisionName: example-service-1 | |
percent: 100 | |
- tag: latest | |
latestRevision: true | |
percent: 0 |
The following example shows how the list of Revisions in the traffic spec can be extended so that traffic is split between multiple Revisions. This example sends 50% of traffic to the current Revision, example-service-1, and 50% of traffic to the candidate Revision, example-service-2:
apiVersion: serving.knative.dev/v1 | |
kind: Service | |
metadata: | |
name: hello | |
spec: | |
template: | |
spec: | |
containers: | |
- image: gcr.io/knative-samples/helloworld-go | |
ports: | |
- containerPort: 8080 | |
env: | |
- name: TARGET | |
value: "Knative-2" | |
traffic: | |
- tag: current | |
revisionName: example-service-1 | |
percent: 50 | |
- tag: candidate | |
revisionName: example-service-2 | |
percent: 50 | |
- tag: latest | |
latestRevision: true | |
percent: 0 |
I’m a DevOps/SRE/DevSecOps/Cloud Expert passionate about sharing knowledge and experiences. I am working at Cotocus. I blog tech insights at DevOps School, travel stories at Holiday Landmark, stock market tips at Stocks Mantra, health and fitness guidance at My Medic Plus, product reviews at I reviewed , and SEO strategies at Wizbrand.
Please find my social handles as below;
Rajesh Kumar Personal Website
Rajesh Kumar at YOUTUBE
Rajesh Kumar at INSTAGRAM
Rajesh Kumar at X
Rajesh Kumar at FACEBOOK
Rajesh Kumar at LINKEDIN
Rajesh Kumar at PINTEREST
Rajesh Kumar at QUORA
Rajesh Kumar at WIZBRAND