[CKS] K8S NetworkPolicy Set Up
最近准备花一周的时间准备CKS考试,在准备考试中发现有一个题目关于不安全项目修复的题目。
What’s the NetworkPolicy
关于network policy的介绍可以查看: https://kubernetes.io/docs/concepts/services-networking/network-policies/
Question 1
A default deny network policy is a policy that blocks all traffic in a namespace by default.
Create a network policy called default-deny that blocks all incoming traffic to all Pods in the mordor namespace.
本题的意思是需要创建一个default-deny的policy,他可以拒绝所有来自mordor命名空间下pod的访问流量
Practice
创建如下default-deny.yaml
文件,文件内容为
创建资源
kubectl create -f default-deny.yml
Question 2
Create a network policy called ‘mtdoom-np’ that allows specific traffic on port 80 to reach the ‘mtdoom’ Pod in the mordor namespace.
The policy should allow incoming traffic:
-
From all Pods in the ‘frodo’ namespace.
-
From all Pods with the label ‘app=sam’, regardless of which namespace they are in.
这个题的意思是创建一个名字叫mtdoom-np的network policy,它允许特定的流量到达mtdoom pod下。以下是规则 -
所有来自frodo namespace下的流量
-
所有带有label为app=sam的流量
对于目标pod可以使用podSelector的label进行筛选podSelector.matchLabels
通过下面的命令查看labels(我看到我的label是app=mtdoom
):
kubectl get pod mtdoom -n mordor --show-labels
在这里对于namespace流量的筛选可以使用namespaceSelector下的label进行筛选namespaceSelector.matchLabels
通过下面的命令查看labels(我看到我的事app=frodo
)
kubectl get ns frodo --show-labels
对于pod的流量可以通过podSelector的label进行筛选podSelector.matchLabels
所以创建mtdoom-np.yml
文件,文件内容如下:
创建networkpolicy
kubectl create -f mtdoom-np.yml
Ingress和Egress的区别?
Ingress和Egress是网络中的两个术语,用来描述数据流动的方向。
Ingress(入口)是指数据从外部网络进入内部网络的方向。在网络中,Ingress点是数据从外部网络进入内部网络的地方。例如,当你从互联网上访问一个网站时,数据就是通过Ingress点从互联网进入网站的服务器。
Egress(出口)是指数据从内部网络流出到外部网络的方向。在网络中,Egress点是数据从内部网络流出的地方。例如,当你从一个网站下载文件时,数据就是通过Egress点从网站的服务器流向你的设备。
总结来说,Ingress是数据流动的入口方向,而Egress是数据流动的出口方向。