[zh] sync /authorization/authz-tcp/ (#12437)

This commit is contained in:
Michael 2023-01-09 20:06:48 +08:00 committed by GitHub
parent 13c3d3e9e7
commit c71d4ceb16
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 14 additions and 14 deletions

View File

@ -20,11 +20,11 @@ test: yes
* 按照 [Istio 安装指南](/zh/docs/setup/install/istioctl/)安装 Istio。
* 在命名空间例如 `foo` 中部署两个工作负载,`sleep` 和 `tcp-echo`
这两个工作负载每个前面都会运行一个 Envoy 代理。
`tcp-echo` 工作负载会监听端口 9000、9001 和 9002并以前缀 `hello` 输出它收到的所有流量。
例如,如果你发送 "world" 给 `tcp-echo`,那么它将会回复 `hello world`
`tcp-echo` 的 Kubernetes 服务对象只声明了端口 9000 和 9001而省略了端口 9002。直通过滤器链将处理端口 9002 的流量。
使用以下命令部署示例命名空间和工作负载:
这两个工作负载每个前面都会运行一个 Envoy 代理。
`tcp-echo` 工作负载会监听端口 9000、9001 和 9002并以前缀 `hello` 输出它收到的所有流量。
例如,如果您发送 "world" 给 `tcp-echo`,那么它将会回复 `hello world`
`tcp-echo` 的 Kubernetes 服务对象只声明了端口 9000 和 9001而省略了端口 9002。直通过滤器链将处理端口 9002 的流量。
使用以下命令部署示例命名空间和工作负载:
{{< text bash >}}
$ kubectl create ns foo
@ -47,8 +47,8 @@ test: yes
{{< /text >}}
* 确认 `sleep` 可以成功与 `tcp-echo` 的端口 9002 交互。
您需要将流量直接发送到 `tcp-echo`pod IP因为在 `tcp-echo` 的 Kubernetes 服务对象中未定义端口 9002。
使用以下命令获取 pod IP 地址并发送请求:
您需要将流量直接发送到 `tcp-echo`Pod IP因为在 `tcp-echo` 的 Kubernetes 服务对象中未定义端口 9002。
使用以下命令获取 Pod IP 地址并发送请求:
{{< text bash >}}
$ TCP_ECHO_IP=$(kubectl get pod "$(kubectl get pod -l app=tcp-echo -n foo -o jsonpath={.items..metadata.name})" -n foo -o jsonpath="{.status.podIP}")
@ -64,11 +64,11 @@ test: yes
## 为 TCP 工作负载配置 ALLOW 授权策略{#configure-allow-authorization-policy-for-a-tcp-workload}
1. 在 `foo` 命名空间中为 `tcp-echo` 工作负载创建 `tcp-policy` 授权策略。
运行以下命令来应用策略以允许请求到端口 9000 和 9001
运行以下命令来应用策略以允许请求到端口 9000 和 9001
{{< text bash >}}
$ kubectl apply -f - <<EOF
apiVersion: security.istio.io/v1beta1
apiVersion: security.istio.io/v1
kind: AuthorizationPolicy
metadata:
name: tcp-policy
@ -101,7 +101,7 @@ test: yes
connection succeeded
{{< /text >}}
1. 验证对端口 9002 的请求是否被拒绝。即使未在 `tcp-echo` Kubernetes 服务对象中显式声明的端口,授权策略也将其应用于直通过滤器链。 运行以下命令并验证输出:
1. 验证对端口 9002 的请求是否被拒绝。即使未在 `tcp-echo` Kubernetes 服务对象中显式声明的端口,授权策略也将其应用于直通过滤器链。运行以下命令并验证输出:
{{< text bash >}}
$ kubectl exec "$(kubectl get pod -l app=sleep -n foo -o jsonpath={.items..metadata.name})" -c sleep -n foo -- sh -c "echo \"port 9002\" | nc $TCP_ECHO_IP 9002" | grep "hello" && echo 'connection succeeded' || echo 'connection rejected'
@ -112,7 +112,7 @@ test: yes
{{< text bash >}}
$ kubectl apply -f - <<EOF
apiVersion: security.istio.io/v1beta1
apiVersion: security.istio.io/v1
kind: AuthorizationPolicy
metadata:
name: tcp-policy
@ -139,7 +139,7 @@ test: yes
connection rejected
{{< /text >}}
1. 验证对端口 9001 的请求是否被拒绝。 发生这种情况是因为请求与任何 ALLOW 规则都不匹配。 运行以下命令并验证输出:
1. 验证对端口 9001 的请求是否被拒绝。发生这种情况是因为请求与任何 ALLOW 规则都不匹配。运行以下命令并验证输出:
{{< text bash >}}
$ kubectl exec "$(kubectl get pod -l app=sleep -n foo -o jsonpath={.items..metadata.name})" -c sleep -n foo -- sh -c 'echo "port 9001" | nc tcp-echo 9001' | grep "hello" && echo 'connection succeeded' || echo 'connection rejected'
@ -152,7 +152,7 @@ test: yes
{{< text bash >}}
$ kubectl apply -f - <<EOF
apiVersion: security.istio.io/v1beta1
apiVersion: security.istio.io/v1
kind: AuthorizationPolicy
metadata:
name: tcp-policy
@ -187,7 +187,7 @@ test: yes
{{< text bash >}}
$ kubectl apply -f - <<EOF
apiVersion: security.istio.io/v1beta1
apiVersion: security.istio.io/v1
kind: AuthorizationPolicy
metadata:
name: tcp-policy