ืืขืจื. ืชืจืืื: ืืืืชื ืืืืืจ, ืจืืืื ืืจืืกืื, ื ืืกืืื ืฉื ืืืขืื ื-20 ืฉื ื ืืคืืชืื ืชืืื ื, ืืืืื ืืื CTO ืืืืืกื ืฉืืชืฃ ืฉื ืืืจืช Tufin, ืฉืืืฆืจืช ืคืชืจืื ืืช ืื ืืืื ืืืื ืืืช ืืืืื. ืืืจืืช ืฉืืื ืจืืื ืืืืื ืืืช ืืจืฉืช ืฉื Kubernetes ืืื ืืืง ืืืื ืืคืืืื ืจืฉืช ืืืฉืืื, ืืื ืื ืืืืื ืฉืื ืื ืื ืงื ืืืืฉื ืืืชื ืืคืืขื. ืืืืจ ืื (ืื ื ืจืื) ื ืืขื ืืฉืคืจ ืืช ืืืืืขืืช ืฉื ืืืืืื ืื ืืฉื ืื ืืืขืืืจ ืืื ืืืฆืืจ ืืช ืืชืฆืืจืืช ืืืจืืฉืืช.
ืืืื, ืืืจืืช ืจืืืช ืืืืจืืช ืืืชืจ ืืืืชืจ ื-Kubernetes ืืืคืขืืช ืืืคืืืงืฆืืืช ืฉืืื. ืืืชืขื ืืื ืืช ืืชืืื ื ืื ืื ืืืืื ืขื ืฉืืฉ ืืืื ืื ืืช Kubernetes "ืืขืจืืช ืืืคืขืื ืืืืฉื ืฉื ืืจืื ืื ืชืื ืื". ืืืืจืื, Kubernetes (ืื k8s) ืืชืืืืื ืืืืชืคืก ืืืืง ืงืจืืื ืืขืกืง, ืฉืืืจืฉ ืืจืืื ืฉื ืชืืืืืื ืขืกืงืืื ืืืืจืื, ืืืื ืืืืืช ืจืฉืช.
ืขืืืจ ืื ืฉื ืืืืื ืฉืืชืืืืื ืืขืืืื ืขื Kubernetes, ืืืชืื ืฉืืืืืื ืืืืืชื ืืื ืืืื ืืืช ืืจืืจืช ืืืืื ืฉื ืืคืืืคืืจืื: ืืคืฉืจ ืืื.
ืืืจืื ืื ืืขืืืจ ืื ืืืืื ืืช ืืืื ื ืืคื ืืื ืฉื ืืืื ืืืช ืืจืฉืช; ืืืืื ืืืฆื ืื ืฉืื ืื ืืืืืืื ืขืืืจ ืืืืืช ืืฉ ืจืืืืืช. ืื ืื ืืืกื ืืื ืืืืืืืช ืืืกืคืง ืืืืฆืืช ืฉืืกืืืขื ืืืืืืช ืืืฉืืืื ื- Kubernetes.
ืืืื ืืืช ืจืฉืช Kubernetes
ืื ืื ืื ืืืื ืืืช ืืจืฉืช ืฉื Kubernetes ืืืคืฉืจ ืื ืื ืื ืืช ืืืื ืืจืืงืฆืื ืฉื ืืืฉืืืื ืืคืจืืกืื ืืคืืืคืืจืื ืืฉืืืช ืืจืฉืช (ืืฉืืืฉืืช ืืืืื OSI). ืืืื ืืืช ืจืฉืช ืืกืจื ืืืง ืืืชืืื ืืช ืืืชืงืืืืช ืฉื ืืืืืช ืืฉ ืืืืจื ืืืช, ืืืื ืืืืคื ืฉื OSI Layer 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
: ืืืืืจ ืืช ืืชืจืืืืื ืืืืฉืคืขืื ืืืืื ืืืช ืื (ืืขืืื) - ื ืืจืฉืื; -
policyTypes
: ืืฆืืื ืืืื ืกืืื ืืืื ืืืช ืืืืืื ืืื: ืื ืืกื ื/ืื ืืฆืืื - ืืืคืฆืืื ืื, ืื ืื ื ืืืืืฅ ืืฆืืื ืืืช ืืืคืืจืฉ ืืื ืืืงืจืื; -
ingress
: ืืืืืจ ืืืชืจ ื ืื ืก ืชื ืืขื ืืชืจืืืืื - ืืืคืฆืืื ืื; -
egress
: ืืืืืจ ืืืชืจ ืืึนืฆึตื ืชื ืืขื ืืชืจืืืืื ืืื ืืืคืฆืืื ืืืช.
ืืืืืื ื ืืงืื ืืืชืจ 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
, ืืืืื ืืืช ืชืชืคืจืฉ ืืืืงืื:
- ืืืจืืจืช ืืืื, ืืื ืื ืืื ืฉืืื ืืืืืจื ืืช ืฆื ืืื ืืกื. ืื ืืืืื ืืืช ืื ืืฆืืื ืช ืืืช ืืืคืืจืฉ, ืืืขืจืืช ืชื ืื ืฉืื ืชืขืืืจื ืืกืืจื.
- ืืืชื ืืืืช ืืฆื ืืืฆืืื ืชืืงืืข ืขื ืคื ื ืืืืืช ืื ืืืขืืจื ืฉื ืคืจืืืจ ืืืฆืืื ืืืชืืื.
ืืื ืืื ืืข ืืขืืืืช ืื ื ืืืืืฅ ืชืืื ืืคืื ืืช ืื ืืืคืืจืฉ policyTypes
.
ืขื ืคื ืืืืืืื ืืขืื, ืื ืืคืจืืืจืื ingress
ื / ืื egress
ื ืฉืืื, ืืืืื ืืืช ืชืื ืข ืื ืชืขืืืจื (ืจืื "ืืื ืืคืฉืื" ืืืื).
ืืืื ืืืช ืืจืืจืช ืืืืื ืืื ืืคืฉืจ
ืื ืื ืืืืืจืืช ืืืื ืืืช, Kubernetes ืืืคืฉืจืช ืืช ืื ืืชืขืืืจื ืืืจืืจืช ืืืื. ืื ืืคืืืื ืืืืืื ืืืืืืฃ ืืืืข ืืื ืืื ืืืืคื ืืืคืฉื. ืื ืืืื ื ืจืื ืื ืืื ืืืื ืืืืืฆืื ืื ืงืืืช ืืื ืืืืื, ืืื ืืืืจ ืฉ-Kubernetes ืชืืื ื ืืืงืืจ ืขื ืืื ืืคืชืืื ืืื ืืืคืฉืจ ืืืืืช ืคืขืืื ืืืืืช ืฉื ืืืฉืืืื. ืืืื ืืืช ืจืฉืช ื ืืกืคื ืืืืืจ ืืืชืจ.
ืืจืืื ืฉืืืช
ืืจืืื ืฉืืืช ืื ืื ืื ืื ืฉืืชืืฃ ืืคืขืืื ืฉื 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
ืืืืื ืืืช ืืืืจ ืคืืืื ืืืจืื ืืฉืืืช ืฉืืืื ืฉืืืืช ืืืืื ืืืช (ื ืื ืขืช ืืืฉื ืืคืืืื ืืืจืื ืฉืืืช ืืืจ).
ืืืืคื ืืืื, podSelectors ืืืกืืืืช ืื ืืกื ืืืฆืืื ืืืืืื ืืืืืจ ืจืง ืคืืืื ืืืจืื ืืฉืืืช ืฉืืื, ืืื ืื ืืืืื ืชืฉืื ืืืชื ืขื 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, ืืืื ืชืจืืืืื ืืืจืืื ืฉืืืช. ืชืืืืืช (ืชืืืืืช - ืชืืืืช) ืื ืืืงืืืืืช ืืชืืืืช ืืขื ื. ืืืื ืืืช ืืจืฉืช ืฉื Kubernetes ืืฉืชืืฉืช ืืชืืืืืช ืืืืืจื ืชืจืืืืืืขืืืื ืื ืืืื:
podSelector:
matchLabels:
role: db
โฆ ืื ืืจืืื ืฉืืืชืืืืื ืื ืืืื. ืืืืื ืื ืืืืจืช ืืช ืื ืืคืืืื ืืืจืืื ืืฉืืืช ืขื ืืชืืืืืช ืืืชืืืืืช:
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 ืืืืืจืช ืขืืืจ ืืขื - ืงืืืฆื ืฉื ืชืจืืืืื ืขืืืื ืื ืืืื - ืืืืืจ ืืื ืงืืืขืื ืืืืื ืืชืขืืืจืช ืื ืืกื ื/ืื ืืฆืืื. ืืืืืื ืฉืื ื, ืืืขื ืฉื ืืืืื ืืืช ืืืื ืื ืืคืืืื ืืืจืื ืืฉืืืช 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
ืืืืื ืืืช ืื, ืคืืชื ืชื ืืขื ื ืื ืกืช ืืชืจืืืื ืืืขื. ืืืืืื ืืืจืืช, ืื ืืกื ืืื ืืืงืืจ ืืืืืจื ืืื ืืืขื ืืืชืืื. ืืื ืื, ืืฆืืื ืืื ืืืขื ืืืืืจื ืืื ืืืงืืจ ืฉืื.
ืื ืฉืืื ืขืจื ืืฉื ื ืืืงื ืืืืช ืืฉ: ืื ืืกื โ ืืขื; ืืขื โ ืืฆืืื.
ืืฆืืื ื-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
ืืื ืจืืง, ืืืื ืืื ืืืืจ ืืขืงืืคืื ืื ืืคืืืื ืืื ืืจืืื ืืฉืืืช, ืืืคืฉืจ 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 ืืชืื ืืจืื ืืฉืืืช ืืืื 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. ืื ืฉืื ืคืจื ืืืืืื ืืืืืื ืืืืช ืจืืืง ืืืชืจ ืืืืืืื ืฉืืืืชืืช DNS ืืฉืืจืืช DNS ืกืคืฆืืคื ื kube-system
. ืืกืขืืฃ "ืกื ื ืืคื ืืจืืื ืฉืืืช ืืชืจืืืืื" ืืืื ืื ืืื ืืืฉืื ืืืช.
ืืคืฉืจืืช ื ืืกืคืช ืืื ืืคืชืืจ DNS ืืจืืช ืืจืื ืืฉืืืช. ืืืงืจื ืื, ืื ืืืื ืฆืืจื ืืคืชืื ืืืชื ืขืืืจ ืื ืฉืืจืืช:
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
null podSelector
ืืืืจ ืืช ืื ืืคืืืื ืืืจืื ืืฉืืืช.
ืืชืืื ืจืืฉืื ื ืืกืืจ ืืื
ืืืืืืช ืืฉ ืงืื ืื ืฆืืื ืืืืช, ืืคืขืืื (Allow or Deny) ืขื ืืืืื ื ืงืืขืช ืืคื ืืืื ืืจืืฉืื ืฉืืื ืขืืืืช ืื. ื-Kubernetes, ืกืืจ ืืืืื ืืืช ืืื ื ืืฉื ื.
ืืืจืืจืช ืืืื, ืืืฉืจ ืื ืืืืืจืช ืืืื ืืืช, ืชืงืฉืืจืช ืืื ืคืืืื ืืืชืจืช ืืื ืืืืืื ืืืืืืฃ ืืืืข ืืืืคื ืืืคืฉื. ืืจืืข ืฉืืชืืืืื ืืืืฉ ืืืื ืืืช, ืื ืคืื ืืืืฉืคืข ืืืื ืืื ืืคืืืช ืืืคื ืืืืืื ืืืชืื ืื ืืชืืง (OR ืืืื) ืฉื ืื ืืคืืืืกืืช ืฉืืืจื ืื. ืชืจืืืืื ืฉืืื ื ืืืฉืคืขืื ืืืืื ืืืช ืืืฉืื ื ืฉืืจืื ืคืชืืืื.
ืืชื ืืืื ืืฉื ืืช ืืชื ืืืืช ืื ืืืืฆืขืืช ืืื ืืคืฉืื.
ืืื ืืคืฉืื ("ืืืืฉื")
ืืืื ืืืช ืืืืช ืืฉ ืืื ืขืช ืืืจื ืืื ืื ืชืขืืืจื ืฉืืื ื ืืืชืจืช ืืืคืืจืฉ.
ื-Kubernetes ืืื ืคืขืืื ืฉื ืืืืฉืืขื ืืืช, ื ืืชื ืืืฉืื ืืคืงื ืืืื ืขื ืืืื ืืืช ืจืืืื (ืืชืืจื ืืช) ืขื ืืื ืืืืจืช ืงืืืฆื ืจืืงื ืฉื ืชืจืืืืื (ืื ืืกื):
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: deny-all
namespace: default
spec:
podSelector: {}
policyTypes:
- Ingress
ืืืื ืืืช ืื ืืืืจืช ืืช ืื ืืคืืืื ืืืจืื ืืฉืืืช ืืืฉืืืจื ืื ืืกื ืืืชื ืืืืืจืช, ืืืื ืขืช ืืช ืื ืืชืขืืืจื ืื ืื ืกืช.
ืืืืคื ืืืื, ืชืืื ืืืืืื ืืช ืื ืืชื ืืขื ืืืืฆืืช ืืืจืื ืฉืืืช:
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: deny-all-egress
namespace: default
spec:
podSelector: {}
policyTypes:
- Egress
ืฉืื ืื ืื ืืืื ืืืช ื ืืกืคืช ืืืืคืฉืจืช ืชืขืืืจื ื-pods ืืืจืื ืืฉืืืช ืชืงืื ืขืืืคืืช ืขื ืืื ืื (ืืืืื ืืืืกืคืช ืืื ืืืชืจ ืืคื ื ืืื ืืืืื ืืชืฆืืจืช ืืืืช ืืฉ).
ืืคืฉืจ ืืื (Any-Any-Any-Allow)
ืืื ืืืฆืืจ ืืืื ืืืช 'ืืคืฉืจ ืืื', ืขืืื ืืืืกืืฃ ืืช ืืืื ืืืช ืืืืื ืฉืืืขืื ืืจืืื ืจืืง ingress
:
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: allow-all
namespace: default
spec:
podSelector: {}
ingress: # <<<
- {} # <<<
policyTypes:
- Ingress
ืื ืืืคืฉืจ ืืืฉื ื ืื ืืคืืืื ืืื ืืจืืื ืืฉืืืช (ืืื ื-IP) ืืื ืคืื ืืืจืื ืืฉืืืช default
. ืืชื ืืืืช ืื ืืืคืขืืช ืืืจืืจืช ืืืื, ืื ืฉืืืจื ืืื ืืื ืฆืืจื ืืืืืืจ ืืืชื ืืืชืจ. ืขื ืืืช, ืืคืขืืื ืืืชืื ืฉืืืื ืขืืื ืืืฉืืืช ืืืืคื ืืื ื ืืื ืืจืฉืืืช ืกืคืฆืืคืืืช ืืื ืืืืื ืืช ืืืขืื.
ื ืืชื ืืฆืืฆื ืืช ืืืื ืืื ืืืคืฉืจ ืืืฉื ืจืง ื ืกื ืกืคืฆืืคื ืฉื ืชืจืืืืื (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
ืืืืื ืืืช ืืืื ืืืคืฉืจืช ืืช ืื ืชืขืืืจืช ืืื ืืกื ืืืืฆืืื, ืืืื ืืืฉื ืืื IP ืืืืฅ ืืืฉืืื:
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: allow-all
spec:
podSelector: {}
ingress:
- {}
egress:
- {}
policyTypes:
- Ingress
- Egress
ืฉืืืื ืฉื ืคืืืืกืืช ืืจืืืืช
ืืืื ืืืช ืืฉืืืืช ืืืืฆืขืืช OR ืืืื ืืฉืืืฉ ืจืืืช; ืืืจืฉืืืช ืฉื ืื ืคืื ื ืงืืขืืช ืืืชืื ืื ืืชืืง ืฉื ืื ืืืืื ืืืช ืืืฉืคืืขื ืขืืื:
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
). ืืืื ืืืช ืืืืืืจื ืื ืืกื (ืื ืืฆืืื) ืชืืืืฃ ืื ืืช ืื.
ืงืฉืจ ืืื ืืจืืื ืฉืืืช
ืืืจืืจืช ืืืื, ืฉืืชืืฃ ืืืืข ืืื ืืจืืื ืฉืืืช ืืืชืจ. ื ืืชื ืืฉื ืืช ืืืช ืขื ืืื ืฉืืืืฉ ืืืืื ืืืช ืืืืฉื ืฉืชืืืื ืชื ืืขื ืืืฆืืช ื/ืื ื ืื ืกืช ืืืจืื ืืฉืืืช (ืจืื "ืืื ืืคืฉืื" ืืืขืื).
ืืืืจ ืฉืืกืืช ืืช ืืืืฉื ืืืจืื ืฉืืืช (ืจืื "ืืื ืืืกืจื" ืืืขืื), ืชืืื ืืืฆืข ืืจืืืื ืืืืื ืืืช ืืืืื ืขื ืืื ืืชื ืืคืฉืจืืช ืืืืืืจืื ืืืจืื ืฉืืืช ืกืคืฆืืคื ืืืืฆืขืืช 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
ืืชืืฆืื ืืื, ืื ืืคืืืื ืืืจืื ืืฉืืืช default
ืชืืื ืืืฉื ืืชืจืืืืื postgres
ืืืจืื ืืฉืืืช database
. ืืื ืื ืื ืืชื ืจืืฆื ืืคืชืื ืืืฉื ื postgres
ืจืง ืชืจืืืืื ืกืคืฆืืคืืื ืืืจืื ืืฉืืืช 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
ืชืืืืืช ืืจืืืืช ืืืืจืืช ื-I
ืืืืื ืขืืืจ ืืืืช ืืฉ ืขื ืืกืคืจ ืืืืืืงืืื (ืืืจืืื, ืจืฉืชืืช, ืงืืืฆืืช) ืืฉืืืืื ืืืืฆืขืืช OR ืืืื. ืืืื ืืื ืืขืืื ืื ืืงืืจ ืืืืืื ืชืืื Host_1
ืื Host_2
:
| Source | Destination | Service | Action |
| ----------------------------------------|
| Host_1 | Subnet_A | HTTPS | Allow |
| Host_2 | | | |
| ----------------------------------------|
ืืืืคื, ืืงืืืจื ืืก ืืชืืืืืช ืืฉืื ืืช ื podSelector
ืื namespaceSelector
ืืฉืืืืื ืขื AND ืืืื. ืืืืืื, ืืืื ืืื ืืืืจ ืชืจืืืืื ืืขืื ืฉืชื ืืชืืืืืช, role=db
ะ version=v2
:
podSelector:
matchLabels:
role: db
version: v2
ืืืชื ืืืืืื ืื ืขื ืื ืกืืื ืืืืคืจืืืจืื: ืืืจืจื ืืขืื ืืืื ืืืช, ืืืจืจื ืชืจืืืืื ืืืืจืจื ืืจืื ืฉืืืช.
ืจืฉืชืืช ืืฉื ื ืืืชืืืืช IP (IPBlocks)
ืืืืืช ืืฉ ืืฉืชืืฉืืช ืืจืฉืชืืช VLAN, ืืชืืืืช IP ืืจืฉืชืืช ืืฉื ื ืืื ืืคืื ืจืฉืช.
ื-Kubernetes, ืืชืืืืช IP ืืืงืฆืืช ืืชืจืืืืื ืืืืคื ืืืืืืื ืืืืืืืช ืืืฉืชื ืืช ืืขืชืื ืงืจืืืืช, ืื ืฉืชืืืืืช ืืฉืืฉืืช ืืืืืจืช ืคืืืื ืืืจืืื ืฉืืืช ืืืืื ืืืช ืจืฉืช.
ืจืฉืชืืช ืืฉื ื (ipBlocks
) ืืฉืืฉืื ืืขืช ื ืืืื ืืืืืจืื ืืืฆืื ืืื (ืฆืคืื-ืืจืื) ื ืื ืกืื (ื ืื ืกืื) ืื ืืืฆืืื (ืืืฆืืื). ืืืืืื, ืืืื ืืืช ืื ื ืคืชืืช ืืื ืืคืืืื ืืืจืื ืืฉืืืช 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
ืืืจืจ ืืคืื ืืจืืง ืืืืืื ืื ืคืืจืืฉื "ืืืจ ืืช ืื ืืคืืืื ืืืจืื ืืฉืืืช."
ืืืื ืืืช ืื ืืืคืฉืจืช ืืืฉื ืจืง ื-8.8.8.8; ืืืฉื ืืื IP ืืืจ ืืกืืจื. ืื ืืขืฆื, ืืกืืช ืืช ืืืืฉื ืืฉืืจืืช ื-DNS ืืคื ืืื ืฉื Kubernetes. ืื ืืชื ืขืืืื ืจืืฆื ืืคืชืื ืืืชื, ืฆืืื ืืืช ืืืคืืจืฉ.
ืืืจื ืืื ipBlocks
ะธ podSelectors
ืกืืชืจืืช ืื ืืช ืื, ืืืืืื ืฉืื ื ืขืฉื ืฉืืืืฉ ืืืชืืืืช ื-IP ืืคื ืืืืืช ืฉื ืคืืืื ipBlocks
. ืขื ืืื ืฆืืื ืชืจืืืืื ืคื ืืืืื ืฉื IP, ืืืขืฉื ืชืืคืฉืจ ืืืืืจืื ืื/ืืคืืืื ืขื ืืืชืืืืช ืืืื. ืืคืืขื, ืื ืชืืข ืืืืื ืืชืืืช IP ืืืฉืชืืฉ, ืืื ืืกืืื ืฉืืกืืจ ืืืฉืชืืฉ ืืื ืืืืืจืช ืคืืืื.
ืืืืืื ื ืืืืช, ืืืืื ืืืช ืืืื ืืืืืช ืืช ืื ืืชืืืืช ื-IP ืืืื ืืืคืฉืจืช ืืืฉื ืืื ืฉืืจ ืืคืืืื:
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
ืืชื ืืืื ืืคืชืื ืืืฉื ืจืง ืืืชืืืืช IP ืืืฆืื ืืืช, ืืืขื ืืชืืืืช ื-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
ืืฆืืืืช ืืคืจืืืืงืืืื
ืืืจื ืืื ืชืจืืืืื ืืืืื ืื ืืืฆืืื ืืืช. ืื ืืืืจ ืฉืืชื ืคืฉืื ืื ืืืื ืืฆืืื ืืกืคืจื ืืฆืืืืช ืืืืื ืืืช ืืืืฉืืืจ ืืื ืืืจืืจืช ืืืื. ืขื ืืืช, ืืืืืฅ ืืืืืื ืืื ืืืคืฉืจ ืืืื ืืืช, ืื ืฉืืืงืจืื ืืกืืืืื ืขืืืื ืชืืื ืืฆืืื ืืฆืืืืช:
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 ืืืืื ืืืช ืืจืฉืช.
ืื ืื ืื ืืื ืฆืจืื ืืืืืฉื ืื ืืืคืืืืื: ืื ืืืื ื ืืคื ืืื ืฉื ืืฉืืจืืช (ืืืฆืืืืช ืฉืืคืืืื ืืืืื ืื) ืืฉืชื ื, ืืืื ืฆืืจื ืืขืืื ืืช ืืืื ืืืช ืืจืฉืช.
ืืืฉื ืืืจืืืืืช ืืืฉื ืืืืฆืขืืช Service Mesh (ืืืืืื, ืจืื ืขื Istio ืืืื - ืชืจืืื ืืขืจื) ืืืคืฉืจ ืื ืืืชืืืื ืขื ืืขืื ืื.
ืืื ืืฉ ืฆืืจื ืืจืฉืื ืื Ingress ืืื Egress?
ืืชืฉืืื ืืงืฆืจื ืืื ืื, ืืื ืฉืคืื A ืืชืงืฉืจ ืขื ืคืื B, ืืฉ ืืืคืฉืจ ืื ืืืฆืืจ ืืืืืจ ืืืฆื (ืืฉืืื ืื ืฆืจืื ืืืืืืจ ืืืื ืืืช ืืฆืืื), ืืคืื B ืืืื ืืืืืช ืืกืืื ืืงืื ืืืืืจ ื ืื ืก ( ืืฉื ืื, ืืืชืื, ืืชื ืฆืจืื ืืืื ืืืช ืื ืืกื).
ืขื ืืืช, ืืคืืขื, ืืชื ืืืื ืืืกืชืื ืขื ืืืื ืืืช ืืจืืจืช ืืืืื ืฉืชืืคืฉืจ ืืืืืจืื ืืืื ืืืืืื ืื ืื ืืฉื ื ืืืืืื ืื.
ืื ืืืื ืชืจืืื-ืืงืืจ ืืืืืจ ืขื ืืื ืืื ืื ืืืชืจ ืึฐืฆึดืืึธื-ืคืืืืืืงืืื, ืืืืืืืช ืฉืืืืื ืขืืื ืืืงืืขื ืืคื ื ืืชืืงื. ืืืงืจื ืื, ืชืฆืืจื ืืืคืฉืจ ืืืคืืจืฉ ืืืืืจ ืืชืจืืื -ืื ืืขื. ืื ืคืื ืื ื ืืืจ ืขื ืืื ืืืื ืืืช ืืืฉืื, ืชืขืืืจื ืืืฆืืช (ืืฆืืื) ืฉืื ืืืชืจืช ืืืจืืจืช ืืืื.
ืืืืคื ืืืื, ืืืจืื ืฉื ืืชืจืืื ืืืื ึดืืขึธื, ืฉื ืืืจ ืขื ืืื ืืื ืื ืืืชืจ ืืืืจื-ืคืืืืืืงืืื, ืืืงืืขื ืืคื ื ืืชืืงื. ืืืงืจื ืื, ืขืืื ืืืคืฉืจ ืื ืืืคืืจืฉ ืืงืื ืชืขืืืจื ืืชืจืืื ืืืงืืจ. ืื ืคืื ืื ื ืืืจ ืขื ืืื ืืืื ืืืช ืืืฉืื, ืื ืชืขืืืจืช ืืื ืืกื ืขืืืจื ืืืชืจืช ืืืจืืจืช ืืืื.
ืจืื Stateful ืื Stateless ืืืื.
ืืืื ืื
ืืืื ืืืช ืืจืฉืช ืฉื Kubernetes ืืื ื ืืืืื ืืจืฉืื ืชืขืืืจื. ืื ืืงืฉื ืืงืืืข ืื ืืืื ืืืช ืคืืขืืช ืืืชืืื ื ืืืกืื ืืืื ืืช ื ืืชืื ืืืืืื.
ืืงืจืช ืชืขืืืจื ืืฉืืจืืชืื ืืืฆืื ืืื
ืืืื ืืืช ืืจืฉืช ืฉื Kubernetes ืืื ื ืืืคืฉืจืช ืื ืืฆืืื ืฉื ืืืืืื ืืื (DNS) ืืืงืืขื ืืฆืืื. ืขืืืื ืื ืืืืืื ืืื ื ืืืืช ืืฉืืขืืชืืช ืืืฉืจ ืื ืกืื ืืืืืื ืชื ืืขื ืืืขืืื ืืืฆืื ืืื ืฉืืื ืืื ืืชืืืช IP ืงืืืขื (ืืืื aws.com).
ืืืืงืช ืืืื ืืืช
ืืืืืช ืืฉ ืืืืืจื ืืืชื ืื ืืคืืื ืืกืจืื ืืงืื ืืช ืืืืื ืืืช ืืฉืืืื. Kubernetes ืื ืขืืฉื ืืืืืช ืืกืืื. ืืขืช ืืืืจืช ืืืื ืืืช ืจืฉืช ืืืืฆืขืืช kubectl, Kubernetes ืขืฉืืื ืืืฆืืืจ ืฉืืื ืฉืืืื ืืืกืจื ืืงืื ืืืชื. ืืืงืจืื ืืืจืื, Kubernetes ืชืืงื ืืช ืืคืืืืกื ืืชืืื ืืืชื ืืคืจืืื ืืืกืจืื. ื ืืชื ืืจืืืช ืืืชื ืืืืฆืขืืช ืืคืงืืื:
kubernetes get networkpolicy <policy-name> -o yaml
ืืืืจ ืฉืืขืจืืช ืืืืืืช ืฉื Kubernetes ืืื ื ื ืืชื ืช ืืืขืืืืช ืืขืฉืืื ืืคืกืคืก ืกืืืื ืืกืืืืื ืฉื ืฉืืืืืช.
ืืืฆืื ืืคืืขื
Kubernetes ืืื ื ืืืืฉืืช ืืืื ืืืช ืจืฉืช ืืขืฆืื, ืืื ืืื ืืกื ืืื ืฉืขืจ API ืืืขืืืจ ืืช ื ืื ืืฉืืืื ืืืขืจืืช ืืืกืืกืืช ืื ืงืจืืช ืืืฉืง ืจืฉืช Container (CNI). ืืืืจืช ืืืื ืืืช ืืืฉืืื Kubernetes ืืืื ืืืงืฆืืช ืืช ื-CNI ืืืชืืื ืืื ืืืฆืืจืช ืืืื ืืืช ืืฉืจืช ื ืืืื ืืืืช ืืฉ ืืืื ืืืชืงืื ืืืชื ืขื ืืืืืช ืืฉ. ืื ืชืืื ืื ืืืืืื ืฉืืฉ ืื CNI ืืืื ืื, ืืืงืจื ืฉื ืคืืืคืืจืืืช Kubernetes, ืืชืืจื ืืขื ื (ืชืืื ืืจืืืช ืืช ืจืฉืืืช ืืกืคืงืื
ืฉืื ืื ืฉ-Kubernetes ืื ืชืืืืจ ืืืชื ืื ืชืืืืจ ืืืื ืืืช ืจืฉืช ืืื ื-CNI ืืืชืืื.
ืืืื ื ืื ืืกืจืช ืืืื ื?
ืื ื-CNIs ืฉื Kubernetes ืฉื ืชืงืืชื ืืื ืื ืกืืืืกืืืื (ืืืืืื, Calico ืืฉืชืืฉ ื-Linux conntrack). ืื ืืืคืฉืจ ืืคืื ืืงืื ืชืืืืืช ืขื ืืืืืจ ื-TCP ืฉืืื ืืื ืืืื ืฆืืจื ืืืงืื ืืืชื ืืืืฉ. ืขื ืืืช, ืื ื ืื ืืืืข ืืชืงื Kubernetes ืฉืืืืื ืืืื ืืช.
ื ืืืื ืืืื ืืืช ืืืืื ืืชืงืื
ืื ื ืืื ืืจืืื ืืฉืคืจ ืืช ืืืืคืช ืืืื ืืืช ืืืืืื ื-Kubernetes:
- ืืชืื ืืช ืืืจืืืืงืืื ืืช ืฉื Service Mesh ืืฉืชืืฉืช ืืืืืืืช ืฆืืืืืช ืืื ืืกืคืง ืืืืืจืื ืืคืืจืืช ืืืงืจืช ืชืขืืืจื ืืจืืช ืืฉืืจืืช. ืืืืืื ืื ืื ื ืืืืืื ืืงืืช
Istio . - ืืืง ืืกืคืงื ื-CNI ืืจืืืื ืืช ืืืืื ืฉืืื ืืื ืืืจืื ืืืืื ืืืช ืืจืฉืช ืฉื Kubernetes.
-
ืชืืคืื ืืืจืงื ืืกืคืง ื ืจืืืช ืืืืืืืฆืื ืฉื ืืืื ืืืช ืืจืฉืช ืฉื Kubernetes.
ืืืืืช Tufin Orca ืื ืืืช ืืช ืืืื ืืืช ืืจืฉืช ืฉื Kubernetes (ืืืื ืืืงืืจ ืืฆืืืืื ืืืกื ืืืขืื).
ืืืืข ื ืืกืฃ
-
ืืืืืืืช ืืืืื ืืืช ืจืฉืช ืฉืืืื ื ืขื ืืื Ahmet Alp Balkan ื-GKE ; -
ืชืืขืื ืืืืชืจ ืืจืฉืื ืฉื Kubernetes ; -
ืืืจืื ืืืืื ืืจืฉืช ืฉื Kubernetes ; -
ืกืงืจืืคื ืืืืืงืช ืืืื ืืืช ืจืฉืช .
ืืกืงื ื
ืืืื ืืืช ืืจืฉืช ืฉื Kubernetes ืืฆืืขื ืกื ืืื ืฉื ืืืื ืืคืืืื ืืฉืืืืืช, ืื ืื ืืื ื ืืื ืืืืืืืืืื ืืืฉ ืืื ืืงืืืืช ืจืืืช. ืืืื ืืืืจืืืืช ืืื, ืื ื ืืืืื ืฉืืืื ืืืช ืืฉืืืืืช ืงืืืืืช ืจืืืช ืืื ืืขืืืชืืช. ืคืชืจืื ืืช ืืคืฉืจืืื ืืืขืื ืื ืืืืืื ืืืืืืฆืื ืฉื ืืืืจืืช ืืืื ืืืช ืื ืฉืืืืฉ ืืืื ืคืืืื ืืืจืื.
ืื ื ืืงืืื ืฉืืืืจืื ืืื ืืขืืืจ ืื ืงืืช ืืื ืฉืืืืช ืืืคืชืืจ ืืขืืืช ืฉืืชื ืขืืื ืืืืชืงื ืืื.
ื .ื ืืืืชืจืื
ืงืจื ืื ืืืืื ืฉืื ื:
- "ืืืจื ืืฉืืจืืชื ืืืงืจื ืขื Istio":
ืืืง 1 (ืืืื ืืชืืื ืืช ืืขืืงืจืืืช) ,ืืืง 2 (ื ืืชืื, ืืงืจืช ืชื ืืขื) ,ืืืง 3 (ืืืืื) ; - "ืืืจืื ืืืืืจ ืืจืฉืช ื-Kubernetes":
ืืืงืื 1 ื-2 (ืืื ืจืฉืช, ืจืฉืชืืช ืฉืืืช ืขื) ,ืืืง 3 (ืฉืืจืืชืื ืืขืืืื ืชืขืืืจื) ; - ยซ
Docker ื-Kubernetes ืืกืืืืืช ืชืืืขื ืืืช ืืืืื "; - ยซ
9 ืฉืืืืช ืขืืืื ืืืืืฆืืช ืืืืืืช Kubernetes "; - ยซ
11 ืืจืืื (ืื) ืืืืคืจืฅ ื- Kubernetes ".
ืืงืืจ: www.habr.com