From b5b97e5534e23459a4fdeeefc270a0a28b0a1282 Mon Sep 17 00:00:00 2001 From: Wilson Wu Date: Tue, 30 Jul 2024 09:58:11 +0800 Subject: [PATCH] [zh] Sync #15446 mirroring task format fix into Chinese (#15484) * Sync #15446 mirroring task format fix into Chinese * fix lint --- .../traffic-management/mirroring/index.md | 514 +++++++++--------- 1 file changed, 257 insertions(+), 257 deletions(-) diff --git a/content/zh/docs/tasks/traffic-management/mirroring/index.md b/content/zh/docs/tasks/traffic-management/mirroring/index.md index 32c418abb6e98..51d1a70fbab4c 100644 --- a/content/zh/docs/tasks/traffic-management/mirroring/index.md +++ b/content/zh/docs/tasks/traffic-management/mirroring/index.md @@ -16,218 +16,215 @@ test: yes {{< boilerplate gateway-api-support >}} -## 开始之前{#before-you-begin} +## 开始之前 {#before-you-begin} -* 按照[安装指南](/zh/docs/setup/)中的说明设置 Istio。 +1. 按照[安装指南](/zh/docs/setup/)设置 Istio。 +1. 首先部署已启用访问日志记录的两个版本的 [httpbin]({{< github_tree >}}/samples/httpbin) 服务: -* 首先部署两个版本的 [Httpbin]({{< github_tree >}}/samples/httpbin) 服务,并开启访问日志功能: + 1. 部署 `httpbin-v1`: - **httpbin-v1:** + {{< text bash >}} + $ kubectl create -f - <}} + + 1. 部署 `httpbin-v2`: + + {{< text bash >}} + $ kubectl create -f - <}} + + 1. 部署 `httpbin` Kubernetes Service: + + {{< text bash >}} + $ kubectl create -f - <}} + +1. 部署用于向 `httpbin` 服务发送请求的 `sleep` 工作负载: {{< text bash >}} - $ cat <}} - **httpbin-v2:** +## 创建一个默认路由策略 {#creating-a-default-routing-policy} + +默认情况下,Kubernetes 在 `httpbin` 服务的两个版本之间进行负载均衡。 +在此步骤中会更改该行为,把所有流量都路由到 `v1` 版本。 + +1. 创建一个默认路由规则,将所有流量路由到服务的 `v1` 版本: + + {{< tabset category-name="config-api" >}} + + {{< tab name="Istio APIs" category-value="istio-apis" >}} {{< text bash >}} - $ cat <}} - **httpbin Kubernetes 服务:** + {{< /tab >}} + + {{< tab name="Gateway API" category-value="gateway-api" >}} {{< text bash >}} - $ kubectl create -f - <}} - -* 启动 `sleep` 服务,这样就可以使用 `curl` 来提供负载: - - **sleep 服务:** - - {{< text bash >}} - $ cat <}} -## 创建一个默认路由策略{#creating-a-default-routing-policy} + {{< /tab >}} -默认情况下,Kubernetes 在 `httpbin` 服务的两个版本之间进行负载均衡。在此步骤中会更改该行为,把所有流量都路由到 `v1` 版本。 + {{< /tabset >}} -1. 创建一个默认路由规则,将所有流量路由到服务的 `v1` 版本: - -{{< tabset category-name="config-api" >}} - -{{< tab name="Istio APIs" category-value="istio-apis" >}} - -{{< text bash >}} -$ kubectl apply -f - <}} - -{{< /tab >}} - -{{< tab name="Gateway API" category-value="gateway-api" >}} - -{{< text bash >}} -$ kubectl apply -f - <}} - -{{< /tab >}} - -{{< /tabset >}} - -2) 现在所有流量都转到 `httpbin:v1` 服务,并向此服务发送请求: +1. 现在所有流量都转到 `httpbin:v1` 服务,并向此服务发送请求: {{< text bash json >}} - $ export SLEEP_POD=$(kubectl get pod -l app=sleep -o jsonpath={.items..metadata.name}) - $ kubectl exec "${SLEEP_POD}" -c sleep -- curl -sS http://httpbin:8000/headers + $ kubectl exec deploy/sleep -c sleep -- curl -sS http://httpbin:8000/headers { "headers": { "Accept": "*/*", @@ -244,145 +241,148 @@ EOF } {{< /text >}} -3) 分别查看 `httpbin` Pod的 `v1` 和 `v2` 两个版本的日志。您可以看到 `v1` 版本的访问日志条目,而 `v2` 版本没有日志: +1. 分别查看 `httpbin` Pod的 `v1` 和 `v2` 两个版本的日志。 + 您可以看到 `v1` 版本的访问日志条目,而 `v2` 版本没有日志: {{< text bash >}} - $ export V1_POD=$(kubectl get pod -l app=httpbin,version=v1 -o jsonpath={.items..metadata.name}) - $ kubectl logs "$V1_POD" -c httpbin + $ kubectl logs deploy/httpbin-v1 -c httpbin 127.0.0.1 - - [07/Mar/2018:19:02:43 +0000] "GET /headers HTTP/1.1" 200 321 "-" "curl/7.35.0" {{< /text >}} {{< text bash >}} - $ export V2_POD=$(kubectl get pod -l app=httpbin,version=v2 -o jsonpath={.items..metadata.name}) - $ kubectl logs "$V2_POD" -c httpbin + $ kubectl logs deploy/httpbin-v2 -c httpbin {{< /text >}} -## 镜像流量到 v2{#mirroring-traffic-to-v2} - -1. 改变流量规则将流量镜像到 v2: - -{{< tabset category-name="config-api" >}} - -{{< tab name="Istio APIs" category-value="istio-apis" >}} - -{{< text bash >}} -$ kubectl apply -f - <}} +## 将流量镜像发送至 `httpbin-v2` {#mirroring-traffic-to-httpbin-v2} -这个路由规则发送 100% 流量到 `v1` 版本。最后一节表示您将 100% 的相同流量镜像(即发送)到 `httpbin:v2` 服务。 -当流量被镜像时,请求将发送到镜像服务中,并在 `headers` 中的 `Host/Authority` 属性值上追加 `-shadow`。 -例如 `cluster-1` 变为 `cluster-1-shadow`。 +1. 修改路由规则,将流量镜像发送至 `httpbin-v2`: -此外,重点注意这些被镜像的流量是『即发即弃』的,就是说镜像请求的响应会被丢弃。 + {{< tabset category-name="config-api" >}} + + {{< tab name="Istio APIs" category-value="istio-apis" >}} + + {{< text bash >}} + $ kubectl apply -f - <}} -您可以使用 `mirrorPercentage` 属性下的 `value` 字段来设置镜像流量的百分比,而不是镜像所有请求。如果没有这个属性,将镜像所有流量。 + 此路由规则将 100% 的流量发送到 `v1` 。`RequestMirror` 过滤器指定您想要将 100% + 的相同流量镜像(即也发送)到 `httpbin:v2` 服务。当流量被镜像时, + 请求将发送到镜像服务,其 Host/Authority 标头附加有 `-shadow`。例如,`cluster-1` 变为 `cluster-1-shadow`。 -{{< /tab >}} + 这个路由规则发送 100% 流量到 `v1` 版本。最后一节表示您将 100% 的相同流量镜像(即发送)到 `httpbin:v2` 服务。 + 当流量被镜像时,请求将发送到镜像服务中,并在 `headers` 中的 `Host/Authority` 属性值上追加 `-shadow`。 + 例如 `cluster-1` 变为 `cluster-1-shadow`。 -{{< tab name="Gateway API" category-value="gateway-api" >}} + 此外,重点注意这些被镜像的流量是“即发即弃”的,就是说镜像请求的响应会被丢弃。 -{{< text bash >}} -$ kubectl apply -f - <}} + + {{< tab name="Gateway API" category-value="gateway-api" >}} + + {{< text bash >}} + $ kubectl apply -f - <}} + EOF + {{< /text >}} -此路由规则将 100% 的流量发送到 `v1`。 -`RequestMirror` 过滤器指定您要将 100% 的相同流量镜像(即也发送)到 `httpbin:v2` 服务。 -当流量被镜像时,请求被发送到镜像服务,其 Host/Authority 请求头附加了 `-shadow`。 -例如,`cluster-1` 变为 `cluster-1-shadow`。 + 此路由规则将 100% 的流量发送到 `v1`。 + `RequestMirror` 过滤器指定您要将 100% 的相同流量镜像(即也发送)到 `httpbin:v2` 服务。 + 当流量被镜像时,请求被发送到镜像服务,其 Host/Authority 请求头附加了 `-shadow`。 + 例如,`cluster-1` 变为 `cluster-1-shadow`。 -此外,重要的是要注意这些请求被镜像为“即发即弃”,这意味着响应将被丢弃。 + 此外,重要的是要注意这些请求被镜像为“即发即弃”,这意味着响应将被丢弃。 -{{< /tab >}} + {{< /tab >}} -{{< /tabset >}} + {{< /tabset >}} -2) 发送流量: + 1. 发送流量: {{< text bash >}} - $ kubectl exec "${SLEEP_POD}" -c sleep -- curl -sS http://httpbin:8000/headers + $ kubectl exec deploy/sleep -c sleep -- curl -sS http://httpbin:8000/headers {{< /text >}} 现在就可以看到 `v1` 和 `v2` 版本中都有了访问日志。v2 版本中的访问日志就是由镜像流量产生的,这些请求的实际目标是 `v1` 版本。 {{< text bash >}} - $ kubectl logs "$V1_POD" -c httpbin + $ kubectl logs deploy/httpbin-v1 -c httpbin 127.0.0.1 - - [07/Mar/2018:19:02:43 +0000] "GET /headers HTTP/1.1" 200 321 "-" "curl/7.35.0" 127.0.0.1 - - [07/Mar/2018:19:26:44 +0000] "GET /headers HTTP/1.1" 200 321 "-" "curl/7.35.0" {{< /text >}} {{< text bash >}} - $ kubectl logs "$V2_POD" -c httpbin + $ kubectl logs deploy/httpbin-v2 -c httpbin 127.0.0.1 - - [07/Mar/2018:19:26:44 +0000] "GET /headers HTTP/1.1" 200 361 "-" "curl/7.35.0" {{< /text >}} -## 清理{#cleaning-up} +## 清理 {#cleaning-up} -1. 删除规则: +1. 删除规则: -{{< tabset category-name="config-api" >}} + {{< tabset category-name="config-api" >}} -{{< tab name="Istio APIs" category-value="istio-apis" >}} + {{< tab name="Istio APIs" category-value="istio-apis" >}} -{{< text bash >}} -$ kubectl delete virtualservice httpbin -$ kubectl delete destinationrule httpbin -{{< /text >}} + {{< text bash >}} + $ kubectl delete virtualservice httpbin + $ kubectl delete destinationrule httpbin + {{< /text >}} -{{< /tab >}} + {{< /tab >}} -{{< tab name="Gateway API" category-value="gateway-api" >}} + {{< tab name="Gateway API" category-value="gateway-api" >}} -{{< text bash >}} -$ kubectl delete httproute httpbin -$ kubectl delete svc httpbin-v1 httpbin-v2 -{{< /text >}} + {{< text bash >}} + $ kubectl delete httproute httpbin + $ kubectl delete svc httpbin-v1 httpbin-v2 + {{< /text >}} -{{< /tab >}} + {{< /tab >}} -{{< /tabset >}} + {{< /tabset >}} -2) 关闭 [Httpbin]({{< github_tree >}}/samples/httpbin) 服务和客户端: +1. 删除 `httpbin` 和 `sleep` 部署以及 `httpbin` 服务: {{< text bash >}} $ kubectl delete deploy httpbin-v1 httpbin-v2 sleep