第 1 章 了解网络策略 API
网络策略使用集群范围的网络策略 API 定义。通过在这些不同级别上定义网络策略,您可以为集群创建复杂的网络安全配置,包括完整的多租户隔离。
网络策略及其范围
- 集群范围的网络策略
集群和网络管理员可以使用 AdminNetworkPolicy 在集群级别上定义网络策略。AdminNetworkPolicy 功能由两个 API 组成:
AdminNetworkPolicy
API 和BaselineAdminNetworkPolicy
API。这些 API 用于设置可应用到整个集群的规则,或委派给命名空间范围的NetworkPolicy
。当设置为 "Allow" 或 "Deny" 时,使用
AdminNetworkPolicy
API 定义的策略优先于所有其他策略类型。但是,管理员也可以使用"Pass"将给定策略负责委派给命名空间范围的NetworkPolicy
,以允许应用程序开发人员和命名空间租户控制其项目网络安全性的特定方面。使用
BaselineAdminNetworkPolicy
API 定义的策略仅在没有其他网络策略覆盖它们时才适用。当您使用AdminNetworkPolicy
API 将网络策略方面委托给命名空间范围的NetworkPolicy
时,您还应在BaselineAdminNetworkPolicy
中定义合理的最小限制。这样可确保在命名空间NetworkPolicy
没有足够保护时,集群级别的网络安全性基准级别。- 命名空间范围的网络策略
-
应用程序开发人员和命名空间租户可以使用
NetworkPolicy
API 为特定命名空间定义网络策略规则。一个命名空间的NetworkPolicy
中的规则优先于使用 BaselineAdminNetworkPolicy API 配置的集群范围规则,或用于集群范围AdminNetworkPolicy
API 中委派或"传递"的集群范围规则。
如何评估和应用网络策略
当建立网络连接时,网络供应商(默认为 OVN-Kubernetes)会根据网络策略规则检查连接详情,以确定如何处理连接。
OVN-Kubernetes 按以下顺序评估针对网络策略对象的连接:
在 AdminNetworkPolicy 层检查 是否有匹配项。
-
如果连接与
Allow
或Deny
规则匹配,请按照该规则和停止评估。 -
如果连接与
Pass
规则匹配,请移到 NetworkPolicy 层。
-
如果连接与
在 NetworkPolicy 层检查 是否有匹配项。
- 如果连接与规则匹配,请按照该规则进行操作并停止评估。
- 如果没有找到匹配项,请移到 BaselineAdminNetworkPolicy 层。
- 遵循 BaselineAdminNetworkPolicy 层中的匹配规则。
图 1.1. OVN-Kubernetes 评估网络策略
1.1. AdminNetworkPolicy 和 NetworkPolicy 自定义资源之间的主要区别 复制链接链接已复制到粘贴板!
下表解释了集群范围的 AdminNetworkPolicy
API 和命名空间范围 NetworkPolicy
API 之间的主要区别。
策略元素 | AdminNetworkPolicy | NetworkPolicy |
---|---|---|
适用的用户 | 集群管理员 | 命名空间所有者 |
影响范围 | Cluster | Namespace |
丢弃流量 |
当显式 |
在策略创建时通过隐式 |
委派流量 |
| 不适用。 |
允许流量 |
显式 | 所有规则的默认操作都是 allow。 |
策略中的规则优先级 | 取决于它们出现在 ANP 中的顺序。位置更高的规则有更高的优先级。 | 规则是添加的。 |
策略优先级 |
在 ANP 中, | 在策略之间没有策略排序。 |
功能优先级 | 首先通过 1 层 ACL 和 BANP 评估,最后通过第 3 层 ACL 评估。 | 在 ANP 之后,BANP 之前强制实施,它们会在 ACL 层 2 中进行评估。 |
匹配 pod 选择 | 在命名空间之间可应用不同的规则。 | 可以在单一命名空间中的 pod 之间应用不同的规则。 |
集群出口流量 |
通过 |
通过 |
集群入口流量 | 不支持。 | 不支持。 |
完全限定域名 (FQDN) 对等支持 | 不支持。 | 不支持。 |
命名空间选择器 |
支持通过使用 |
支持使用 |