sup*_*set 7 kubernetes azure-aks
我尝试在我的 kubernetes 集群中实施网络策略,以将我的 Pod 隔离在命名空间中,但仍然允许它们访问互联网,因为我使用 Azure MFA 进行身份验证。
这是我尝试过的,但似乎无法让它发挥作用。入口按预期工作,但这些策略阻止所有出口。
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: default-deny-all
spec:
podSelector: {}
policyTypes:
- Ingress
Run Code Online (Sandbox Code Playgroud)
kind: NetworkPolicy
apiVersion: networking.k8s.io/v1
metadata:
name: grafana-policy
namespace: default
spec:
podSelector:
matchLabels:
app: grafana
ingress:
- from:
- podSelector:
matchLabels:
app: nginx-ingress
Run Code Online (Sandbox Code Playgroud)
谁能告诉我如何使上述配置工作,以便我也允许互联网流量但阻止其他 POD 的流量?
小智 12
尝试在命名空间上添加默认拒绝所有网络策略:
kind: NetworkPolicy
apiVersion: networking.k8s.io/v1
metadata:
name: default-deny-all
spec:
podSelector: {}
policyTypes:
- Ingress
- Egress
Run Code Online (Sandbox Code Playgroud)
然后添加允许互联网策略:
kind: NetworkPolicy
apiVersion: networking.k8s.io/v1
metadata:
name: allow-internet-only
spec:
podSelector: {}
policyTypes:
- Egress
egress:
- to:
- ipBlock:
cidr: 0.0.0.0/0
except:
- 10.0.0.0/8
- 192.168.0.0/16
- 172.16.0.0/20
Run Code Online (Sandbox Code Playgroud)
这将阻止除互联网出站之外的所有流量。在该allow-internet-only
策略中,所有私有 IP 都有一个例外,这将阻止 Pod 到 Pod 的通信。
如果您需要 DNS 查找,您还必须允许从核心 DNS 的出口kube-system
,因为该default-deny-all
策略将阻止 DNS 查询。
wei*_*eld -1
你可以这样尝试吗?
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: default-deny-all
spec:
podSelector: {}
policyTypes:
- Ingress,Egress
egress:
- to:
- ipBlock:
cidr: 0.0.0.0/0
Run Code Online (Sandbox Code Playgroud)
它应该允许出口到所有目的地。但如果目的地是一个 Pod,它应该被相同 NetworkPolicy 缺少入口规则的阻止。
归档时间: |
|
查看次数: |
8179 次 |
最近记录: |