mirror of https://github.com/istio/istio.io.git
[zh] sync /authorization/authz-tcp/ (#12437)
This commit is contained in:
parent
13c3d3e9e7
commit
c71d4ceb16
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue