Installieren von Calico auf Amazon EKS - Amazon EKS

Installieren von Calico auf Amazon EKS

Project Calico ist eine Netzwerkrichtlinien-Engine für Kubernetes. Durch die Durchsetzung von Netzwerkrichtlinien mit Calico können Sie eine Netzwerksegmentierung implementieren und eine strikte Trennung von Kundendaten gewährleisten. Dies ist in Mehrmandantenumgebungen nützlich, in denen Sie Mandanten voneinander isolieren müssen, oder zum Schaffen separater Umgebungen für Entwicklung, Staging und Produktion. Netzwerkrichtlinien haben mit AWS-Sicherheitsgruppen gemeinsam, dass Sie Regeln für eingehenden und ausgehenden Datenverkehr aufstellen können. Statt aber Sicherheitsgruppen Instances zuzuweisen, weisen Sie Pods über Pod-Auswahlen und -Bezeichnungen Netzwerkrichtlinien zu. Das folgende Verfahren zeigt Ihnen, wie Sie Calico auf Linux-Knoten in Ihrem Amazon-EKS-Cluster installieren. Informationen zum Installieren von Calico auf Windows-Knoten finden Sie unter Verwenden von Calico auf Amazon-EKS-Windows-Containern.

Anmerkung
  • Calico wird bei der Verwendung von Fargate mit Amazon EKS nicht unterstützt.

  • Calico fügt Regeln zu iptables auf dem Knoten hinzu, die möglicherweise eine höhere Priorität haben als vorhandene Regeln, die Sie bereits außerhalb von Calico implementiert haben. Ziehen Sie in Erwägung, vorhandene iptables-Regeln zu Ihren Calico-Richtlinien hinzuzufügen, um zu vermeiden, dass Regeln außerhalb der Calico-Richtlinie von Calico überschrieben werden.

  • Wenn Sie Sicherheitsgruppen für Pods verwenden, unterliegt der Datenverkehr zu Pods auf Zweigstellennetzwerkschnittstellen nicht der Durchsetzung von Calico-Netzwerkrichtlinien und ist nur auf die Durchsetzung von Amazon-EC2-Sicherheitsgruppen beschränkt. Die Community bemüht sich, diese Einschränkung aufzuheben.

So installieren Sie Calico auf Ihren Amazon-EKS-Linux-Knoten

  1. Wenden Sie das Calico-Manifeste aus dem aws/amazon-vpc-cni-k8s-GitHub-Projekt an. Diese Manifeste erstellen DaemonSets im calico-system-Namespace.

    kubectl apply -f https://raw.githubusercontent.com/aws/amazon-vpc-cni-k8s/master/config/master/calico-operator.yaml kubectl apply -f https://raw.githubusercontent.com/aws/amazon-vpc-cni-k8s/master/config/master/calico-crs.yaml
  2. Sehen Sie sich die calico-system-DaemonSets an und warten Sie, bis der DaemonSet calico-node die gewünschte Anzahl (DESIRED) an Pods im READY-Zustand hat. Calico funktioniert dann.

    kubectl get daemonset calico-node --namespace calico-system

    Ausgabe:

    NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE calico-node 3 3 3 3 3 <none> 38s

So löschen Sie Calico aus Ihrem Amazon-EKS-Cluster

Wenn Sie Calico in Ihrem Amazon-EKS-Cluster nicht mehr verwenden, können Sie es mit den folgenden Befehlen löschen:

kubectl delete -f https://raw.githubusercontent.com/aws/amazon-vpc-cni-k8s/master/config/master/calico-crs.yaml kubectl delete -f https://raw.githubusercontent.com/aws/amazon-vpc-cni-k8s/master/config/master/calico-operator.yaml

Stars Policy-Demo

Dieser Abschnitt führt Sie durch die Stars Policy Demo der Project Calico-Dokumentation. In der Demo werden ein Front-End-, ein Backend- und ein Client-Service in Ihrem Amazon-EKS-Cluster erstellt. Außerdem wird in der Demo eine grafische Benutzeroberfläche (GUI) für die Verwaltung erstellt, in der die verfügbaren Wege für ein- und ausgehenden Datenverkehr zwischen den einzelnen Services dargestellt werden.

Bevor Sie Netzwerkrichtlinien erstellen, können alle Services bidirektional kommunizieren. Nachdem Sie die Netzwerkrichtlinien angewendet haben, können Sie sehen, dass der Client nur mit dem Frontend-Service und das Backend nur Datenverkehr vom Frontend akzeptiert.

So führen Sie die Stars Policy-Demo aus

  1. Wenden Sie die Front-End-, Backend-, Client- und Verwaltungs-UI-Services an:

    kubectl apply -f https://docs.projectcalico.org/v3.3/getting-started/kubernetes/tutorials/stars-policy/manifests/00-namespace.yaml kubectl apply -f https://docs.projectcalico.org/v3.3/getting-started/kubernetes/tutorials/stars-policy/manifests/01-management-ui.yaml kubectl apply -f https://docs.projectcalico.org/v3.3/getting-started/kubernetes/tutorials/stars-policy/manifests/02-backend.yaml kubectl apply -f https://docs.projectcalico.org/v3.3/getting-started/kubernetes/tutorials/stars-policy/manifests/03-frontend.yaml kubectl apply -f https://docs.projectcalico.org/v3.3/getting-started/kubernetes/tutorials/stars-policy/manifests/04-client.yaml
  2. Warten Sie, bis alle Pods den Status Running erreicht haben:

    kubectl get pods --all-namespaces --watch
  3. Zum Herstellen einer Verbindung zur Verwaltungs-Benutzeroberfläche leiten Sie Ihren lokalen Port 9001 an den management-ui-Service weiter, der auf Ihrem Cluster ausgeführt wird:

    kubectl port-forward service/management-ui -n management-ui 9001
  4. Öffnen Sie einen Browser auf Ihrem lokalen System und verweisen Sie ihn an http://localhost:9001/. Sie sollten nun die Verwaltungs-Benutzeroberfläche sehen. Der C--Knoten ist der Client-Service, der F-Knoten ist der Front-End-Service und der B--Knoten ist der Backend-Service. Jeder Knoten verfügt über vollständigen Kommunikationszugriff auf alle anderen Knoten (durch die fett markierten, farbigen Zeilen angegeben).

    
                        Öffnen der Netzwerkrichtlinie
  5. Wenden Sie die folgenden Netzwerkrichtlinien an, um die Services voneinander zu isolieren:

    kubectl apply -n stars -f https://docs.projectcalico.org/v3.3/getting-started/kubernetes/tutorials/stars-policy/policies/default-deny.yaml kubectl apply -n client -f https://docs.projectcalico.org/v3.3/getting-started/kubernetes/tutorials/stars-policy/policies/default-deny.yaml
  6. Aktualisieren Sie Ihren Browser. Wie Sie sehen, kann nun keiner der Knoten mehr über die Verwaltungs-Benutzeroberfläche erreicht werden und erscheint daher nicht mehr in der Benutzeroberfläche (UI).

  7. Wenden Sie die folgenden Netzwerkrichtlinien an, um der Verwaltungs-Benutzeroberfläche den Zugriff auf die Services zu erlauben:

    kubectl apply -f https://docs.projectcalico.org/v3.3/getting-started/kubernetes/tutorials/stars-policy/policies/allow-ui.yaml kubectl apply -f https://docs.projectcalico.org/v3.3/getting-started/kubernetes/tutorials/stars-policy/policies/allow-ui-client.yaml
  8. Aktualisieren Sie Ihren Browser. Wie Sie sehen, können die Knoten nun wieder über die Verwaltungs-UI erreicht werden, sie können jedoch nicht miteinander kommunizieren.

    
                        Benutzeroberflächen-Zugriff – Netzwerkrichtlinie
  9. Wenden Sie die folgende Netzwerkrichtlinie an, um Datenverkehr vom Front-End-Service zum Backend-Service zuzulassen:

    kubectl apply -f https://docs.projectcalico.org/v3.3/getting-started/kubernetes/tutorials/stars-policy/policies/backend-policy.yaml
  10. Wenden Sie die folgende Netzwerkrichtlinie an, um Datenverkehr vom client-Namespace zum Front-End-Service zuzulassen:

    kubectl apply -f https://docs.projectcalico.org/v3.3/getting-started/kubernetes/tutorials/stars-policy/policies/frontend-policy.yaml
    
                        Endgültige Netzwerkrichtlinie
  11. (Optional) Wenn Sie die Demo abgeschlossen haben, können Sie ihre Ressourcen mit den folgenden Befehlen löschen:

    kubectl delete -f https://docs.projectcalico.org/v3.3/getting-started/kubernetes/tutorials/stars-policy/manifests/04-client.yaml kubectl delete -f https://docs.projectcalico.org/v3.3/getting-started/kubernetes/tutorials/stars-policy/manifests/03-frontend.yaml kubectl delete -f https://docs.projectcalico.org/v3.3/getting-started/kubernetes/tutorials/stars-policy/manifests/02-backend.yaml kubectl delete -f https://docs.projectcalico.org/v3.3/getting-started/kubernetes/tutorials/stars-policy/manifests/01-management-ui.yaml kubectl delete -f https://docs.projectcalico.org/v3.3/getting-started/kubernetes/tutorials/stars-policy/manifests/00-namespace.yaml

    Auch nach dem Löschen der Ressourcen können weiter iptables-Regeln für die Knoten vorhanden sein, die mit dem Netzwerk in Ihrem Cluster auf unerwartete Weise interagieren könnten. Der einzige sichere Weg, Calico zu entfernen, besteht darin, alle Knoten zu beenden und zu recyceln. Um alle Knoten zu beenden, legen Sie entweder die Anzahl der gewünschten Auto Scaling-Gruppen auf 0 und anschließend wieder auf die gewünschte Zahl fest oder beenden einfach die Knoten. Wenn Sie die Knoten nicht recyceln können, finden Sie unter Deaktivieren und Entfernen von Calico-Richtlinien im GitHub-Repository für Calico Informationen zu einem Verfahren, das nur angewendet werden sollte, wenn keine andere Möglichkeit besteht.