本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
Amazon EKS 網路政策的星星示範
此示範會在您的 Amazon EKS 叢集上建立前端、後端和用戶端服務。示範中亦將建立管理圖形使用者介面,其顯示各服務之間可用的輸入和輸出路徑。建議您在未執行生產工作負載的叢集上完成示範。
在您建立任何網路政策前,所有服務都可以雙向通訊。在您套用網路政策後,便可看到用戶端只能與前端服務通訊,同時後端只能接受來自前端的流量。
-
套用前端、後端、用戶端和管理使用者介面服務:
kubectl apply -f https://eksworkshop.com/beginner/120_network-policies/calico/stars_policy_demo/create_resources.files/namespace.yaml kubectl apply -f https://eksworkshop.com/beginner/120_network-policies/calico/stars_policy_demo/create_resources.files/management-ui.yaml kubectl apply -f https://eksworkshop.com/beginner/120_network-policies/calico/stars_policy_demo/create_resources.files/backend.yaml kubectl apply -f https://eksworkshop.com/beginner/120_network-policies/calico/stars_policy_demo/create_resources.files/frontend.yaml kubectl apply -f https://eksworkshop.com/beginner/120_network-policies/calico/stars_policy_demo/create_resources.files/client.yaml
-
檢視全部 Pods 叢集上的 。
kubectl get pods -A
範例輸出如下。
在輸出中,您應該在以下輸出中顯示的命名空間中看到 pod。所以此
NAMES
的 Pod 和資料READY
欄中的 Pod 數量與下列輸出中的不同。在您看到具有類似名稱的 Pod 且它們都Running
位於STATUS
欄中之前,請勿繼續。NAMESPACE NAME READY STATUS RESTARTS AGE [...] client client-xlffc 1/1 Running 0 5m19s [...] management-ui management-ui-qrb2g 1/1 Running 0 5m24s stars backend-sz87q 1/1 Running 0 5m23s stars frontend-cscnf 1/1 Running 0 5m21s [...]
-
若要連接到管理使用者介面,請連接到在叢集上執行之服務的
EXTERNAL-IP
:kubectl get service/management-ui -n management-ui
-
打開瀏覽器到上一個步驟的位置。您應該會看到管理使用者介面。C 節點是用戶端服務,而 F 節點是前端服務,且 B 節點是後端服務。每個節點都有對所有其他節點的完整通訊存取權 (如粗體、上顏色行的文字所指示)。
-
在
stars
和client
命名空間中套用以下網路政策來將服務彼此隔離:kind: NetworkPolicy apiVersion: networking.k8s.io/v1 metadata: name: default-deny spec: podSelector: matchLabels: {}
您可以使用下列命令將政策同時套用至兩個命名空間:
kubectl apply -n stars -f https://eksworkshop.com/beginner/120_network-policies/calico/stars_policy_demo/apply_network_policies.files/default-deny.yaml kubectl apply -n client -f https://eksworkshop.com/beginner/120_network-policies/calico/stars_policy_demo/apply_network_policies.files/default-deny.yaml
-
重新整理您的瀏覽器。您看到管理使用者介面無法再到達任何節點,因此它們不會出現在使用者介面中。
-
套用下列不同的網路政策,以允許管理使用者介面存取服務。套用此政策以允許 UI:
kind: NetworkPolicy apiVersion: networking.k8s.io/v1 metadata: namespace: stars name: allow-ui spec: podSelector: matchLabels: {} ingress: - from: - namespaceSelector: matchLabels: role: management-ui
套用此政策以允許用戶端:
kind: NetworkPolicy apiVersion: networking.k8s.io/v1 metadata: namespace: client name: allow-ui spec: podSelector: matchLabels: {} ingress: - from: - namespaceSelector: matchLabels: role: management-ui
您可以使用下列命令來同時套用兩個政策:
kubectl apply -f https://eksworkshop.com/beginner/120_network-policies/calico/stars_policy_demo/apply_network_policies.files/allow-ui.yaml kubectl apply -f https://eksworkshop.com/beginner/120_network-policies/calico/stars_policy_demo/apply_network_policies.files/allow-ui-client.yaml
-
重新整理您的瀏覽器。您將看到管理使用者介面再次可到達各節點,但各節點無法互相通訊。
-
套用以下網路政策以允許流量從前端服務流向後端服務:
kind: NetworkPolicy apiVersion: networking.k8s.io/v1 metadata: namespace: stars name: backend-policy spec: podSelector: matchLabels: role: backend ingress: - from: - podSelector: matchLabels: role: frontend ports: - protocol: TCP port: 6379
-
重新整理您的瀏覽器。您可以看到前端服務可以與後端服務通訊。
-
套用以下網路政策以允許流量從用戶端流向後端服務:
kind: NetworkPolicy apiVersion: networking.k8s.io/v1 metadata: namespace: stars name: frontend-policy spec: podSelector: matchLabels: role: frontend ingress: - from: - namespaceSelector: matchLabels: role: client ports: - protocol: TCP port: 80
-
重新整理您的瀏覽器。您可以看到用戶端可以與前端服務通訊。前端服務仍然可以與後端服務通訊。
-
(選用) 在完成示範後,您可以刪除其資源。
kubectl delete -f https://eksworkshop.com/beginner/120_network-policies/calico/stars_policy_demo/create_resources.files/client.yaml kubectl delete -f https://eksworkshop.com/beginner/120_network-policies/calico/stars_policy_demo/create_resources.files/frontend.yaml kubectl delete -f https://eksworkshop.com/beginner/120_network-policies/calico/stars_policy_demo/create_resources.files/backend.yaml kubectl delete -f https://eksworkshop.com/beginner/120_network-policies/calico/stars_policy_demo/create_resources.files/management-ui.yaml kubectl delete -f https://eksworkshop.com/beginner/120_network-policies/calico/stars_policy_demo/create_resources.files/namespace.yaml
即使刪除資源之後,節點上仍可能有網路政策端點,這些端點可能會以非預期的方式干擾叢集中的聯網。移除這些規則的唯一確定方法,是重新啟動節點或終止所有節點並將其回收。若要終止所有節點,請將 Auto Scaling 群組所需的計數設定為 0,然後備份到所需的數字,或是只終止節點。