端口转发配置 #
本文档介绍如何配置端口转发功能。
什么是端口转发? #
PortForward 是一个 kwok
配置,允许用户定义和模拟到单个 Pod 的端口转发。
下面的 YAML 显示了 PortForward 资源的所有字段
kind: PortForward
apiVersion: kwok.x-k8s.io/v1alpha1
metadata:
name: <string>
namespace: <string>
spec:
forwards:
- ports:
- <int>
target:
port: <int>
address: <string>
command:
- <string>
- <string>
要将 PortForward 与要模拟的特定 Pod 关联,用户必须确保 metadata.name
和 metadata.namespace
与目标 Pod 的名称和命名空间不一致。
Pod 的附加设置通过 forwards
字段指定。forwards
字段按组组织,每个组对应于共享相同转发设置的端口集合。每个组由端口号列表(ports
)和共享转发设置(target
和 command
)组成。
如果在组中未给出ports
,则该组中的target
和command
将应用于目标 Pod 的所有端口。
target
字段指定要转发的目标地址。如果设置了 command
字段,则将忽略 target
字段。command
字段允许用户定义要执行的命令以转发端口。command
在 kwok 的容器中执行。command
应为字符串数组,其中第一个元素为命令,其余元素为参数。此外,命令应在容器的 PATH 中。
ClusterPortForward #
除了模拟单个 Pod 外,用户还可以通过 ClusterPortForward 模拟多个 Pod 的端口转发。
下面的 YAML 显示了 ClusterPortForward 资源的所有字段
kind: ClusterPortForward
apiVersion: kwok.x-k8s.io/v1alpha1
metadata:
name: <string>
spec:
selector:
matchNamespaces:
- <string>
matchNames:
- <string>
forwards:
- ports:
- <int>
target:
port: <int>
address: <string>
command:
- <string>
- <string>
与 PortForward 相比,其 metadata.name
和 metadata.namespace
必须与关联的 Pod 匹配,ClusterPortForward 有一个额外的 selector
字段,用于指定要模拟的目标 Pod。matchNamespaces
和 matchNames
都表示为列表,旨在通过不同级别获取 Pod 集合
- 如果
matchNamespaces
为空,则 ClusterPortForward 将应用于由kwok
管理且其名称列在matchNames
中的所有 Pod。 - 如果
matchNames
为空,则 ClusterPortForward 将应用于由kwok
管理且位于matchNamespaces
中列出的命名空间下的所有 Pod。 - 如果
matchNames
和matchNamespaces
都未设置,则 ClusterPortForward 将应用于kwok
管理的所有 Pod。
ClusterPortForward 的 forwards
字段与 PortForward 中的 forwards
字段具有相同的语义。