
Kubernetesã®NetworkPolicyã§ãå šæåŠããšãå šèš±å¯ããèšå®ããæ¹æ³
kubernetesã§Podå士ã®éä¿¡ãå¶åŸ¡ãããå Žé¢ã£ãŠãæå€ãšãããŸãããã
AWSã ãšEC2å士ã®éä¿¡ã¯Security Groupã§ã³ã³ãããŒã«ã§ããŸããã
kubernetesã§Podéã®éä¿¡ãå¶åŸ¡ãããå Žåã«åºãŠããã®ãNetworkPolicyã§ãã
å®éã«è§Šã£ãŠããäžã§ããããã¡ãã£ãšåããã¥ãããªããšæãããã€ã³ãããããŸããã
ããããå
šæåŠããšãå
šèš±å¯ãã®æžãæ¹ã§ãã
ingress: [] ãå
šæåŠã
ingress: [{}] ãå
šèš±å¯ã
ã±ã£ãšèŠã¯ã»ãšãã©åããªã®ã«ãåãã¯çéã§ãã
ã¡ãã£ãšããéããªã®ã«çµæã倧ããå€ããã®ã§ãããã¯äžåºŠæŽçããŠãããããšããã§ãã
(1) å šæåŠãèšå®ããæ¹æ³ïŒingress: []ïŒ
äŸãã°ã以äžã®ãããªNetworkPolicyããããšããŸãã
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: nginx-deny-all-ingress
namespace: network-test
spec:
podSelector:
matchLabels:
app: nginx
policyTypes:
- Ingress
ingress: [] # å
šæåŠ
ãã®äžã«ãã ingress: [] ããã€ã³ãã§ãã
ããã¯èš±å¯ã«ãŒã«ã1ã€ããªãç¶æ ã衚ããŠããŸãã
NetworkPolicyã¯ãèš±å¯ãããéä¿¡ã ããéãä»çµã¿ããªã®ã§ã
èš±å¯ãååšããªãå Žåã¯ããã¹ãŠæåŠãããŸãã
ããšãããªããå
¥é€šãªã¹ããçšæããã®ã«äžèº«ã空ã®ç¶æ
ã§ãã
ãªã¹ãèªäœã¯ããã®ã«ã誰ãååãæžãããŠããªãã®ã§ãçµæãšããŠå
šå¡å
¥ããŸããã
ãã®ããããã®èšå®ãé©çšãããšå¯Ÿè±¡ã®Podã¯å€éšããã®éä¿¡ãåãä»ããªããªããŸãã
(2) å šèš±å¯ãèšå®ããæ¹æ³ïŒingress: [{}]ïŒ
ä»åºŠã¯å šèš±å¯ã®ãã¿ãŒã³ã§ãã
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: nginx-allow-all-ingress
namespace: network-test
spec:
podSelector:
matchLabels:
app: nginx
policyTypes:
- Ingress
ingress:
- {}
or
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: nginx-allow-all-ingress
namespace: network-test
spec:
podSelector:
matchLabels:
app: nginx
policyTypes:
- Ingress
ingress: [{}]
ãã¡ãã¯æ¡ä»¶ãªãã®èš±å¯ã«ãŒã«ã1ã€ããç¶æ ã§ãã
{} ã¯éä¿¡å
ãããŒãã®æ¡ä»¶ãæå®ããŠããªãããã
ã©ãããã§ããã©ã®ããŒãã§ãéä¿¡ãåãå
¥ãã圢ã«ãªããŸãã
ã€ã¡ãŒãžãšããŠã¯ãå
¥é€šã«ãŒã«ã«ãæ¡ä»¶ãªãã§éããŠããããš1è¡æžãããŠããç¶æ
ã§ãã
现ããå¶éããªãã¶ããçµæãšããŠå
šå¡éããããã«ãªããŸãã
ãããã°ãçé確èªã®ãšãã«äœ¿ãããããšãå€ãèšå®ã§ãã
ããã¥ã¡ã³ããªã©ã§ã¯ - {} ã®åœ¢åŒã§æžãããŠããããšãå€ãã§ããã
èªåã¯å
šæåŠãšã®å¯Ÿæ¯ãåãããããããããã« ingress: [{}] ãšæžãããšããããŸãã
ingress: [] ãšäžŠã¹ããšãã«ã空ãªã®ãã«ãŒã«ãããã®ãã倿ãããããªãããã§ãã
(3) 䌌ãŠããã®ã«çµæãéã«ãªãçç±
ãã®2ã€ã®éãã¯ãã«ãŒã«ãååšãããã©ãããã§ãã
ingress: []
ã«ãŒã«ã¯ãããäžèº«ã空
ãã®ããèš±å¯ãããéä¿¡ã¯ãªãingress: [{}]
æ¡ä»¶ãªãã®ã«ãŒã«ã1ã€ãã
ãã®ãããã¹ãŠã®éä¿¡ãèš±å¯ããã
åãããã«èŠããŠãã
çæ¹ã¯ãäœãèš±å¯ããŠããªãããããçæ¹ã¯ãæ¡ä»¶ãªãã§èš±å¯ããŠããããšããéãããããŸãã
ãããåãéãããšãæå³ããªãéä¿¡ç¶æ ã«ãªãã®ã§æ³šæãå¿ èŠã§ãã
(4) ããããåéã
(1) NetworkPolicyãååšããªãå Žå
å¶åŸ¡èªäœããªãç¶æ ãªã®ã§ãåºæ¬çã«ã¯éä¿¡ã§ããŸãã
(2) NetworkPolicyãååšã㊠ingress: [] ã®å Žå
察象ã®Podã¯å€éšããã®éä¿¡ãåãä»ããªããªããŸãã
ãæžããŠããªãããšãç©ºã§æžããŠãããã¯æå³ãéãããšããç¹ããã€ã³ãã§ãã
(5) å®åã§ã®äœ¿ãåã
(1) ãŸãå šéšéãããå Žå
ingress: []
äžèŠãªéä¿¡ãå ã«æ¢ããŠãå¿ èŠãªãã®ã ãåŸããèš±å¯ããŠãã圢ã§ãã
(2) äžæçã«å šéšéãããå Žå
ingress:
- {}
or
ingress: [{}]
çé確èªããããã°æã«ãäžæçã«éä¿¡ãéãããå Žåã«äœ¿ãããŸãã
(6) ãµã³ãã«ã§å®éã«ç¢ºèªããŠã¿ã
å®éã«è©Šããšããã®éãã¯ããªãã¯ã£ããäœæã§ããŸãã
以äžã§ã¯ãcurl ãå ¥ã£ãŠããPodãã nginx ã«éä¿¡ã§ãããã©ããã確èªããŸãã
ãŸãã¯æ¬¡ã®ãããã§ã¹ãã apply ããŸãã
apiVersion: v1
kind: Pod
metadata:
name: curl
namespace: network-test
labels:
app: curl
spec:
containers:
- name: curl
image: curlimages/curl:latest
command: ["sleep", "infinity"]
restartPolicy: Always
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx
namespace: network-test
spec:
replicas: 1
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:stable
ports:
- containerPort: 80
securityContext:
capabilities:
add: ["NET_ADMIN"]
---
apiVersion: v1
kind: Service
metadata:
name: nginx
namespace: network-test
spec:
selector:
app: nginx
ports:
- port: 80
targetPort: 80
---
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: nginx-deny-all-ingress
namespace: network-test
spec:
podSelector:
matchLabels:
app: nginx
policyTypes:
- Ingress
ingress: [] # å
šæåŠ
# ingress: [{}] # å
šèš±å¯
apply ããããšã以äžã®ã³ãã³ãã§ç¢ºèªã§ããŸãã
kubectl exec -n network-test curl -- curl -v http://nginx.network-test.svc.cluster.local:80
ingress: [] ã®ç¶æ
ã§ã¯éä¿¡ã§ããã
ingress: [{}] ã«å€æŽãããšéä¿¡ã§ããããã«ãªããŸãã
èŠãç®ã¯å°ãããéããªãã®ã«ãçµæãã¯ã£ããå€ããã®ã§ããã®å·®ã¯äœæããŠãããšèšæ¶ã«æ®ããããã§ãã²è©ŠããŠã¿ãŠãã ãã
ãŸãšã
Kubernetesã®NetworkPolicyã§å šæåŠãšå šèš±å¯ãèšå®ããå Žåãingress ã®æžãæ¹ããã®ãŸãŸæåã«çŽçµããŸãã
ingress: [] ã¯èš±å¯ã«ãŒã«ããªãããå
šæåŠã
ingress: [{}] ã¯æ¡ä»¶ãªãã®èš±å¯ã«ãŒã«ãããããå
šèš±å¯ã«ãªããŸãã
Yamlã®é
åã®æžãæ¹ããªããšãªãèŠæãªãã§ãããâŠ
NetworkPolicyã§é
åãåºãŠãããšãäžç¬æèãæ¢ãŸã£ãŠããŸãããšããããŸã