• 网络策略应用场景
• 网络策略概述
• 网络访问控制5个案例

网络访问控制:应用场景

默认情况下,Kubernetes 集群网络没任何网络限制,Pod 可以与任何其他 Pod 通信,在某些场景下就需要进行网络控制,
减少网络攻击面,提高安全性,这就会用到网络策略。
网络策略(Network Policy):是一个K8s资源,用于限制Pod出入流量,提供Pod级别和Namespace级别网络访问控制。
网络策略的应用场景:
• 应用程序间的访问控制,例如项目A不能访问项目B的Pod
• 开发环境命名空间不能访问测试环境命名空间Pod
• 当Pod暴露到外部时,需要做Pod白名单
• 多租户网络环境隔离

网络访问控制:网络策略概述

在这里插入图片描述

网络访问控制:网络策略概述

在这里插入图片描述

网络访问控制案例

案例1:拒绝命名空间下所有Pod入、出站流量

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: deny-all
namespace: test
spec:
podSelector: {} # 匹配本命名空间所有pod
policyTypes: 
- Ingress
- Egress
# ingress和egress没有指定规则,则不允许任何流量进出pod

案例2:拒绝其他命名空间Pod访问

需求:test命名空间下所有pod可以互相访问,也可以访问其他
命名空间Pod,但其他命名空间不能访问test命名空间Pod。

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: deny-all-namespaces 
namespace: test
spec:
podSelector: {} 
policyTypes:
- Ingress
ingress:
- from:
- podSelector: {} # 匹配本命名空间所有pod

案例3:允许其他命名空间Pod访问指定应用

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: allow-all-namespaces 
namespace: test
spec:
podSelector: 
matchLabels:
app: web
policyTypes:
- Ingress
ingress:
- from:
- namespaceSelector: {} # 匹配所有命名空间的pod

案例4:同一个命名空间下应用之间限制访问

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: app-to-app
namespace: test
spec:
podSelector:
matchLabels:
run: web
policyTypes:
- Ingress
ingress:
- from:
- podSelector:
matchLabels:
run: client1
ports:
- protocol: TCP
port: 80

案例5:只允许指定命名空间中的应用访问

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: dev-web
namespace: dev
spec:
podSelector:
matchLabels:
env: dev
policyTypes:
- Ingress
ingress:
# 满足允许prod命名空间中的pod访问
- from:
- namespaceSelector:
matchLabels:
env: prod
# 允许pod标签为app=client1的pod访问,所有命名空间
- from:
- namespaceSelector: {}
podSelector:
matchLabels:
app: client1
Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐