题目三 Networkpolicy
在namespace my-app中创建一个allow-port-from-namespace的新networkpolicy,确保新的NetwoekPolicy允许namespace big-corp中的Pods连接到namespace my-app中的Pod的端口8080。
进一步确认Networkolicy:
不允许对没有监听 8080 的Pods访问
不允许不来自namespace my-app 的Pods访问
答案:
切换考试环境
kubectl config use-context (切换环境)
kubectl label namespace big-corp name=big-corp #将命名空间标签
#如果访问者的 namespace 没有标签 label,则需要手动打一个。如果有一个独特的标签 label,则也可以直接使用
vim networkpolicy.yaml
#在k8s官方找到以下对应的位置,将以下内容复制下来,下方有复制好的,可以直接使用
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: test-network-policy
namespace: default
spec:
podSelector:
matchLabels:
role: db
policyTypes:
- Ingress
- Egress
ingress:
- from:
- ipBlock:
cidr: 172.17.0.0/16
except:
- 172.17.1.0/24
- namespaceSelector:
matchLabels:
project: myproject
- podSelector:
matchLabels:
role: frontend
ports:
- protocol: TCP
port: 6379
egress:
- to:
- ipBlock:
cidr: 10.0.0.0/24
ports:
- protocol: TCP
port: 5978
按照题目要求修改内容
修改前
修改后
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: allow-port-from-namespace
namespace: my-app
spec:
podSelector:
matchLabels: {}
policyTypes:
- Ingress
ingress:
- from:
- namespaceSelector:
matchLabels:
project: big-corp
ports:
- protocol: TCP
port: 8080
kubectl apply -f networkpolicy.yaml
验证:
kubectl describe networkpolicy -n my-app