mirror of https://github.com/istio/istio.io.git
First round of edits. (#1748)
* First round of edits.' * Fixed linter issues.
This commit is contained in:
parent
983b12589d
commit
b556576557
|
|
@ -12,43 +12,47 @@ service.
|
||||||
|
|
||||||
## Before you begin
|
## Before you begin
|
||||||
|
|
||||||
* Setup Istio in a Kubernetes cluster by following the quick start instructions
|
1. Setup Istio in a Kubernetes cluster by following the instructions in the
|
||||||
in the [Installation guide](/docs/setup/kubernetes/quick-start/).
|
[Installation Guide](/docs/setup/kubernetes/quick-start/).
|
||||||
|
|
||||||
* Deploy the [Bookinfo](/docs/examples/bookinfo/) sample application.
|
1. Deploy the [Bookinfo](/docs/examples/bookinfo/) sample application.
|
||||||
|
|
||||||
* Initialize the application version routing to direct `reviews` service
|
The Bookinfo sample deploys 3 versions of the `reviews` service:
|
||||||
requests from test user "jason" to version v2 and requests from any other
|
|
||||||
user to v3.
|
|
||||||
|
|
||||||
{{< text bash >}}
|
* Version v1 doesn’t call the `ratings` service.
|
||||||
$ istioctl create -f @samples/bookinfo/networking/virtual-service-all-v1.yaml@
|
* Version v2 calls the `ratings` service, and displays each rating as 1 to 5 black stars.
|
||||||
{{< /text >}}
|
* Version v3 calls the `ratings` service, and displays each rating as 1 to 5 red stars.
|
||||||
|
|
||||||
and then run the following command:
|
You need to set a default route to one of the versions. Otherwise, when you send requests to the `reviews` service, Istio routes requests to all available versions randomly, and sometimes the output contains star ratings and sometimes it doesn't.
|
||||||
|
|
||||||
{{< text bash >}}
|
1. Set the default version for all services to v1. If you’ve already created route rules for the sample, use `replace` rather than `create` in the following command.
|
||||||
$ istioctl replace -f @samples/bookinfo/networking/virtual-service-reviews-jason-v2-v3.yaml@
|
|
||||||
{{< /text >}}
|
|
||||||
|
|
||||||
> If you have a conflicting rule that you set in previous tasks,
|
{{< text bash >}}
|
||||||
use `istioctl replace` instead of `istioctl create`.
|
$ istioctl create -f @samples/bookinfo/networking/virtual-service-all-v1.yaml@
|
||||||
|
{{< /text >}}
|
||||||
|
|
||||||
|
1. Initialize application version routing on the `reviews` service to
|
||||||
|
direct requests from the test user "jason" to version v2 and requests from any other user to v3.
|
||||||
|
|
||||||
|
{{< text bash >}}
|
||||||
|
$ istioctl replace -f @samples/bookinfo/networking/virtual-service-reviews-jason-v2-v3.yaml@
|
||||||
|
{{< /text >}}
|
||||||
|
|
||||||
## Rate limits
|
## Rate limits
|
||||||
|
|
||||||
Istio enables you to rate limit traffic to a service.
|
Istio allows you to rate limit traffic to a service.
|
||||||
|
|
||||||
Consider `ratings` as an external paid service like Rotten Tomatoes® with
|
Consider `ratings` as an external paid service like Rotten Tomatoes® with
|
||||||
`1qps` free quota. Using Istio we can ensure that `1qps` is not breached.
|
`1 qps` free quota. Using Istio, you can ensure that `1 qps` is not breached.
|
||||||
|
|
||||||
1. Point your browser at the Bookinfo `productpage`
|
1. Point your browser at the Bookinfo `productpage`
|
||||||
(http://$GATEWAY_URL/productpage).
|
(`http://$GATEWAY_URL/productpage`).
|
||||||
|
|
||||||
If you log in as user "jason", you should see black ratings stars with
|
If you log in as user "jason", you should see black ratings stars with
|
||||||
each review, indicating that the `ratings` service is being called by the
|
each review, indicating that the `ratings` service is being called by the
|
||||||
"v2" version of the `reviews` service.
|
"v2" version of the `reviews` service.
|
||||||
|
|
||||||
If you log in as any other user (or logout) you should see red ratings
|
If you log in as any other user, you should see red ratings
|
||||||
stars with each review, indicating that the `ratings` service is being
|
stars with each review, indicating that the `ratings` service is being
|
||||||
called by the "v3" version of the `reviews` service.
|
called by the "v3" version of the `reviews` service.
|
||||||
|
|
||||||
|
|
@ -154,7 +158,7 @@ Consider `ratings` as an external paid service like Rotten Tomatoes® with
|
||||||
quota: requestcount
|
quota: requestcount
|
||||||
{{< /text >}}
|
{{< /text >}}
|
||||||
|
|
||||||
This `QuotaSpec` defines the requestcount `quota` we created above with a
|
This `QuotaSpec` defines the requestcount `quota` you created above with a
|
||||||
charge of `1`.
|
charge of `1`.
|
||||||
|
|
||||||
1. Confirm the `QuotaSpecBinding` was created:
|
1. Confirm the `QuotaSpecBinding` was created:
|
||||||
|
|
@ -180,26 +184,26 @@ Consider `ratings` as an external paid service like Rotten Tomatoes® with
|
||||||
namespace: default
|
namespace: default
|
||||||
{{< /text >}}
|
{{< /text >}}
|
||||||
|
|
||||||
This `QuotaSpecBinding` binds the `QuotaSpec` we created above to the
|
This `QuotaSpecBinding` binds the `QuotaSpec` you created above to the
|
||||||
services we want to apply it to. Note we have to define the namespace for
|
services you want to apply it to. You have to define the namespace for
|
||||||
each service since it is not in the same namespace this `QuotaSpecBinding`
|
each service since it is not in the same namespace this `QuotaSpecBinding`
|
||||||
resource was deployed into.
|
resource was deployed into.
|
||||||
|
|
||||||
1. Refresh the `productpage` in your browser.
|
1. Refresh the `productpage` in your browser.
|
||||||
|
|
||||||
If you are logged out, reviews-v3 service is rate limited to 1 request
|
If you are logged out, `reviews-v3` service is rate limited to 1 request
|
||||||
every 5 seconds. If you keep refreshing the page the stars should only
|
every 5 seconds. If you keep refreshing the page the stars should only
|
||||||
load around once every 5 seconds.
|
load around once every 5 seconds.
|
||||||
|
|
||||||
If you log in as user "jason", reviews-v2 service is rate limited to 5
|
If you log in as user "jason", `reviews-v2` service is rate limited to 5
|
||||||
requests every 10 seconds. If you keep refreshing the page the stars
|
requests every 10 seconds. If you keep refreshing the page the stars
|
||||||
should only load 5 times every 10 seconds.
|
should only load 5 times every 10 seconds.
|
||||||
|
|
||||||
For all other services the default 5000qps rate limit will apply.
|
For all other services, the default 5000 qps rate limit will apply.
|
||||||
|
|
||||||
## Conditional rate limits
|
## Conditional rate limits
|
||||||
|
|
||||||
In the previous example we applied a rate limit to the `ratings` service
|
In the previous example you applied a rate limit to the `ratings` service
|
||||||
without regard to non-dimension attributes. It is possible to conditionally
|
without regard to non-dimension attributes. It is possible to conditionally
|
||||||
apply rate limits based on arbitrary attributes using a match condition in
|
apply rate limits based on arbitrary attributes using a match condition in
|
||||||
the quota rule.
|
the quota rule.
|
||||||
|
|
@ -225,7 +229,7 @@ destination namespaces are different.
|
||||||
|
|
||||||
## Understanding rate limits
|
## Understanding rate limits
|
||||||
|
|
||||||
In the preceding examples we saw how Mixer applies rate limits to requests
|
In the preceding examples you saw how Mixer applies rate limits to requests
|
||||||
that match certain conditions.
|
that match certain conditions.
|
||||||
|
|
||||||
Every named quota instance like `requestcount` represents a set of counters.
|
Every named quota instance like `requestcount` represents a set of counters.
|
||||||
|
|
@ -241,7 +245,7 @@ The `maxAmount` in the adapter configuration sets the default limit for all
|
||||||
counters associated with a quota instance. This default limit applies if a
|
counters associated with a quota instance. This default limit applies if a
|
||||||
quota override does not match the request. Memquota selects the first
|
quota override does not match the request. Memquota selects the first
|
||||||
override that matches a request. An override need not specify all quota
|
override that matches a request. An override need not specify all quota
|
||||||
dimensions. In the example, the `0.2qps` override is selected by matching
|
dimensions. In the example, the `0.2 qps` override is selected by matching
|
||||||
only three out of four quota dimensions.
|
only three out of four quota dimensions.
|
||||||
|
|
||||||
If you would like the above policies enforced for a given namespace instead
|
If you would like the above policies enforced for a given namespace instead
|
||||||
|
|
@ -250,18 +254,18 @@ with the given namespace.
|
||||||
|
|
||||||
## Cleanup
|
## Cleanup
|
||||||
|
|
||||||
* Remove the rate limit configuration:
|
1. Remove the rate limit configuration:
|
||||||
|
|
||||||
{{< text bash >}}
|
{{< text bash >}}
|
||||||
$ istioctl delete -f @samples/bookinfo/policy/mixer-rule-ratings-ratelimit.yaml@
|
$ istioctl delete -f @samples/bookinfo/policy/mixer-rule-ratings-ratelimit.yaml@
|
||||||
{{< /text >}}
|
{{< /text >}}
|
||||||
|
|
||||||
* Remove the application routing rules:
|
1. Remove the application routing rules:
|
||||||
|
|
||||||
{{< text bash >}}
|
{{< text bash >}}
|
||||||
$ istioctl delete -f @samples/bookinfo/networking/virtual-service-all-v1.yaml@
|
$ istioctl delete -f @samples/bookinfo/networking/virtual-service-all-v1.yaml@
|
||||||
{{< /text >}}
|
{{< /text >}}
|
||||||
|
|
||||||
* If you are not planning to explore any follow-on tasks, refer to the
|
1. If you are not planning to explore any follow-on tasks, refer to the
|
||||||
[Bookinfo cleanup](/docs/examples/bookinfo/#cleanup) instructions
|
[Bookinfo cleanup](/docs/examples/bookinfo/#cleanup) instructions
|
||||||
to shutdown the application.
|
to shutdown the application.
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue