ืืืจืช ืืืืืจ ืืื ืืืฆืื ืืงืืจื ืืช ืืืกืืืืช ืฉื ืจืฉืชืืช ืื ืืืื ืืืื ืืืช ืจืฉืช ื-Kubernetes, ืืื ืื ืืช ืืชืืกืฃ Calico ืฉื ืฆื ืฉืืืฉื ืืืจืืื ืืช ืืืืืืืช ืืกืื ืืจืืืืช. ืืืืจื ืืืจื, ืงืืืช ืืชืฆืืจื ืืืื ืชืืื ืืช ืืืืืื ืืืืฆืขืืช ืืืืืืืช ืืืืชืืืช ืื ืืกืืื ืืชืคืขืื ืฉืื ื.
ืืืื ืืืืจ ืืืืฉืืจ ืืจืฉืช ืฉื Kubernetes
ืื ื ืืชื ืืืืืื ืืฉืืื Kubernetes ืืื ืจืฉืช. ืืืจ ืคืจืกืื ื ืืืืจืื ืขื ืืืกืืืืช ืฉืืื: "
ืืืงืฉืจ ืฉื ืืืืจ ืื, ืืฉืื ืืฆืืื ืื K8s ืขืฆืื ืืื ื ืืืจืืืช ืืงืืฉืืจืืืช ืืจืฉืช ืืื ืงืื ืืืื ืจืื ืืฆืืชืื: ืืฉื ืื, ืชืืกืคืื ืฉื CNI (ืืืฉืง ืจืฉืช ืืืื). ืขืื ืขื ืืจืขืืื ืืื ืื ืื ื
ืืืืืื, ืื ืคืืฅ ืืืืชืจ ืืืื ืืชืืกืคืื ืืืื ืืื
ืืกืืคืง "ืืืืฅ ืืงืืคืกื" ืืืจืืื ื ืืืื ืืืื ืืืช ืจืฉืช ืืืฉืืื Kubernetes
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
ืื ืื ืืืืืื ืืื ืคืจืืืืืืืืช
ืื ืืืืื ื ืฉืืฉ 2 ืกืืื ืชืขืืืจื: ืื ืืกื ืืคืื (Ingress) ืืืฆืืื ืืื ื (Egress).
ืืืขืฉื, ืืคืืืืืืงื ืืืืืงืช ื-2 ืืงืืืืจืืืช ืืืื ืขื ืกืื ืืืืื ืืชื ืืขื.
ืืชืืื ื ืื ืืจืฉืช ืืืื ืืื ืืืจืจ; ืื ืฉืืืื ืื ืขืืื. ืื ืืืื ืืืืืช ืคืื (ืื ืงืืืฆืช ืคืืืื) ืื ืกืืืื (ืืืืืจ ืืจืื ืฉืืืช). ืคืจื ืืฉืื: ืฉื ื ืกืืื ืืืืืืืงืืื ืืืื ืืืืืื ืืืืื ืชืืืืช (ืชืืืืช ืืืจืืื ืืืืืื ืฉื Kubernetes) - ืืื ืื ืืื ืฉืคืืืืืืงืืื ืคืืขืืื ืืืชื.
ืื ืืกืฃ ืืืกืคืจ ืกืืคื ืฉื ืืืจืจืื ืืืืืืืื ืขื ืืื ืชืืืืช ืืืฉืื, ืืคืฉืจ ืืืชืื ืืืืื ืืื "ืืคืฉืจ/ืืืืืฉ ืืื/ืืืื" ืืืืจืืืฆืืืช ืฉืื ืืช. ืืืืจื ืื ืืฉืชืืฉืื ืืืื ืื ืฉื ืืืืคืก:
podSelector: {}
ingress: []
policyTypes:
- Ingress
- ืืืืืื ืื, ืื ืืคืืืื ืืกืืืื ืืกืืืื ืืชื ืืขื ื ืื ืกืช. ื ืืชื ืืืฉืื ืืชื ืืืืช ืืคืืื ืขื ืืื ืืื ืืืื:
podSelector: {}
ingress:
- {}
policyTypes:
- Ingress
ืืืืคื ืืืื ืขืืืจ ืืืฆืืื:
podSelector: {}
policyTypes:
- Egress
- ืืื ืืืืืช ืืืชื. ืืื ื ืื ืฉืฆืจืื ืืืืื:
podSelector: {}
egress:
- {}
policyTypes:
- Egress
ืื ื ืืืืจ ืืืืืจืช ืชืืกืฃ CNI ืืืฉืืื, ืจืืื ืืฆืืื ืืืช ืื ืื ืชืืกืฃ ืจืฉืช ืชืืื ื-NetworkPolicy. ืืืืืื, ืืคืื ื ืฉืืืืืจ ืืืจ ืื ืืืืข ืืื ืืืืืืจ ืืืื ืืืช ืจืฉืช, ืืฉืจ
ืืืืจืืช ืขื Calico: ืชืืืืจืื
ื ืืชื ืืืฉืชืืฉ ืืชืืกืฃ Calico ืืฉืืืื ืขื ืคืื ื (ืชืช-ืคืจืืืงื
ืืืื ืืืืื ืืืืช ืืกืคืง ืืฉืืืืฉ ืืคืชืจืื ื"ืงืืคืกื" ืฉื K8s ืืืขืจืืช ื-API ืฉื Calico?
ืื ื ืื ืฉืืืื ื ื-NetworkPolicy:
- ืคืืืืืืงืืื ืืืืืืื ืขื ืืื ืืกืืืื;
- ืืืื ืืืช ืืื ืขื ืชืจืืืืื ืืืกืืื ืื ืืชืืืืืช;
- ื ืืชื ืืืืื ืืืืื ืขื ืชืจืืืืื, ืกืืืืืช ืื ืจืฉืชืืช ืืฉื ื;
- ืืืืื ืืืืืื ืืืืื ืคืจืืืืงืืืื, ืืคืจืื ืืฆืืืืช ืืฉืืืช ืื ืกืืืืื.
ืื ืืจืืืื Calico ืืช ืืคืื ืงืฆืืืช ืืืื:
- ื ืืชื ืืืืื ืืืื ืืืช ืขื ืื ืืืืืืงื: ืคืื, ืืืื, ืืืื ื ืืืจืืืืืืช ืื ืืืฉืง;
- ืืืืื ืืืืืื ืืืืื ืคืขืืื ืกืคืฆืืคืืช (ืืืกืืจ, ืืจืฉืื, ืจืืฉืื);
- ืืืขื ืื ืืงืืจ ืืืืืื ืืืืืื ืืืืืช ืืฆืืื, ืืืืื ืืฆืืืืช, ืคืจืืืืงืืืื, ืชืืื ืืช HTTP ืื ICMP, IP ืื ืจืฉืช ืืฉื ื (ืืืจ 4 ืื 6), ืื ืืืจืจ (ืฆืืชืื, ืืืจืืื, ืกืืืืืช);
- ืื ืืกืฃ, ืืชื ืืืื ืืืืกืช ืืช ืืขืืจ ืืชืขืืืจื ืืืืฆืขืืช ืืืืจืืช DNAT ืืืืื ืืืช ืืขืืจืช ืชืขืืืจื.
ืืืชืืืืืืืืช ืืจืืฉืื ืืช ื-GitHub ืืืืืจ Calico ืืชืืืจืืืช ืืืืื 2016, ืืฉื ื ืืืืจ ืืื ืชืคืก ืืคืจืืืงื ืขืืื ืืืืืื ืืืจืืื ืงืืฉืืจืืืช ืจืฉืช Kubernetes - ืขื ืื ืืขืืืื, ืืืฉื, ืชืืฆืืืช ืืกืงืจ,
ืืจืื ืคืชืจืื ืืช ืื ืืืืื ืืืืืื ืขื K8s, ืืืื
ืืืื ืืืฆืืขืื, ืืื ืืฆืืื ืืื. ืืืืืงืช ืืืืฆืจ ืฉืืื, ืฆืืืช ืืคืืชืื ืฉื Calico ืืคืืื ืืืฆืืขืื ืืกืืจืื ืืืืื, ืืฉืืื ืืจืืฅ ืืืชืจ ื-50000 ืืืืืืช ืขื 500 ืฆืืชืื ืคืืืืื ืขื ืงืฆื ืืฆืืจื ืฉื 20 ืืืืืืช ืืฉื ืืื. ืื ืืืื ืืขืืืช ืืงื ื ืืืื. ืชืืฆืืืช ืืืื
ืืคืจืืืงื ืืชืคืชื ืืืจ ืืืื, ืืื ืชืืื ืืขืืืื ืืคืชืจืื ืืช ืคืืคืืืจืืื ืื ืืืืื K8s, OpenShift, OpenStack, ืืคืฉืจ ืืืฉืชืืฉ ื-Calico ืืขืช ืคืจืืกืช ืืฉืืื ืืืืฆืขืืช
ืชืชืืื ืขื Calico
ืืืงืจื ืืืืื ืฉื ืฉืืืืฉ ื- Vanilla Kubernetes, ืืชืงื ืช CNI ืืกืชืืืช ืืฉืืืืฉ ืืงืืืฅ calico.yaml
, kubectl apply -f
.
ืืืื, ืืืจืกื ืื ืืืืืช ืฉื ืืชืืกืฃ ืชืืืืช ื-2-3 ืืืจืกืืืช ืืืืจืื ืืช ืฉื Kubernetes: ืืคืขืืื ืืืจืกืืืช ืืฉื ืืช ืืืชืจ ืืื ื ื ืืืงืช ืืืื ื ืืืืืืช. ืืืืจื ืืืคืชืืื, Calico ืคืืขื ืขื ืืจืขืื ื ืืื ืืงืก ืืขื 3.10 ืขื CentOS 7, Ubuntu 16 ืื Debian 8, ืขื ืืื iptables ืื IPVS.
ืืืืื ืืชืื ืืกืืืื
ืืืื ื ืืืืืช, ืืื ื ืกืชืื ืขื ืืงืจื ืคืฉืื ืืื ืืืืื ืืืฆื ืืืื ืืืช ืืจืฉืช ืืกืืืื Calico ืฉืื ื ืืืื ืืกืื ืืจืืืืช ืืืืฆื ืืืืฉื ืืืฆืืจืช ืืืืื ืืคืฉืืช ืืช ืืงืจืืืืช ืืืืืืฉืืช ืืชืฆืืจื ืฉืืื:
ืืฉื ื 2 ืืืฉืืื ืืื ืืจื ื ืคืจืืกืื ืืืฉืืื: ื-Node.js ืื-PHP, ืืื ืืื ืืฉืชืืฉ ื-Redis. ืืื ืืืกืื ืืืฉื ื-Redis ื-PHP, ืชืื ืฉืืืจื ืขื ืงืืฉืืจืืืช ืขื Node.js, ืคืฉืื ืืื ืืช ืืืืื ืืืช ืืืื:
kind: NetworkPolicy
apiVersion: networking.k8s.io/v1
metadata:
name: allow-redis-nodejs
spec:
podSelector:
matchLabels:
service: redis
ingress:
- from:
- podSelector:
matchLabels:
service: nodejs
ports:
- protocol: TCP
port: 6379
ืืขืฆื ืืคืฉืจื ื ืชื ืืขื ื ืื ืกืช ืื ืื Redis ื-Node.js. ืืืจืืจ ืฉืื ืื ืืกืจื ืฉืื ืืืจ ืืืจ. ืืจืืข ืฉืืืคืืข NetworkPolicy, ืื ืืืืจืจืื ืืืืืืจืื ืื ืืชืืืืื ืืืืืช ืืืืืืื, ืืื ืื ืฆืืื ืืืจืช. ืขื ืืืช, ืืืื ืืืืืื ืืื ื ืืืื ืขื ืืืืืืงืืื ืืืจืื ืฉืืื ื ืืืืกืื ืขื ืืื ืืืืจืจ.
ืืืืืื ืืฉืชืืฉืช apiVersion
Kubernetes ืืืืฅ ืืงืืคืกื, ืืื ืฉืื ืืืจ ืื ืืื ืข ืืื ืืืฉืชืืฉ ืื
apiVersion: crd.projectcalico.org/v1
kind: NetworkPolicy
metadata:
name: allow-redis-nodejs
spec:
selector: service == 'redis'
ingress:
- action: Allow
protocol: TCP
source:
selector: service == 'nodejs'
destination:
ports:
- 6379
ืืืื ืื ืฉืืืืืจื ืืขืื ืืืคืฉืจ ืื ืืืืืช ืื ืชืขืืืจื ืืจื ื-API ืืจืืื ืฉื NetworkPolicy ืืืืืื ืืื ืื ืขื ืกืืืจืืื ืฉืงืฉื ืืืืื ืืืืืืจ. ืืืงืจื ืฉื Calico, ืืื ืืฉื ืืช ืืช ืืืืืืื ืฉื ืืื ืืืืช ืืฉ ืืืืคื, ืคืฉืื ืฉื ื action: Allow
ืขื action: Deny
.
ืืืืื ืขื ืืื ืกืืืื
ืืขืช ืืืืื ื ืืฆื ืฉืื ืืคืืืงืฆืื ืืืืฆืจืช ืืืืื ืขืกืงืืื ืืืืกืืฃ ื-Prometheus ืื ืืชืื ื ืืกืฃ ืืืืฆืขืืช Grafana. ืืืขืืื ืขืฉืืื ืืืืื ื ืชืื ืื ืจืืืฉืื, ืฉืฉืื ื ืืชื ืื ืืฆืคืืื ืฆืืืืจืืช ืืืจืืจืช ืืืื. ืืืื ื ืกืชืืจ ืืช ืื ืชืื ืื ืืืื ืืขืื ืืื ืกืงืจื ืืืช:
ืคืจืืืชืืืก, ืืืื, ืืืืงื ืืกืืืืช ืฉืืจืืช ื ืคืจืืช - ืืืืืื ืื ืืืื ืืจืื ืฉืืืช ืืื ืื:
apiVersion: v1
kind: Namespace
metadata:
labels:
module: prometheus
name: kube-prometheus
ืฉืื metadata.labels
ืืชืืจืจ ืฉืื ืื ืืงืจื. ืืืืืืจ ืืขืื, namespaceSelector
(ืื ืืกืฃ ื podSelector
) ืคืืขื ืขื ืชืืืืืช. ืืื, ืืื ืืืคืฉืจ ืืงืืช ืืืืื ืืื ืืคืืืื ืืืฆืืื ืกืคืฆืืคืืช, ืชืฆืืจื ืืืืกืืฃ ืืืืืฉืื ืชืืืืช (ืื ืืงืืช ืืืงืืืืื), ืืืืืจ ืืื ืืืืื ืชืฆืืจื ืืื:
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: allow-metrics-prom
spec:
podSelector: {}
ingress:
- from:
- namespaceSelector:
matchLabels:
module: prometheus
ports:
- protocol: TCP
port: 9100
ืืื ืืชื ืืฉืชืืฉ ืืืืื ืืืช Calico, ืืชืืืืจ ืืืื ืื:
apiVersion: crd.projectcalico.org/v1
kind: NetworkPolicy
metadata:
name: allow-metrics-prom
spec:
ingress:
- action: Allow
protocol: TCP
source:
namespaceSelector: module == 'prometheus'
destination:
ports:
- 9100
ืืืืคื ืืืื, ืขื ืืื ืืืกืคืช ืืืื ืืืช ืืกืื ืื ืืฆืจืืื ืกืคืฆืืคืืื, ืชืืื ืืืื ืืคื ื ืืคืจืขืืช ืืืื ืืืช ืื ืืงืจืืืช ืืคืขืืืช ืืืืฉืืืื ืืืฉืืื.
ืืฉืืื ืืืืื ืืืืชืจ, ืืคื ืืืฆืจื Calico, ืืื ืืืฉืช "ืืกืื ืืื ืืคืชื ืืืคืืจืฉ ืื ืฉืืชื ืฆืจืื", ืืืชืืขืืช ื
ืฉืืืืฉ ืืืคืฆื Calico ื ืืกืคืื
ืืจืฉื ืื ืืืืืืจ ืืื ืฉืืืืฆืขืืช ืืกื ืืืืจืื ืฉื ืืืฉืงื API ืฉื Calico ืชืืืื ืืืืกืช ืืช ืืืืื ืืช ืฉื ืฆืืชืื, ืื ืืืืื ืืชืจืืืืื. ืืืืืื ืืืื ืืืืฆืขืืช GlobalNetworkPolicy
ืืืืืืช ืืืขืืืจ ืืงืฉืืช ICMP ืืืฉืืื ืกืืืจื (ืืืืืื, ืคืื ืืื ืืคืื ืืฆืืืช, ืืื ืชืจืืืืื ืื ืืฆืืืช ืืชืจืืื IP):
apiVersion: crd.projectcalico.org/v1
kind: GlobalNetworkPolicy
metadata:
name: block-icmp
spec:
order: 200
selector: all()
types:
- Ingress
- Egress
ingress:
- action: Deny
protocol: ICMP
egress:
- action: Deny
protocol: ICMP
ืืืงืจื ืฉืืขืื, ืขืืืื ื ืืชื ืืฆืืชื ืืฉืืื "ืืืืืข" ืื ืืื ืืืืฆืขืืช ICMP. ืืื ืืฉื ืืื ื ืคืชืจ ืืืืฆืขืื GlobalNetworkPolicy
, ืืืื ืขื ืืฉืืช HostEndpoint
:
apiVersion: crd.projectcalico.org/v1
kind: GlobalNetworkPolicy
metadata:
name: deny-icmp-kube-02
spec:
selector: "role == 'k8s-node'"
order: 0
ingress:
- action: Allow
protocol: ICMP
egress:
- action: Allow
protocol: ICMP
---
apiVersion: crd.projectcalico.org/v1
kind: HostEndpoint
metadata:
name: kube-02-eth0
labels:
role: k8s-node
spec:
interfaceName: eth0
node: kube-02
expectedIPs: ["192.168.2.2"]
ืืงืจื ื-VPN
ืืืกืืฃ, ืืชื ืืืืื ืืืืชืืช ืืืื ืืฉืืืืฉ ืืคืื ืงืฆืืืช Calico ืืืงืจื ืฉื ืืื ืืจืืงืฆืื ืงืจืืื ืืืฉืืื, ืืืฉืจ ืกื ืกืื ืืจืื ืฉื ืืืื ืืืช ืืื ื ืืกืคืืง. ืืื ืืืฉืช ืืืคืืืงืฆืืืช ืืืื ืืจื ื, ืืงืืืืช ืืฉืชืืฉืื ืืื ืืจืช VPN, ืืืืฉื ืื ื ืฉืืืช ืืืืคื ืืืืง ืืืืืืืช ืืจืฉืืื ืกืคืฆืืคืืช ืฉื ืฉืืจืืชืื ืืืืชืจืื ืืฉืืืืฉ:
ืืงืืืืช ืืชืืืจืื ื-VPN ืืจื ืืฆืืืช UDP ืจืืืื 1194, ืืืืฉืจ ืื ืืืืืจืื, ืืงืืืื ืืกืืืืื ืืจืฉืชืืช ืืืฉื ื ืฉื ืืฉืืืืืช ืืฉืืจืืชืื. ืจืฉืชืืช ืืฉื ื ืฉืืืืช ื ืืืคืืช ืืื ืื ืืืื ืฉืืจืืชืื ืืืืื ืืคืขืื ืืืืฉ ืืฉืื ืืื ืืชืืืช.
ืืืฆืืื ืืชืฆืืจื ืืื ืกืื ืืจืืืช, ืื ืฉืืืื ืืื ื ืืืื ืกืื ืืชืืืื ืงืืืขืช ืืชืฆืืจื ืฉื ืืืคืืืงืฆืื ืืืขืืจืชื ืืืฉืืื Kubernetes. ืืืืืื, ืืืืชื AWS LoadBalancer ืขืืืจ UDP ืืืคืืข ืืืฉ ืืกืืฃ ืืฉื ื ืฉืขืืจื ืืจืฉืืื ืืืืืืช ืฉื ืืืืจืื, ืืื ื ืืชื ืืืฉืชืืฉ ื-NodePort ืืืื ืืืขืืจื ืฉืื ืขื ืื ืฆืืชื ืืืฉืืื ืืื ืืคืฉืจ ืืฉื ืืช ืืช ืงื ื ืืืืื ืฉื ืืกืคืจ ืืืคืขื ืืฉืจืช ืขืืืจ ืืืจืืช ืกืืืื ืืช ืชืงืืืช. ืื ืืกืฃ, ืชืฆืืจื ืืฉื ืืช ืืช ืืืื ืืจืืจืช ืืืืื ืฉื ืืฆืืืืช...
ืืชืืฆืื ืืืืคืืฉ ืืืจ ืคืชืจืื ืืช ืืคืฉืจืืื, ื ืืืจื:
- ืคืืืื ืขื VPN ืืชืืื ื ืื ืืื ืฆืืืช ืคื ืืื
hostNetwork
, ืืืืืจ, ื-IP ืืคืืขื. - ืืฉืืจืืช ืืืฆื ืืืืฅ ืืจื
ClusterIP
. ืคืืจื ืืืชืงื ืคืืืืช ืขื ืืฆืืืช, ืื ืืืฉ ืืืืืฅ ืขื ืืกืชืืืืืืืช ืงืืืช (ื ืืืืืช ืืืชื ืืช ืฉื ืืชืืืช IP ืืืืชืืช). - ืงืืืขืช ืืฆืืืช ืฉืขืืื ืขืื ืืชืจืืื ืืื ืืขืืจ ืืชืืื ืืกืืคืืจ ืฉืื ื. ืื ื ืจืง ืืืื ืฉืืชื ืืืื "ืืืกืืจ" ืืืื ืืช ืืฉืืจืืช ืืฆืืืช ืื ืืืชืื ืฉืืจืืช ืฆืืื ืงืื ืฉืื ืืจ ืืช ืืชืืืช ื-IP ืื ืืืืืช ืฉื ืฉืืจืืช ื-VPN ืืืขืจืื ืืช ืจืฉืืืืช ื-DNS ืืจืฉืืืืช ืืฆื ืืงืืืืช - ืืื ืฉืืฉ ืื ืืกืคืืง ืืืืื.
ืื ืงืืืช ืืื ืฉื ื ืืชืื, ืื ื ืืืืืื ืืืืืช ืืืืคื ืืืืืื ืืงืื VPN ืืคื ืืชืืืช ื-IP ืฉืื ืฉืืื ืคืงื ืขื ืืื ืฉืจืช ื-VPN. ืืืื ืืืืื ืคืจืืืืืืืืช ืืืืืืช ืืืืฉื ืฉื ืืงืื ืืื ืืฉืืจืืชืื, ืืืืืืฉืช ืขื Redis ืื "ื:
apiVersion: crd.projectcalico.org/v1
kind: HostEndpoint
metadata:
name: vpnclient-eth0
labels:
role: vpnclient
environment: production
spec:
interfaceName: "*"
node: kube-02
expectedIPs: ["172.176.176.2"]
---
apiVersion: crd.projectcalico.org/v1
kind: GlobalNetworkPolicy
metadata:
name: vpn-rules
spec:
selector: "role == 'vpnclient'"
order: 0
applyOnForward: true
preDNAT: true
ingress:
- action: Deny
protocol: TCP
destination:
ports: [6379]
- action: Allow
protocol: UDP
destination:
ports: [53, 67]
ืืื, ืืืืืจ ืืืฆืืื 6379 ืืกืืจ ืืืืื, ืื ืืืงืืื ื ืฉืืจืช ืคืขืืืชื ืฉื ืฉืืจืืช ื-DNS, ืฉืชืคืงืืื ื ืคืืข ืืขืชืื ืงืจืืืืช ืืขืช ืขืจืืืช ืืืืื. ืืืืืื ืฉืืคื ืฉืฆืืื ืงืืื ืืื, ืืืฉืจ ืืืคืืข ืืืจืจ, ืืืื ืืืช ืืืืื ืืืืืืจืช ืืืจืืจืช ืืืื ืืื ืขืืื ืืื ืื ืฆืืื ืืืจืช.
ืชืืฆืืืช ืฉื
ืืคืืื, ืืืืฆืขืืช ื-API ืืืชืงืื ืฉื Calico, ืืชื ืืืื ืืืืืืจ ืืืฉื ืืช ืืืืคื ืืื ืื ื ืืชืื ืืชืื ืืืกืืื ืืืฉืืื. ืืืืคื ืืืื, ืืฉืืืืฉ ืื ืืืื ืืืืจืืืช ืืื ืืจื ืืืจืืจืื ืขื ืชืืชื, ืืืืืขืช ืจืฉืช L3 ืขื ืื ืืจืืช BGP ื-IP-IP ื ืจืื ืืคืืฆืชื ืืืชืงื ื ืคืฉืืื ืฉื โโKubernetes ืืจืฉืช ืฉืืืื... ืขื ืืืช, ืืืจืช ืืืื ื ืจืื ืื ืืจ ืงืืืื ืืฉืืืืฉื .
ืืืืื ืืฉืืื ืืื ืืขืืื ืืืจืืฉืืช ืืืืืื ืขืฉืื ืฉืื ืชืืื ืืืืืช ืืจ ืืืฆืืข, ืืืื ื ืืืฅ Calico (ืื ืคืชืจืื ืืืื) ืืืฆืื. ืืืืืืืืช ืฉื ืืชื ื ืืืืืจ ืื (ืขื ืฉืื ืืืื ืงืืื) ืืฉืืฉืืช ืืืกืคืจ ืืชืงื ืืช ืฉื ืืงืืืืชืื ื ื-AWS.
ื .ื.
ืงืจื ืื ืืืืื ืฉืื ื:
- ยซ
ืืืื ืืืืื ืืืช ืืจืฉืช ืฉื Kubernetes ืืื ืฉื ืืืืื "; - "ืืืจืื ืืืืืจ ืืจืฉืช ื-Kubernetes":
ืืืงืื 1 ื-2 (ืืื ืจืฉืช, ืจืฉืชืืช ืฉืืืช ืขื) ,ืืืง 3 (ืฉืืจืืชืื ืืขืืืื ืชืขืืืจื) ; - ยซ
Container Networking Interface (CNI) - ืืืฉืง ืจืฉืช ืืชืงื ืืงืื ืืืื ืจืื ืฉื ืืื ืืงืก ".
ืืงืืจ: www.habr.com