仅限部分 pods 访问服务
Restrict access to service to only some pods
我在 pod 上有一个 mosquitto 代理 运行,此服务器作为 DNS 和 IP 地址的服务公开。
但是集群中的任何 pod 都可以访问此服务。
我想限制对此服务的访问,这样 pods 尝试连接到此 DNS 或 IP 地址应该只有在 pods 具有某些 name/metadata 时才能够。
我想一个解决方案是使用名称空间?还有什么其他解决方案?
您所描述的用例正是 NetworkPolicies 的用途。
基本上,您可以为 pods 定义选择器,网络流量应该受到限制(即您的蚊子代理)以及 pods 需要具备什么才能允许访问它。例如标签 "broker-access: true"
或任何似乎适合您的标签。
示例网络策略可能如下所示:
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: broker-policy
namespace: default
spec:
podSelector:
matchLabels:
role: message-broker
policyTypes:
- Ingress
ingress:
- from:
- podSelector:
matchLabels:
broker-access: true
ports:
- protocol: TCP
port: 6379
此网络策略将应用于带有标签 role=message-broker
的每个 pod。
它将限制所有传入流量,但来自端口 6379 上带有标签 broker-acces=true
的 pods 的流量除外。
希望这对您有所帮助,并为您的 NetworkPolicy 提供一些支架
我在 pod 上有一个 mosquitto 代理 运行,此服务器作为 DNS 和 IP 地址的服务公开。
但是集群中的任何 pod 都可以访问此服务。
我想限制对此服务的访问,这样 pods 尝试连接到此 DNS 或 IP 地址应该只有在 pods 具有某些 name/metadata 时才能够。
我想一个解决方案是使用名称空间?还有什么其他解决方案?
您所描述的用例正是 NetworkPolicies 的用途。
基本上,您可以为 pods 定义选择器,网络流量应该受到限制(即您的蚊子代理)以及 pods 需要具备什么才能允许访问它。例如标签 "broker-access: true"
或任何似乎适合您的标签。
示例网络策略可能如下所示:
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: broker-policy
namespace: default
spec:
podSelector:
matchLabels:
role: message-broker
policyTypes:
- Ingress
ingress:
- from:
- podSelector:
matchLabels:
broker-access: true
ports:
- protocol: TCP
port: 6379
此网络策略将应用于带有标签 role=message-broker
的每个 pod。
它将限制所有传入流量,但来自端口 6379 上带有标签 broker-acces=true
的 pods 的流量除外。
希望这对您有所帮助,并为您的 NetworkPolicy 提供一些支架