α
αααΆαα ααααααα α’ααααα·ααααα’ααααα - Reuven Harrison - ααΆααααα·αααααααΆα 20 ααααΆααααα»αααΆαα’αα·αααααααααααα·ααΈ α αΎααααααααααααααΊααΆ CTO αα·αααΆαα ααααΆααα·ααα Tufin αααααΆαααα»αα αα»ααααααααααΆααααααααααααααααααΆαααααα·αα»αα αααααααααααΆααα
αΆαααα»ααααααΆααααααααΆα Kubernetes ααΆααΆαααΆααααααααααααΆααααΎααααΈαααα
αααααααΆααα
αααα»αα
ααααααα½α ααΆααααααΏααΆααααΆααΆαα·αααΆααααα½ααααααα»αααΆαα’αα»ααααααΆαααααααα αααααΆααααα (ααΆαααααΊ) ααΆααααααααααααΎα±αααααααΎαα‘αΎαααΌαααΆααααααΉαααααα’αααα―αααααααα»ααααα αΆααα αα·ααα½ααα½ααααααα»αααΆααααααΎαααΆαααααααα
ααΆααααααααα
αΆαααΆα
αα
ααααααααααα αααα»αα αα»αααΆα αααΎααααα»αααααΎαααΎα Kubernetes ααΆααααααααΆααα‘αΎα ααΎααααΈααααΎαααΆααααααα·ααΈαααααα½αααα α αααΆααα’αΆααααααααΎαααααα·ααΈαααααΊαααααααΆαα αααα’αααααααα α Kubernetes ααΆ "ααααααααααααα·ααααα·ααΆαααααΈαααααΆααααααααααααα·αααααα"α ααααα·α ααααα Kubernetes (α¬ k8s) αααα»αα αΆααααααΎαααααΌαααΆααααααΆααΆαααααααααΆααααα’αΆααΈααααα αααααΆαααΆαα±ααααΆαααΆααααα αααααΎαααΆαα’αΆααΈααααααααααΆαααΆαα αΆαααα»α αα½αααΆαααα»ααααα·ααΆααααααΆααααααα
αααααΆααα’αααααααΆααααααααααα·αα»ααααααΆαααΆαααΏαααααααααααΆαααααΎααΆαααΆαα½α Kubernetes αααααΆαααααααΆαααΎααααααα·ααΆαααα’αΆα ααΆααΆαααααΎααα·αααααΆααα α’αα»ααααΆαααααααααΆαα
ααααα»ααααααααααααΉααα½αα’αααα±αααααα’αααΈααΆαααΆαααΆααααα»ααααααααΆααααααααΆαα αααααΈααααααααα½αααΆαα»αααααΆααΈα αααΆαααααααΆαααααααΆααααααΎαααααααΆα ααΆααααΉααα·ααΆαα’αααΈαααα αΆαα½αα ααα½α αα·ααααααααΆαααααΆααααααΉααα½αααΆαααΆααααααα·ααΈαα αααα»α Kubernetes α
αααααΆααααααααΆα Kubernetes
ααααααΆαααααααααΆααααααΆα Kubernetes α’αα»ααααΆαα±ααα’ααααααααααααα’αααααααααααααααα·ααΈαααααΆαααΆαααααααΆααα ααΎαααα·ααΆαα αααααΆαααααααΆα (ααΈααΈαα αααα»αααααΌ OSI) α αααααΆααααααααΆααααααααααααα·αααααααα·αααααααα½αα ααα½ααααααααΆααααααΎαααααΎα ααΌα ααΆααΆαααααααααα OSI αααααΆαα 7 αα·αααΆαααααΎαααΆαααααΆαααα αα ααα»αααααα½ααααααααααΌααααααΆααααΌαααααΆααααα»ααααα·ααΆααααααΆααααααΆα ααα»α α αΆααααααΎαααααα’α
αααααΆααααααααΆααααααααααααααΆαααααααααΆααα
ααααα»αααΆαααΆααα αααα»α Kubernetes ααααΌαααΆαα ααα αΆαααΆαααααα ααααα½αααΆααα»ααα½α α¬α αααΎααααααΆαααααααΆαααΆαα½αααααΆα Kubernetes αααααααααΈαα½ααααΌαα’αΆααααααΆα IP αααα’αΆα α αΌαααααΎααΆαααΈααααααααααααα αααααΆααααααααΆα Kubernetes αααααααΆαα’αα»ααααΆαα αΌαααααΎαααααΆαααααα»ααααα ααΆαααααααΌα ααααΆααααααα»ααα»ααααα·ααΆααα αααα»ααααααααΌαααΆαααααΎ ααΎααααΈαααααααααααΆαα αΌαααααΎαααΆαααΈααα·αααα·αα
ααΆαααααααααααΆααααααααΆα
ααΌα
ααΆααααΆα Kubernetes αααααααα αααααΆααααααααΆαααααΌαααΆαααααααα
αααα»α YAML α αα
αααα»αα§ααΆα αααααΆαααααααααααα·ααΈ balance
ααΎαααΆαα
αΌαααααΎ postgres
:
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: default.postgres
namespace: default
spec:
podSelector:
matchLabels:
app: postgres
ingress:
- from:
- podSelector:
matchLabels:
app: balance
policyTypes:
- Ingress
(α
αααΆαα ααααααα ααΌαααα’ααααααααα ααΌα
ααΆααΌαααα’ααααααααααααααααΆααΆαααααααααΆααααΆααα’αα αα·αααααΌαααΆααααααΎααααααααΎα§ααααα Kubernetes ααΎαα‘αΎα ααα»ααααααααΎα§ααααα Tufin Orca αααααααΌαααΆααααααΎαα‘αΎαααααααα»αα αα»αααααα’ααααα·ααααα’αααααααΎα α αΎααααααααΌαααΆαααΎαα‘αΎααα
α
α»ααααα
αααααααααΆααα)
α ααααααΉαααΆααΌαααααΆααα YAML ααΊααααΌαααΆαααΆαααΆαααΎααααΈααααααααααΆααααααααΆαααααΆαααααα½αααααα’αααα ααΆααΆαααααΊααα’ααααΎααΆαα αΌααααααΆαα (αααααΆαααααααααααΆ αα·ααααααααΆαα)α ααΆαα»α αΌααααααΆααααΆαααααα·αααα·ααααααΆαα»α αΌααααααΆααααααα αα·ααααα»ααα ααΆαααΎααΆα ααΆαα»ααααΈαααααααΈα αΆααααααΎαααααα αααααΆ ααΆαα»ααααααααααΆααα’ααααΆααααααα ααααααααααΉα.
αααααΆααααΈαα·αααααΆα’αααΈαααααΆααααα
αααα»α YAML ααΌαααααΎ
kubectl create -f policy.yaml
ααΆαααααααααααΆααααααααΆα
ααΆαααααααααααΆααααααααΆα Kubernetes αα½αααΆαααΆαα»αα½αα
-
podSelector
α ααααα pods ααααααααααααΆααααααααααΆαααααα (ααααα ) - ααΆαααΆα; -
policyTypes
α αααα αΆαααΈαααααααααααααΆααααααααααΌαααΆααα½ααααα αΌααα αααα»ααα½ααααα ingress αα·α/α¬ egress - ααααα α α·ααα ααα»αααααααα»αααΌαααααΆαα±αααααααΆααααΆαααΆαα αααΆαααα αααα»ααααααααααΈααΆααα’ααα -
ingress
α αααααα’αα»ααααΆα α αΌα α ααΆα ααααα ααΆααααααα pods - ααααα α α·ααα; -
egress
α αααααα’αα»ααααΆα α αα α ααΆα αααααΈ pods ααααα ααΊααααα α α·αααα
α§ααΆα ααααα½ααααααΆαααα
αΈααΈααα ααααα Kubernetes (αααα»αααΆααααα½α role
αα
ααΎ app
) αααα αΆαααΈαααααααααΆαα»ααΆαααα½αααααΌαααΆαααααΎααααΆααα
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: test-network-policy
namespace: default
spec:
podSelector: # <<<
matchLabels:
app: 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
α
αααΆαααΆααΆαα·αα
αΆαααΆα
ααααα
αΌαααΆαα»ααΆαααα½ααααααα ααΆααααΌαααΆαααΆαααΆαααααα»ααααα podSelector
αααΆαααΆααααααααααα
αααα’αΆα
ααααΌαααΆαααααΎααΆαααΆαα
ααααΆαα
ααααα·αααΎααΎααα»αα
αα policyTypes
ααααααααΆααααααΉαααααΌαααΆαααααααΆαααΌα
ααΆααααααα
- ααΆααααΌαααΆαααααααααΆαααααΆαααΎαααΎααααΈααααααααααααΆααααα»αα ααααα·αααΎαααααΆαααααααα·αααΆααααααΆααα αααΆααααΆαααα ααααααααααΉαααααααααΆα ααΆα αααααΆααα’ααααααΌαααΆαα αΆαααΆααα
- α₯αα·ααΆαααα ααΎα αα αα egress ααΉαααααΌαααΆαααααααααααααααΆαα¬α’ααααααΆααααααΆαααΆαααααα egress αααααααΌαααααΆα
ααΎααααΈαααααΆαααα α»ααααα»αααΌαααααΆα αααααα
αααΆααααΆαα policyTypes
.
αααααΆααααααα·ααααΆααΆαααΎαααα»αααααΈαααΆαααΆαααααα ingress
αα·α / α¬α egress
ααΆααα»αα
αα αααααΆααααααααΉαααα·αααααΆααα
ααΆα
αααααΆααα’αα (ααΌαααΎα "Sweep Rule" ααΆαααααα)α
αααααΆαααααααΆαααΎα - α’αα»ααααΆα
ααααα·αααΎααααΆααααααΆαααααααααα Kubernetes α’αα»ααααΆαα ααΆα αααααΆααα’ααααΆαααααΆαααΎαα pods ααΆααα’ααα’αΆα ααααΆααααααΌαααααααΆαααααΆαα αα·ααα αααααααααΈα ααΆααααααααα»ααααα·ααΆα αααα’αΆα α αΆααααΌα ααΆαααα»ααααα‘α ααα»ααααααααΌαα αΆαααΆ Kubernetes ααΎαα‘αΎαααααΌαααΆααααααΎαα‘αΎααααα’αααα’αα·αααααααααααΆαααααα ααααΎα±αααααααα·ααΈα’αΆα ααααΎαααΆαα’ααααααααααΆαα αααααΆααααααααΆαααααΌαααΆααααααααα ααααααααα
α αααααααααα
Namespaces ααΊααΆααααααΆααα ααΆα Kubernetes α αα½αααΆααααΌαααΆααα ααΆα‘αΎαααΎααααΈαααααα·ααΆααΆαα‘αΌααΈααααΈααααΆαα αα·ααα αα αααααααααα’αα»ααααΆαα±ααααααΆαααααααααΆαα αααααααΆαααααΆαααΎαα
ααΌα
αααΆαααΆαα» Kubernetes ααΆαα
αααΎαααα αααααΆααααααααΆαααααα
αααα»αα
ααααααααααααΆααααΆαααα½αα αα
αααα»ααααα»α metadata
α’αααβα’αΆα
βαααααΆααβααΆβα
αααααβαα½αβααΆβαααβαααααΆαααβααΆβααααα
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: test-network-policy
namespace: my-namespace # <<<
spec:
...
ααααα·αβααΎβααα αβαααααβαα·αβααααΌαβααΆαβαααααΆααβα
αααΆααβααΆααβαααα»αβαα·ααααααβααααΆβαα ααααααααβααΉαβααααΎβα
αααααβαααααβαααβααΆαβαααααΆααβαααα»α kubectl (ααααΆαααΎα namespace=default
):
kubectl apply -n my-namespace -f namespace.yaml
αααα»αααΌαααααΆα αααααΆααβααα βαααααβα±ααβα αααΆαααα»αααααΆααα’ααααααα»αααααααααααΆαααααααααααααααα ααΆαααααααα αααΎααααα»αααααααα½αα
αα ααΆαα» podSelector
αα
αααα»ααααααΆαααααΉαααααΎαααΎα pods ααΈ namespace ααααααααΆααααααααΆαααααα·αααα· (ααΆαα·αααΆααα·αααα·α
αΌαααααΎ pods ααΈ namespace αααααααααα)α
ααΌα
ααααΆαααααα podSelectors αα
αααα»ααααα»α ingress αα·α egress α’αΆα
ααααΎαααΎα pods ααΈ namespace ααααΆαααααααα½αααααααα»ααααα αα»αααααΆααα’ααααααα
αΌααα½αααΆααΆαα½α namespaceSelector
(ααΆβααΉαβααααΌαβααΆαβαα·ααΆααααΆβαα
βαααα»αβααααα "αααααβααΆαβα
αααααβααααα αα·αβαα")α
αααααΆααααααααααααα
ααααααααααΆαααααΊααΆααααα½αααααααα»αα ααααααααααααΌα ααααΆα αα·αβα’αΆα βααΆαβαααααΆαααβααΈαβαααβααΆαβαααααβααΌα ααααΆβαααα»αβα αααααβααΌα ααααΆβαααβαα ααα»ααααβααΆβα’αΆα βααΆαβαααααΆαααβαααβααΆαβαααααβααΌα ααααΆβαααα»αβα αααααβαααααβααααΆα ααΆααΆααααααααααα αααα’αααα ααα’αα»αααααααααΆαααααΌα ααααΆααααααααα ααΎα αααααα αααΎαα
ααΆαα·ααααααα»αα αΌαα α·ααααα·ααΈααΆαααααααΆααααααααα½αα ααΆααΆαβααΆαααααΆααβαααααβα αααααβααΆαα½αβαααααβααααα α α§ααΆα ααα:
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: default.postgres # <<<
namespace: default
spec:
podSelector:
matchLabels:
app: postgres
ingress:
- from:
- podSelector:
matchLabels:
app: admin
policyTypes:
- Ingress
ααααΆα
ααααΆαααααΆαααααα½αα’αΆα ααααΌαααΆαααααΆαααα ααααα» Kubernetes ααΌα ααΆαα αα·αα ααααααααααα ααααΆα (ααααΆα tags) ααΊααααΎααΉαααααΆααα αααα»ααααα αααααΆααααααααΆα Kubernetes ααααΎααααΆαααΎααααΈααααΎαααΎα ααααααα½αααα’αα»ααααα
podSelector:
matchLabels:
role: db
β¦ α¬ α ααααααααααααααα½αααα’αα»ααααα α§ααΆα ααααααααααΎαααΎα pods ααΆααα’αααα αααα»α namespaces αααααΆαααααΆααααααααΌαααααΆα
namespaceSelector:
matchLabels:
project: myproject
ααΆααααααΆααα½α: αα
αααααααΎ namespaceSelector
ααΌαααααΆααααΆ α
αααααααααααααα’αααααααΎαααΎαααΆαααααΆαααααΉαααααΌαα. ααααΌαβααΉαβααΆβααΆαβα
αααααβαααααβαααβααΆαβαααααΎαβα‘αΎαβααΌα
βααΆβ default
ΠΈ kube-system
αα·αβααΆαβααααΆαβααΆαβααααΆαααΎαα
α’αααα’αΆα ααααααααααΆααα α αααααααΌα αααα
kubectl label namespace default namespace=default
αααα»αααααΈααα α
αααααααααααααα»αααααα metadata
αα½αβαααβαα
βααΎβαααααβαα·αβααβααα βαα·αβαααβααααΆαβ:
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: test-network-policy
namespace: default # <<<
spec:
...
ααααα αα·ααα·ααα
αααααΆααααααααΆααααααΎαααΆαα
αααΆααααααα αα·ααα·ααα
α αααααΆααααααααΆα Kubernetes ααααΌαααΆαααααααααα»ααα½αααααα
αααα»ααααααααααααα½αααα’αα»αααα α αΎααααααΆαααααααααα
αααΆαααααααΆααααΆαα
αΌα αα·α/α¬α
ααΆα
αα
αΌαα αααα»αα§ααΆα αααααααααΎα ααααα
ααααααααΆαααΉαααΆαααααααΆααα’αααα
αααα»α namespace default
ααΆαα½αααΉαααααΆααααααΆαααααΉα app
αα·αα’αααααα db
:
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: test-network-policy
namespace: default
spec:
podSelector:
matchLabels:
app: 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
ααααααα ingress
αα
αααα»ααααααΆααααααααΎαα
ααΆα
αα
αΌααα
ααΆαααααααααααα
α αααααΆααα·αααα α
αααα
αΌαααΊααΆααααα α αΎαααααα
ααΊααΆαα·ααα
αααααααΌαααααΆα ααΌα
ααααΆααα ααΆαα
ααα
αΌαααΊααΆαα·ααα
α αΎαααααα
ααΊααΆαααααααααααΆα
αααααΊααααΎααΉαα
αααΆαααααααΆααααααΎαααΈαα Ingress β Target; ααααα
β Egress α
Egress αα·α DNS (ααααΆαα!)
ααΆαααΉααααααΉαα
ααΆα
αααα
αα ααα
α·ααααα»αααΆααααΆαα·αααα
αααα DNS - Kubernetes ααααΎααααΆααααααΆαααααααααΎααααΈααΌααααααΈααααΆαααααα
ααΆααα’αΆααααααΆα IP α α§ααΆα ααα αααααΆαααααΆααααααααΉααα·αααααΎαααΆααα ααΈαααααα’ααααα·αααΆαα’αα»ααααΆααααααα·ααΈ balance
α
αΌαααααΎ DNSα
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: default.balance
namespace: default
spec:
podSelector:
matchLabels:
app: balance
egress:
- to:
- podSelector:
matchLabels:
app: postgres
policyTypes:
- Egress
α’αααα’αΆα
αα½ααα»αααΆααΆααααααΎαααΆαα
αΌαααααΎααααΆαααα DNSα
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: default.balance
namespace: default
spec:
podSelector:
matchLabels:
app: balance
egress:
- to:
- podSelector:
matchLabels:
app: postgres
- to: # <<<
ports: # <<<
- protocol: UDP # <<<
port: 53 # <<<
policyTypes:
- Egress
ααΆαα»α
α»αααααα to
ααΊααα α αΎαααΌα
ααααααΆααααΎαααΎααααααααααα pods ααΆααα’αααα
αααα»α namespaces ααΆααα’ααα, α’αα»ααααΆα balance
ααααΎαααα½α DNS αα
ααααΆαααα Kubernetes ααααααααα (ααΆααααααΆααΆααααΎαααΆααααα»αααα kube-system
).
αα·ααΈααΆααααααααααΆαααααα·αααααΆα ααΆαα’αα»ααααΆαα α½αα ααα» αα·αα’ααααα·αα»ααααααααΆα’αα»ααααΆαα±ααα’αααααΉαααΆααααα½α DNS αα ααΆααααα α αααααα
α’αααα’αΆα αααααα’ααΆαααα»αααΈααα αΆαααΆααααααΆα
1. α’αα»ααααΆααααααα½α DNS ααα»αααααα αα
ααΆααααα»α α
αααααααααααααα namespaceSelector
:
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: default.balance
namespace: default
spec:
podSelector:
matchLabels:
app: balance
egress:
- to:
- podSelector:
matchLabels:
app: postgres
- to:
- namespaceSelector: {} # <<<
ports:
- protocol: UDP
port: 53
policyTypes:
- Egress
2. α’αα»ααααΆαα±αααααα½α DNS αααα
αααα»α namespace ααα»αααααα kube-system
.
ααΎααααΈααααΎααΌα
αααα α’αααααααΌαααααααααααΆααα½ααα
ααααααααΆααααααα kube-system
: kubectl label namespace kube-system namespace=kube-system
- α αΎαα
α»ααααααααΆαα
αααα»ααααααΆααααααααααΎ namespaceSelector
:
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: default.balance
namespace: default
spec:
podSelector:
matchLabels:
app: balance
egress:
- to:
- podSelector:
matchLabels:
app: postgres
- to:
- namespaceSelector: # <<<
matchLabels: # <<<
namespace: kube-system # <<<
ports:
- protocol: UDP
port: 53
policyTypes:
- Egress
3. ααα»ααα Paranoid α’αΆα
αα
ααααααααα αα·αααΆααααααα·αααΎααααΎ DNS αα
ααΆααααααΆ DNS ααΆααααΆαααα½ααα
αααα»α kube-system
. ααααα "Filter by Namespaces AND Pods" ααΉααααα αΆαα’αααααΈααααααΎααααΈαααααα
ααΆαα
αααααΎααα½ααααααΊααααΌααααααααΆα DNS αα ααααα·α namespace α αααα»αααααΈααα ααΆααΉααα·αα αΆαααΆα αααΎααααααΆααααΆααααααΆααααααα
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: default.dns
namespace: default
spec:
podSelector: {} # <<<
egress:
- to:
- namespaceSelector: {}
ports:
- protocol: UDP
port: 53
policyTypes:
- Egress
ααα podSelector
ααααΎαααΎα pods ααΆααα’αααα
αααα»α namespace α
ααΆαααααα½αααααΌααα·αααααΆαα
αα αααα»ααααααΆααααααΎαααααααΆ αααααααΆα (α’αα»ααααΆα α¬ααα·ααα) αα ααΎαααα ααααααααΆαααααΌαααΆαααααααααα αααΆααααΈαα½ααααααΆαααα α·αααα αα αααα»α Kubernetes ααααΆαααααααααΆααααα·αααααΆααααα
ααΆαααααΆαααΎα αα ααααααααααΆααααααΆαααααααα ααΆαααααΆαααααααααΆαααααααααΌαααΆαα’αα»ααααΆα α αΎααα½αααα’αΆα ααααΆααααααΌαααααααΆααααααααΈα αααΆαααΆα’αααα αΆααααααΎααααααΎααααααΆααα ααααΈαα½ααααααααααααααΆααααααααΆαα αα ααΆαααα½ααααα»αα αααααα½αααΆααΉαααααΆααα ααΆααΆα ααααα‘ααααααα ααΆαααΆαααααΆα α (α‘αΌααΈαα OR) ααααααααααΆαααΆααα’αααααααΆαααααΎαααΎαααΆα Pods αα·ααααααααααΆααααααααααΆαααααΆαα½ααα ααααΎαα αα α
α’αααα’αΆα ααααΆααααααΌαα₯αα·ααΆααααααααααααΎα αααΆαααααααα’αΆαα
α αααΆαααααα’αΆα ("α αΆα")
αααααΆααα Firewall ααΆααααααΆααα·αααα ααΆα αααααααα·αααααΌαααΆαα’αα»ααααΆααααΆαα αααΆααα
Kubernetes αα·αααΆααααααααΆα "ααα·ααα" αααααα»ααααα₯αααα·ααααΌα ααααΆα’αΆα ααααΌαααΆααααααα ααΆαα½αααΉααααααΆαααααααααΆ (α’αα»ααααΆα) αααααααΎαααΎααααα»ααααααααααααα (α αΌα)α
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: deny-all
namespace: default
spec:
podSelector: {}
policyTypes:
- Ingress
αααααΆααααααααααΎαααΎα pods ααΆααα’αααα
αααα»α namespace α αΎααα»α ingress αα·αααΆαααααα αααααα·αααααΆααα
ααΆα
αα
αΌαα
ααΌα ααααΆαααααα α’αααα’αΆα ααΆααααααα·αα ααΆα αααα ααααΆααα’ααααΈ namespaceα
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: deny-all-egress
namespace: default
spec:
podSelector: {}
policyTypes:
- Egress
ααΌαα
αααΆαααΆ αααααΆαααααααααααΆαα½ααααα’αα»ααααΆαα±ααα
ααΆα
ααα
ααΆαα pods αα
αααα»αααααα namespace ααΉαααΆαα’αΆαα·ααΆαααΎα
αααΆαααααα (ααααααααΉαααΆαααααααα
αααΆααα’αα»ααααΆα αα»ααααα
αααΆααααα·ααααααα»αααΆαααααααα
ααΆαααααααααααααΆααααααΎα)α
α’αα»ααααΆαααΆααα’αα (Any-Any-Any-Allow)
ααΎααααΈαααααΎααααααΆααα "α’αα»ααααΆαααΆααα’αα" α’αααααααΌααααααααααααΆαααααα·αααααΆαααΎααΆαα½αααΉαααΆαα»ααα ingress
:
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: allow-all
namespace: default
spec:
podSelector: {}
ingress: # <<<
- {} # <<<
policyTypes:
- Ingress
ααΆαααααααΌαααΆαα
αΌααα
ααΆαα pods ααΆααα’αααα
αααα»α namespaces ααΆααα’αα (αα·α IPs ααΆααα’αα) αα
ααΆαα pod ααΆαα½ααα
αααα»α namespace default
. α₯αα·ααΆαααααααααΌαααΆαααΎαααΆαααααΆαααΎα ααΌα
ααααααΆααααααΆααΆαα·αα
αΆαααΆα
αααααααααααααααααα ααααααΆαααΆααααα ααααααα ααΆα’αΆα
α
αΆαααΆα
ααααα»αααΆααα·αααΆαα’αα»ααααΆαααΆααααΆαααα½αα
ααα½αααΆααααααα’αΆαααα ααΎααααΈααααΎααααα·αα·α
αααααααα αΆα
α
αααΆαααααα’αΆα
ααααΌαααΆαααααα½αααααα½αααΎααααΈα’αα»ααααΆαα±ααα
αΌαααααΎααααα»ααααα αααα»αααΆααααΆαααα pods (app:balance
) αααα»αβα
αααααβααααα default
:
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: allow-all-to-balance
namespace: default
spec:
podSelector:
matchLabels:
app: balance
ingress:
- {}
policyTypes:
- Ingress
αααααΆαααααΆααααααα’αα»ααααΆαα±ααα
ααΆα
αα
αΌα (α
αΌα) αα·α α
αα (egress) ααΆααα’αα αα½αααΆααααΆαα
αΌαααααΎ IP ααΆαα½ααα
ααΆααααα
α
αααααα
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: allow-all
spec:
podSelector: {}
ingress:
- {}
egress:
- {}
policyTypes:
- Ingress
- Egress
ααΆααα½ααααα αΌαααααΆαααααααΆαααααΆα αααΎαα
ααααααααΆαααααΌαααΆα ORed α‘αΌααΈαααα ααΈααααα·α; ααΆαα’αα»ααααΆαααααααααΈαα½ααααααΌαααΆααααααααααα ααΆαααΆαααααΆα αα ααααΈαααααΆαααααΆααα’ααααααααααΆαααααααΆα
1. αα
αααα»αααΆα from
ΠΈ to
ααΈααααααααααΆαα»α’αΆα
ααααΌαααΆαααααα (ααΆααα’αααα½ααααα
αΌαααααΆααΆαα½α OR):
-
namespaceSelector
- ααααΎαααΎαα ααααααααααααΆααααΌα; -
podSelector
- ααααΎαααΎαααααΆαα; -
ipBlock
- ααααΎαααΎααααααΆαααα
αααααΉαααΉααααα
ααα½αααααΆαα» (ααΌααααΈααααΌα
ααααΆ) αα
αααα»αααααααα from
/to
αα·ααααααα αα½αααΆααΆααα’ααααΉαααααΌαααΆαααααααΆαα½αα‘αΌααΈαα OR α
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: default.postgres
namespace: default
spec:
ingress:
- from:
- podSelector:
matchLabels:
app: indexer
- podSelector:
matchLabels:
app: admin
podSelector:
matchLabels:
app: postgres
policyTypes:
- Ingress
2. αααααααααααααΆαααΆααααα»α ingress
α’αΆα
ααΆαααΆαα»ααΆα
αααΎαα from
(αα½ααααα
αΌαααααΆαααα‘αΌααΈαα OR) α ααΌα
ααααΆααααααααααα egress
α’αΆα
αα½ααααα
αΌαααΆαα»ααΆα
αααΎαα to
(αα½ααααα
αΌαααααΆαααααΆαααααα):
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: default.postgres
namespace: default
spec:
ingress:
- from:
- podSelector:
matchLabels:
app: indexer
- from:
- podSelector:
matchLabels:
app: admin
podSelector:
matchLabels:
app: postgres
policyTypes:
- Ingress
3. αααααΆααααααααααααΆααααααΌαααΆαααααααΆαα½αααΉαα‘αΌααΈαα OR αααααα
ααα»αααααα
αααααααα½αααααααΌαααΆααααα
αΌαααααΆ, ααΆαααΆαααΉααααααΉααα½ααα
ααΎ policyTypes
(Ingress
α¬ Egress
) αααααΆαααααααααααααΆαα
αΌα (α¬ egress) ααΉααααααααΆααααΎααααΆαα
αα·ααα
ααα
ααααΆαααααααααΆαα αααααααααα
ααΆαααααΆαααΎα ααΆαααααΆααααααΌαααααααΆααααΆα namespaces ααααΌαααΆαα’αα»ααααΆαα α’αααα’αΆα ααααΆααααααΌαααΆαααααααΎαααααΆαααααΉααααα·ααααααΆααααααα·αααΆαα ααα αΌα αα·α/α¬α ααΆα αα αΌααα ααΆααααα ααααα (ααΌαααΎα "α αααΆααααααααα’αΆα" ααΆαααΎ)α
αααααΆααααααααΆααααΆαα
αΌααα
ααΆαα namespace (ααΌαααΎα "Sweep Rule" ααΆαααΎ) α’αααα’αΆα
ααααΎααΆαααΎααααα
αααααααααΆαααααα·ααααααα’αα»ααααΆαα±ααααΆαααΆααααααΆααααΈ namespace ααΆααααΆααααΆαα½α namespaceSelector
:
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: database.postgres
namespace: database
spec:
podSelector:
matchLabels:
app: postgres
ingress:
- from:
- namespaceSelector: # <<<
matchLabels:
namespace: default
policyTypes:
- Ingress
ααΆαααααα pods ααΆααα’αααα
αααα»α namespace default
ααα½αααΆααα·αααα·α
αΌαααααΎ pods postgres
αα
αααα»α namespace database
. ααα»ααααα
α»ααααΆαααΆααΎα’αααα
ααααΎαααΆαα
αΌαααααΎ postgres
ααΆααα pods ααΆααααΆαααα
αααα»α namespace default
?
ααααααΆαα αααααααααα αα·ααα
Kubernetes αααα 1.11 αα·ααααααααΆαααα α’αα»ααααΆαα±ααα’ααααααα
αΌαααααΆααΌαααααα·ααααα·αα namespaceSelector
ΠΈ podSelector
αααααααΎα‘αΌααΈαα AND ααΆααΎααα
ααΌα
αααα
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: database.postgres
namespace: database
spec:
podSelector:
matchLabels:
app: postgres
ingress:
- from:
- namespaceSelector:
matchLabels:
namespace: default
podSelector: # <<<
matchLabels:
app: admin
policyTypes:
- Ingress
α ααα»α’αααΈααΆαααΆααΆααααΌαααΆαααααααααΆ AND αααα½αα±αα OR ααααααΆ?
α
αααΆαβααΆ podSelector
αα·αα
αΆααααααΎαααααα αααααΆα αα
αααα»α YAML αααααΆααααααΆ podSelector
α αΎααααα
ααΈαα»αααΆαα namespaceSelector
ααααα
ααΆαα»αααααΈααΌα
ααααΆα ααΌα
αααα αα½αααΆααααΌαααΆαααααααΆαα½αααΉαα‘αΌααΈαα AND α
ααΆααααααααααααΆα
α»α
ααΈαα»α podSelector
ααΉαααΆααααααααα
αααα»αααΆαα»αααααΈααααΈαααααΉαααααΌαααΆαααααααΆαα½αααΆαα»αα»αα namespaceSelector
αααααααΎα‘αΌααΈαα OR α
ααΎααααΈααααΎαααΎααααααααααΆαααααΆαααΆααααΆαα αα
βαααα»αβα
αααααβαααααβααΆααβα’αααααα
αΌαααα namespaceSelector
:
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: database.postgres
namespace: database
spec:
podSelector:
matchLabels:
app: postgres
ingress:
- from:
- namespaceSelector: {}
podSelector:
matchLabels:
app: admin
policyTypes:
- Ingress
ααααΆαααΆα αααΎαααααααΆαα½α AND
α
αααΆαααααααΆααααααΎααααααΆαα’αααααΆαα
αααΎα (αααΆαααΈα αααααΆα αααα»α) ααααΌαααΆααα½ααααα
αΌαααααΆαααααααΎα‘αΌααΈαα OR α α
αααΆααααΆααααααααΉααααααααΎαααΆα ααααα·αααΎααααααααα
ααααααααΆαααααΌαααααΆα Host_1
α¬ Host_2
:
| Source | Destination | Service | Action |
| ----------------------------------------|
| Host_1 | Subnet_A | HTTPS | Allow |
| Host_2 | | | |
| ----------------------------------------|
αααα»ααα
αα·ααα
αααα»α Kubernetes ααααΆααααααααααΆαα
αααα»α podSelector
α¬ namespaceSelector
ααααΌαβααΆαβααααβααΆαα½αβααΉαβα‘αΌααΈαα ANDα α§ααΆα ααα α
αααΆααβααΆααααααβααΉαβααααΎαααΎαβααβαααβααΆαβααααΆαβααΆααααΈα role=db
Π version=v2
:
podSelector:
matchLabels:
role: db
version: v2
αααααα·ααααΆααΌα ααααΆα’αα»ααααα αααααααααααααααααααα ααααΈαααααααΆαααα α§αααααααααΎαααΎαααααα ααααααααΆα α§αααααααααΎαααΎααα αα·αα§αααααααααΎαααΎαααα αααααα
αααααΆααα αα·αα’αΆααααααΆα IP (IPBlocks)
Firewalls ααααΎ VLANs α’αΆααααααΆα IP αα·ααααααΆαααααΎααααΈαααα αααααααΆαα
αα αααα»α Kubernetes α’αΆααααααΆα IP ααααΌαααΆαααααααααααααααααααααα·αα pods α αΎαα’αΆα ααααΆααααααΌαααΆααΉαααΆαα ααΌα ααααααααΆαααααΌαααΆαααααΎααΎααααΈααααΎαααΎα pods αα·α namespaces αα αααα»ααααααΆααααααααΆαα
αααααΆααα (ipBlocks
) ααααΌαβααΆαβααααΎβαα
βαααβαααααααααβααΆαβαααααΆααβα
αΌα (α
αΌα) α¬βα
αα (egress) ααΆαβαααα
(ααΆαααΎα-ααΆαααααΌα) α α§ααΆα ααα αααααΆααααααααΎα pods ααΆααα’ααααΈ namespace default
ααΆαα
αΌαααααΎααααΆαααα DNS αααα Googleα
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: egress-dns
namespace: default
spec:
podSelector: {}
policyTypes:
- Egress
egress:
- to:
- ipBlock:
cidr: 8.8.8.8/32
ports:
- protocol: UDP
port: 53
α§αααααααααΎαααΎα pods ααααα
αααα»αα§ααΆα ααααααααΆααααααΆ "ααααΎαααΎα pods ααΆααα’αααα
αααα»α namespace" α
αααααΆααααααα’αα»ααααΆαα±ααα αΌαααααΎαα 8.8.8.8; ααΆαα αΌαααααΎ IP ααααααααααααΌαααΆαα αΆαααΆααα ααΌα αααα ααΆαα½α α’αααααΆαααΆααΆααααΆαα αΌαααααΎααααΆαααα DNS Kubernetes ααΆααααα»αα ααααα·αααΎα’ααααα ααα ααααΎαααΆ αααααΆααααΆα±ααα αααΆααααΆααα
ααΆααααααΆ ipBlocks
ΠΈ podSelectors
ααΊααααΆα
ααα»ααα
αα·ααα
αα α
αΆααααΆααααΈα’αΆααααααΆα IP ααΆααααα»ααααααααααα·αααααΌαααΆαααααΎαα
αααα»α ipBlocks
. ααΆαα
ααα’α»ααααα αΆα αα IP ααΆααααα»αα’αααααΉαα’αα»ααααΆαα±ααααΆαααΆααααααΆαααα
/ααΈααααααΆαα½αααΉαα’αΆααααααΆαααΆαααααα αα
αααα»αααΆαα’αα»αααα α’αααααΉααα·αααΉαααΆα’αΆααααααΆα IP αα½αααΆαααααααΌαααααΎ αααααΆααΌαα ααα»αααα’ααααα·ααα½αααααΎαα½αααΆααΎααααΈααααΎαααΎαααα
ααΆα§ααΆα ααααααα»αααααΆ αααααΆαααααΆαααααααα½ααααα αΌα IPs ααΆααα’αα ααΌα ααααα αΎαα’αα»ααααΆαα±ααα αΌαααααΎ pods ααααααααααΆααα’ααα
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: egress-any
namespace: default
spec:
podSelector: {}
policyTypes:
- Egress
egress:
- to:
- ipBlock:
cidr: 0.0.0.0/0
α’αααα’αΆα
ααΎαααΆαα
αΌαααααΎααΆααα IPs ααΆααααα
ααα»ααααα ααααα·αααΆαααααα
αΌαα’αΆααααααΆα IP ααΆααααα»αααααααα α§ααΆα ααα ααααα·αααΎαααααΆαααααααααααααα’αααααΊ 10.16.0.0/14α
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: egress-any
namespace: default
spec:
podSelector: {}
policyTypes:
- Egress
egress:
- to:
- ipBlock:
cidr: 0.0.0.0/0
except:
- 10.16.0.0/14
α ααααα·ααα·ααΈααΆα
ααΆααααααΆ pods ααααΆαααα ααΎα ααααα½αα αααααΆααααααΆ α’αααααααΆααααα’αΆα αα»ααααα ααααα αααα»ααααααΆαααααααα’ααα α αΎααα»αα’αααΈαααΆααα’ααααΆαααααΆαααΎαα ααααααΆαααΆααααα ααΆααααΌαααΆααααααα’αα»ααΆαααα±ααααααΎαααααΆαααααΉααααα·αααΆααααα’αΆα ααααΎαα ααΆα ααΌα αααααααα»αααααΈαααα α’ααααα ααα’αΆα αααααΆααα αααααΆαα
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: default.postgres
namespace: default
spec:
ingress:
- from:
- podSelector:
matchLabels:
app: indexer
- podSelector:
matchLabels:
app: admin
ports: # <<<
- port: 443 # <<<
protocol: TCP # <<<
- port: 80 # <<<
protocol: TCP # <<<
podSelector:
matchLabels:
app: postgres
policyTypes:
- Ingress
α
αααΆαααΆα’αααααααΎαααΎα ports
α’αα»ααααα
ααααααΆαα»ααΆααα’αααα
αααα»ααααα»α to
α¬ from
, αααααΆαα ααΎααααΈαααααΆααα
ααααααααααααΆαααααΆαααααα»αααΆαα»αααααααααΆ ααΌαααααα ingress
α¬ egress
αα
αααα»ααααααααααΆα
αααΎαα to
α¬ from
α αΎααααα»αααΈαα½αααααααα
αααααααα’αααα
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: default.postgres
namespace: default
spec:
ingress:
- from:
- podSelector:
matchLabels:
app: indexer
ports: # <<<
- port: 443 # <<<
protocol: TCP # <<<
- from:
- podSelector:
matchLabels:
app: admin
ports: # <<<
- port: 80 # <<<
protocol: TCP # <<<
podSelector:
matchLabels:
app: postgres
policyTypes:
- Ingress
α
αααααααΆαααΎαααααΎαααΆαα
- ααααα·αααΎα’αααααα·ααααα·αααααααα
αααααΆαααααα»α (
ports
) αααααΆααααααΆαα·ααΈααΆαααΆααα’αα αα·αα αααααΆααα’αα; - ααααα·αααΎα’αααααα·ααααα·ααααααα·ααΈααΆα (
protocol
) αααααΆααααααΆ TCP; - ααααα·αααΎα’αααααα·ααααα·αααααα
ααα (
port
) αααααΆααααααΆα αααααΆααα’ααα
ααΆαα’αα»ααααααα’αααα»αα αα»αααΉαααα’ααααΎαααααααααΆαααΎα αααααΆααα’αααΈαααα’αααααααΌαααΆααααΆαα αααΆααααΆααα
α αααΆαααΆα’αααααααΌαααααΎαααα αα·ααααααααΆαααααα (ααααααααΎααΆαα αααΆαααααααααΆαα)α
αααααΆαααααααααααααΆαααα α¬ααααΆαααα?
ααΆααααααΆ αααα αααα»α Kubernetes ααααΆαααααααΆααααααααΆααΆααααααααΆαααααα½α αααααΆα§ααααααααα»αααααα»ααα·αααα·α αααααααΌααα·αα ααΆα ααααα ααΆαααααααα’αα»ααααααααΆααααα α’ααααααα ααααΆαα·αααΆαααααΆααααααααΆααααααααααααΆαα αΌαααααΎααααΆαααα ααα»ααααααααα·ααααααΆααααΈαααααα αααααΆααααααααΆα Kubernetes ααααΎαααΆαααΆαα½ααααα αα·ααααααααΆααααααα
α§ααΆα ααα ααααα·αααΎααααΆααααααααΆαααα ααΎα ααα 80 ααα»αααααααααΌαα ααΆα ααα ααΆααα ααα 8080 ααααααααααΆ α’αααααααΌααααααααΆαα 8080 αα αααα»ααααααΆααααααααΆαα
ααααααΆααααααααα½αααααααΌαααΆαααααα½αααααΆααααΆααα’αααα»αα ααααα·αααΎα§αααααααΆααααα»αααααααΆαααα (α ααααααααααΆαα pods) ααααΆααααααΌα αααααΆααααααααΆαααΉαααααΌαααααΎαα αα α»ααααααααΆαα
αα·ααΈααΆαααααααααΆααααααααααααΈαααααααΎ Service Mesh (α§ααΆα ααα ααΌαααΎαα’αααΈ Istio ααΆαααααα - approx. transl α ) α’αα»ααααΆαα±ααα’ααααααααααΆααααα αΆαααα
ααΎα αΆαααΆα αααααΌααααααααΆαα Ingress αα·α Egress αα?
α αααΎαααααΈααΊααΆα/α αΆα ααΎααααΈα±αααα A ααααΆααααααααΆαα½ααα B α’αααααααΌαα’αα»ααααΆαα±ααααΆαααααΎαααΆααααααΆααα αα (αααααΆαααααα’αααααααΌαααααααα ααΆαααααααααααααΆααα egress) α αΎααα B ααααΌαααα’αΆα ααα½αααααΆααααααΆααα αΌα (αααααΆααααα, ααααα ααΆα, α’αααααααΌαααΆα ingress- policy) α
ααααααΆαααΆααααα αα αααα»αααΆαα’αα»αααα α’αααα’αΆα ααΉαααα’ααααΎαααααΆαααααααΆαααΎα ααΎααααΈα’αα»ααααΆαα±ααααΆαααΆααααααΆαααααα»ααα·ααα αα½α α¬ααΆααααΈαα
ααααα·αααΎααΆααααααα -ααααα ααΉαααααΌαααΆαααααΎαααΎαααααα½α α¬α αααΎαα α αα- α’ααααααααΆα ααΆαααΉααααααΉααααααΆααααΎααΆααΉαααααΌαααΆαααααααααααΆαααααΆα ααααα½ααααααα½αααα αααα»αααααΈαααα’αααααΉαααααΌαα’αα»ααααΆαα±ααααΆαααΆαααααΆααααΆαα½α pod αααΆαα αααΆααα’αααααα½α. ααααα·αααΎ pod αα·αααααΌαααΆαααααΎαααΎαααααααααΆαααααΆαα½ααα α ααΆα αααα αα (egress) ααααααΆααααΌαααΆαα’αα»ααααΆαααΆαααααΆαααΎαα
ααΌα ααααΆαααααα αααααΆαααΆαααα pod'a-α’αααααα½αααααΎαααΎαααααα½α α¬α αααΎαα α αΌα- ααααααααΆαααΉαααααΌαααΆαααααααααααΆαααααΆα ααααα½αα αααα»αααααΈααα α’αααααααΌαααα’αα»ααααΆαα±ααααΆααα½αααΆαα ααΆα αααααΈαααααααα ααααα·αααΎαααα·αααααΌαααΆαααααΎαααΎαααααααααΆαααααΆαα½ααα α ααΆα αααα αΌαααΆααα’αααα ααΆααααΆααααΌαααΆαα’αα»ααααΆαααΆαααααΆαααΎαα
ααΌαααΎα "Stateful or Stateless" ααΆααααααα
αααααα ααα»
αααααΆααααααααΆα Kubernetes αα·αααΉαααΈαααααααααααΆα ααΆα αααααα αααααααΎα±ααααΆαααΆαααααΆααααα»αααΆααααααααΆααΎαααααΆααααα½ααααα»αααααΎαααΆαααΌα ααΆαααααΉααα»α αα·αααααΎα±ααααΆααα·ααΆααα»ααααα·ααΆαααΆαααΆαααααΆαααααΆααααΆααα
ααΆααααααααααα ααΆα ααααα ααΆααααααΆααΆααααα
αααααΆααααααααΆα Kubernetes αα·αα’αα»ααααΆαα±ααα’ααααααααΆαααααααααααααααΆααααααααααααααα·αααααααααΆαααααααα (DNS) αα αααα»αααααα egress ααα ααΆααα·ααααααΆαα±ααααΆαααΆααα’αΆαααα’α½αααααΆαααα αααααααΆααΆαααΆααααααα·αα ααΆα ααααα ααΆααααααα ααΆααααα ααααα·αααΆαα’αΆααααααΆα IP ααα (ααΌα ααΆ aws.com)α
ααΆααααα½ααα·αα·αααααααααααΆα
αααααΆααααααΎαααΉααααααΆαα’ααα α¬ααΌααααΈααααα·ααααα·αααα½ααααααααΆααααα»αα Kubernetes ααααααΎααΆααααααααααΆαααααααααα αα αααααααααααααΆααααααααΆαααΆαααα kubectl Kubernetes α’αΆα αααααΆαααΆαααααΆαααααααα·αααααΉαααααΌα α αΎαααα·ααααα·αααα½αααααΆα αααα»αααααΈαααααααα Kubernetes ααΉααααααααΆαααααα α αΎααααααααΆααΆαα½αααΉαααααααΆααααα’α·ααααααΆααα α’αααα’αΆα ααΎααα½αααΆαααααααΎααΆααααααααΆα
kubernetes get networkpolicy <policy-name> -o yaml
ααΌαα αα αΆαααΆαααααααααα»ααααΆα Kubernetes αα·αα’αΆα ααααααΆα α αΎαα’αΆα ααααΆαααααααααααα α»ααα½αα ααα½αα
ααΆαααααα·ααααα·
Kubernetes αα·αα’αα»αααααααααΆααααααααΆαααααααα½αα―ααα ααα»ααααααααΆααααααΆα
ααα API αααααΆααααααα»αααααΆααααααααααααΎαααααααααααα α
ααΆ Container Networking Interface (CNI) ααα»αααααα ααΆαααααααααααΆααααα
ααΎα
ααααα Kubernetes ααααα·αααααα CNI ααααααααΊααααααααΉαααΆαααααααααααΆααααα
ααΎαααΆαααΈαααααααααααααααααΆααααααΎαααααα·αααααααα½αααΆααΆαααααααααΆαααα
ααΎαααααΆααααααΎαα ααΆα’αΆαααααααΎα’ααααααα»αααΆαααααΎα±ααααααΆααααΆα’αααααΆα CNI αααααα α¬αα
αααα»αααααΈαααααα·ααΆ Kubernetes ααααααα αααα
αααα»αααα (αααααΆαααααααΈα’ααααααααααααΆααΌαααΎα
ααΌαα αααΆαααΆ Kubernetes ααΉααα·ααααααΆαα’ααααα ααααα·αααΎα’αααααααααααααΆααααααααΆααααααααΆαα’ααααααα½ααααααα CNI α
ααααα¬ααααΆααααα?
Kubernetes CNIs ααΆααα’ααααααααα»αααΆαααααααΆααααΊααΆααααααααααα (α§ααΆα ααα Calico ααααΎ Linux conntrack)α αααα’αα»ααααΆαα±αα pod ααα½αααΆαααΆαααααΎααααα ααΎααΆααααααΆαα TCP αααααΆααΆαα αΆααααααΎαααααα·αα αΆαααΆα ααααααΎαααΆα‘αΎααα·αα ααααααΆαααΆααααα αααα»ααα·αααΉαααΈαααααααΆα Kubernetes αααααΉαααΆααΆααΆααααααααααααα
ααΆααααααααααααααααααΆααα»ααααα·ααΆαααααα·αααααα
αααααΊααΆαα·ααΈαα½αα ααα½αααΎααααΈαααααΎαααααα·αααααΆαααααΆαα’αα»ααααααααααααΆααα»ααααα·ααΆααα αααα»α Kubernetesα
- ααααΌααααΆαααααααα Service Mesh ααααΎ sidecars ααΎααααΈααααα telemetry αααα’α·α αα·αααΆααααα½ααα·αα·αααα
ααΆα
ααααα
ααααα·αααααΆααααα ααΆα§ααΆα αααααα’αΆα
ααααΆαα
α’ααΈαααΈα’αΌ . - α’αααααα CNI αα½αα ααα½αααΆααααααΈαα§ααααααααααα½αααααΎααααΈααΎαααΈαααααΆααααααααΆα Kubernetes α
-
ααΌα αααΈα α’ααααΆ αααααααΌααααααΆααΆα αα·αααααααααααααα·αααααααααααΆααααααααΆα Kubernetes α
αααα αα Tufin Orca ααααααααααααααΆααααααααΆα Kubernetes (α αΎαααΆαααααααααΌαααα’ααααααααΆαααΎ)α
αααααα
-
α§ααΆα αααααααααααΆααααααΆααααα αααα Ahmet Alp Balkan αα GKE ; -
α―αααΆαααΈααα ααααα Kubernetes ααααΌαααΆα ; -
ααΆαααααΆαα’αααΈααααΌαααααΆα Kubernetes ; -
ααααααΈααααααΆαααα·αα·αααααΎααααααΆααααααααΆα .
ααα ααααΈααααα·ααααΆα
αααααΆααααααααΆα Kubernetes αααααααΌααααα»αα§αααααααααα’αααααΆααααΆααααα ααα ααααα ααα»αααααα½αααΆαα·αααΆααα·α αΆααααΆα αα·αααΆαααααααΆαααα’α·αααΆα αααΎαα αααα»αααΏααΆ αααααΆαααααΆααααα»αααααΆαααα ααααααααΆαααα ααααααααααΆαααααΆααααΆα αααΎαααΆαααα α»αα αααααααααΆααααα’αΆα ααΎαααΆαα αααααααα αΆααα ααΊααΆαααααααααααΆααααααααααααααααααα· α¬ααααΎα§ααααααααα ααααααααααα
αααα»ααααααΉαααΆααΆαααααΆααααααΉααα½αααααααααα½ααα½αα ααα½α αα·ααααααααΆααααα αΆαααα’αααα’αΆα αα½ααααααα
PS ααΈα’ααααααααα
ααΌαα’αΆαααααααα ααΎαααααααααααΎαα
- "αααααααα
ααααΆααααααααΆαααΌα
ααΆαα½α Istio"α
αααααααΈ 1 (ααΆαααααΆαα’αααΈααααααααααΆααα) ,αααααααΈ 2 (ααααΌα, ααΆααααα½ααα·αα·αααα ααΆα ααα) ,αααααααΈ 3 (αα»ααααα·ααΆα) ; - "ααααα»αααααααααααΌαααΎαααααΆααα
αααα»α Kubernetes"α
αααααααΈ 1 αα·αααΈ 2 (ααααΌαααααΆα αααααΆααααα½αααΎααααΆ) ,αααααααΈ 3 (ααααΆαααα αα·αααααΎαααΆαα ααΆα ααα) ; - Β«
Docker αα·α Kubernetes αα αααα»αααα·ααααΆααααααΆαααΆααα»ααααα·ααΆα Β» - Β«
ααΆαα’αα»ααααααα’αααα»α 9 Kubernetes Security Β» - Β«
11 αα·ααΈααΎααααΈ (αα·α) ααα½αααΆαααΆα Hack αα αααα»α Kubernetes "α
ααααα: www.habr.com