kubernetes - 限制对服务的访问仅限于某些 pod
问题描述
我有一个在 pod 上运行的 mosquitto 代理,该服务器作为 DNS 和 IP 地址作为服务公开。
但是集群中的任何 pod 都可以访问此服务。
我想限制对此服务的访问,以便尝试连接到此 DNS 或 IP 地址的 pod 只有在 pod 具有特定名称/元数据的情况下才能进行。
我猜一种解决方案是使用命名空间?还有什么其他解决方案?
解决方案
您描述的 UseCase 正是NetworkPolicies的用途。
基本上,您为应该限制网络流量的 pod 定义选择器(即您的蚊子代理)以及为了被允许访问它而需要具有的特定 pod。例如标签"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
此网络策略将应用于每个带有 label 的 pod role=message-broker
。它将限制所有传入流量,但来自broker-acces=true
端口 6379 上带有标签的 Pod 的流量除外。
希望这会有所帮助,并为您的 NetworkPolicy 提供一些帮助
推荐阅读
- java - 哪种 JDBC 批量删除策略最适合性能?
- reactjs - 如何使用 Local-Npm 在本地安装包
- react-native - 不变违规:requireNativeComponent:在 UIManager 中找不到“RNCSafeAreaProvider”
- matplotlib - matplotlib 中的热图网格
- javascript - 我如何解码代码?
- c++ - Opengl 问题:很可能是简单的纹理问题
- c++ - 如何使用lldb在manjaro中以lz4文件格式调试coredump?
- r - 在 R 中使用 paste0() 在单词之间留下很多空格
- java - 在 Android Studio 开发中实现外部 Java 类
- sql - SQL:如何选择具有至少 2 个特定值的另一列的所有列?[使用 mariadb]