Antwort

0

Das Problem bestand darin, dass ich auf die RethinkDB-Instanzen über externe IPs zugegriffen habe. Aus irgendeinem Grund führt dies dazu, dass die Firewallregel mit internen Quell-IPs nicht übereinstimmt. Die Lösung bestand darin, stattdessen auf die Instanzen über interne DNS-Namen zuzugreifen. In diesem Fall gilt die Firewall-Regel.

Darüber hinaus gibt es bereits eine Standard-Firewall-Regel, default-allow-internal, die jeden Verkehr zwischen Instanzen auf dem gleichen Projekt ermöglicht. Daher muss ich keine eigene Regel erstellen.

1

"Damit nur Instanzen innerhalb desselben Projekts Zugriff haben" auf was?

Ich nehme an, Sie meinen nicht den Zugriff auf den Apiserver des Clusters, da diese IP von allen Ihren Instanzen aus erreichbar sein sollte.

Wenn Sie meinen, auf einen Container in einem Cluster von einer Instanz außerhalb des Clusters aus zuzugreifen, können Sie eine Firewallregel erstellen, die den Verkehr innerhalb Ihres GCE-Netzwerks erlaubt. Sie können entweder sehr permissiv oder ein wenig mehr feinkörnige, wenn dies zu tun:

  1. Sehr permissive - nur eine Firewall-Regel erstellen, die in Verkehr von dem Quell-IP-Bereich 10.0.0.0/8 auf alle Instanzen ermöglichen Ihre Netzwerk (fügen Sie keine "Ziel-Tags" hinzu) auf allen Protokollen und Ports, die Sie interessieren (zB tcp:1-65535,udp:1-65535,icmp). Der Bereich 10.0.0.0/8 umfasst alle Instanzen und Container in Ihrem Netzwerk (und nichts außerhalb davon).

  2. Separate Firewall pro Cluster - Führen Sie das gleiche wie Nummer eins aus, fügen Sie jedoch das Ziel-Tag hinzu, das sich auf allen Knoten im Cluster befindet. Sie können dies anhand der Tags der einzelnen Instanzen oder anhand der Ziel-Tags in den Firewalls ermitteln, die GKE bei der Erstellung für den Cluster erstellt hat. Der Vorteil dieses Ansatzes besteht darin, dass alles in Ihrem Netzwerk mit Ihrem Cluster kommunizieren kann, ohne etwas in Ihrem Netzwerk zu offenbaren, das Sie nicht so sehr öffnen möchten.

Wenn Sie meinen, einen Dienst von außerhalb des Clusters zugreifen, dann ist es ein wenig härter, da Sie den kube-Proxy auf den Instanzen außerhalb des Clusters ausgeführt werden müssen und so konfigurieren, dass der Clusters apiserver, um mit ihm zu reden route die Service-Pakete richtig.

+0

Entschuldigung, ich habe mich vertippt! Ich meinte Google Compute Engine, obwohl GKE auch daran beteiligt ist. Bitte sehen Sie meine bearbeitete Frage. – aknuds1

+0

Ich habe versucht, Ihre Quellregel 10.0.0.0/8, aber damit aktiviert andere Instanzen innerhalb des gleichen Projekts auch gesperrt sind. – aknuds1

+0

AFAICT, das Problem besteht darin, dass die GCE-Instanzen über ihre externe IP auf die anderen Instanzen zugreifen. Ich habe dies verifiziert, indem ich einen Quellbereich entsprechend ihrer externen IPs hinzugefügt habe, der den Datenverkehr durchlässt. – aknuds1