8.3. 部署 Ingress Node Firewall Operator
前提条件
- 已安装 Ingress Node Firewall Operator。
流程
要拒绝 Ingress Node Firewall Operator,请创建一个 IngressNodeFirewallConfig 自定义资源,该资源将部署 Operator 的守护进程集。您可以通过应用防火墙规则,将一个或多个 IngressNodeFirewall CRD 部署到节点。
-
在
openshift-ingress-node-firewall命名空间中创建IngressNodeFirewallConfig,名为ingressnodefirewallconfig。 运行以下命令来部署 Ingress Node Firewall Operator 规则:
$ oc apply -f rule.yaml
8.3.1. Ingress 节点防火墙配置对象 复制链接链接已复制到粘贴板!
下表中描述了 Ingress Node Firewall 配置对象的字段:
| 字段 | 类型 | 描述 |
|---|---|---|
|
|
|
CR 对象的名称。防火墙规则对象的名称必须是 |
|
|
|
Ingress Firewall Operator CR 对象的命名空间。 |
|
|
| 通过指定节点标签 (label) 用于目标节点的节点选择约束。例如:
注意
|
Operator 使用 CR,并在与 nodeSelector 匹配的所有节点上创建一个入口节点防火墙守护进程集。
8.3.2. Ingress Node Firewall Operator 示例配置 复制链接链接已复制到粘贴板!
以下示例中指定了完整的 Ingress Node 防火墙配置:
Ingress 节点防火墙配置对象示例
apiVersion: ingressnodefirewall.openshift.io/v1alpha1
kind: IngressNodeFirewallConfig
metadata:
name: ingressnodefirewallconfig
namespace: openshift-ingress-node-firewall
spec:
nodeSelector:
node-role.kubernetes.io/worker: ""
Operator 使用 CR,并在与 nodeSelector 匹配的所有节点上创建一个入口节点防火墙守护进程集。
8.3.3. Ingress 节点防火墙规则对象 复制链接链接已复制到粘贴板!
下表中描述了 Ingress Node Firewall 规则对象的字段:
| 字段 | 类型 | 描述 |
|---|---|---|
|
|
| CR 对象的名称。 |
|
|
|
此对象的字段指定要应用防火墙规则的接口。例如, |
|
|
|
您可以使用 |
|
|
|
|
8.3.3.1. Ingress 对象配置 复制链接链接已复制到粘贴板!
ingress 对象的值在下表中定义:
| 字段 | 类型 | 描述 |
|---|---|---|
|
|
| 允许您设置 CIDR 块。您可以从不同地址系列配置多个 CIDR。 注意
不同的 CIDR 允许您使用相同的顺序规则。如果同一节点有多个 |
|
|
|
对于每个
将 注意 Ingress 防火墙规则使用阻止任何无效配置的验证 Webhook 进行验证。验证 Webhook 会阻止阻塞任何关键集群服务,如 API 服务器或 SSH。 |
8.3.3.2. Ingress 节点防火墙规则对象示例 复制链接链接已复制到粘贴板!
以下示例中指定了完整的 Ingress Node 防火墙配置:
Ingress 节点防火墙配置示例
apiVersion: ingressnodefirewall.openshift.io/v1alpha1
kind: IngressNodeFirewall
metadata:
name: ingressnodefirewall
spec:
interfaces:
- eth0
nodeSelector:
matchLabels:
<ingress_firewall_label_name>: <label_value>
ingress:
- sourceCIDRs:
- 172.16.0.0/12
rules:
- order: 10
protocolConfig:
protocol: ICMP
icmp:
icmpType: 8 #ICMP Echo request
action: Deny
- order: 20
protocolConfig:
protocol: TCP
tcp:
ports: "8000-9000"
action: Deny
- sourceCIDRs:
- fc00:f853:ccd:e793::0/64
rules:
- order: 10
protocolConfig:
protocol: ICMPv6
icmpv6:
icmpType: 128 #ICMPV6 Echo request
action: Deny
- 1
- 节点上必须存在 <label_name> 和 <label_value>,且必须与应用到您希望
ingressfirewallconfigCR 运行的节点的nodeselector标签和值匹配。<label_value> 可以是true或false。通过使用nodeSelector标签,您可以针对单独的节点组为目标,以使用ingressfirewallconfigCR 应用不同的规则。
8.3.3.3. 零信任 Ingress Node Firewall 规则对象示例 复制链接链接已复制到粘贴板!
零信任 Ingress 节点防火墙规则可为多接口集群提供额外的安全性。例如,您可以使用零信任 Ingress Node Firewall 规则来丢弃除 SSH 之外的特定接口上的网络流量。
以下示例中指定了零信任 Ingress Node Firewall 规则集的完整配置:
用户需要为其提供应用程序使用的所有端口添加到允许列表,以确保正常工作。
零信任 Ingress 节点防火墙规则示例
apiVersion: ingressnodefirewall.openshift.io/v1alpha1
kind: IngressNodeFirewall
metadata:
name: ingressnodefirewall-zero-trust
spec:
interfaces:
- eth1
nodeSelector:
matchLabels:
<ingress_firewall_label_name>: <label_value>
ingress:
- sourceCIDRs:
- 0.0.0.0/0
rules:
- order: 10
protocolConfig:
protocol: TCP
tcp:
ports: 22
action: Allow
- order: 20
action: Deny