This samples builds off the Creating a RESTful Service sample to illustrate applying a revision, then using that revision for manual traffic splitting.
This section describes how to create an revision by deploying a new configuration.
-
Replace the image reference path with our published image path in the configuration files (
serving/samples/traffic-splitting/updated_configuration.yaml
:- Manually replace:
image: github.com/knative/docs/serving/samples/rest-api-go
withimage: <YOUR_CONTAINER_REGISTRY>/serving/samples/rest-api-go
Or
- Use run this command:
perl -pi -e "[email protected]/knative/docs@${REPO}@g" serving/samples/rest-api-go/updated_configuration.yaml
- Manually replace:
-
Deploy the new configuration to update the
RESOURCE
environment variable fromstock
toshare
:
kubectl apply -f serving/samples/traffic-splitting/updated_configuration.yaml
- Once deployed, traffic will shift to the new revision automatically. Verify the deployment by checking the route status:
kubectl get route -o yaml
- When the new route is ready, you can access the new endpoints:
The hostname and IP address can be found in the same manner as the Creating a RESTful Service sample:
export SERVICE_HOST=`kubectl get route stock-route-example -o jsonpath="{.status.domain}"`
export SERVICE_IP=`kubectl get svc knative-ingressgateway -n istio-system \
-o jsonpath="{.status.loadBalancer.ingress[*].ip}"`
- Make a request to the index endpoint:
curl --header "Host:$SERVICE_HOST" http://${SERVICE_IP}
Response body: Welcome to the share app!
- Make a request to the
/share
endpoint:
curl --header "Host:$SERVICE_HOST" http://${SERVICE_IP}/share
Response body: share ticker not found!, require /share/{ticker}
- Make a request to the
/share
endpoint with aticker
parameter:
curl --header "Host:$SERVICE_HOST" http://${SERVICE_IP}/share/<ticker>
Response body: share price for ticker <ticker> is <price>
This section describes how to manually split traffic to specific revisions.
- Get your revisions names via:
kubectl get revisions
NAME AGE
stock-configuration-example-00001 11m
stock-configuration-example-00002 4m
- Update the
traffic
list inserving/samples/rest-api-go/sample.yaml
as:
traffic:
- revisionName: <YOUR_FIRST_REVISION_NAME>
percent: 50
- revisionName: <YOUR_SECOND_REVISION_NAME>
percent: 50
- Deploy your traffic revision:
kubectl apply -f serving/samples/rest-api-go/sample.yaml
- Verify the deployment by checking the route status:
kubectl get route -o yaml
Once updated, you can make curl
requests to the API using either stock
or share
endpoints.
To clean up the sample service:
kubectl delete -f serving/samples/traffic-splitting/updated_configuration.yaml