0

Google Compute Engineでは、同じプロジェクト内のインスタンスのみがアクセスできるようにファイアウォールルールを作成するにはどうすればよいですか?同じプロジェクト内の他のクラスタからのアクセスを許可する必要があります。Google Compute Engine - 他のプロジェクトインスタンスからのアクセスを許可するにはどうすればよいですか?

GCEクラスタがGCEインスタンス上で実行されるRethinkDBデータベースサーバのクラスタにアクセスできるようにするシナリオです。

答えて

0

問題は、外部IP経由でRethinkDBインスタンスにアクセスしていたことが分かりました。何らかの理由で、内部ソースIPを持つファイアウォールルールが一致しなくなります。解決策は、内部DNS名を使用してインスタンスにアクセスすることでした。この場合、ファイアウォールルールが適用されます。

デフォルトのファイアウォールルールは、すでにdefault-allow-internalです。これにより、同じプロジェクトのインスタンス間のトラフィックが許可されます。したがって、自分のルールを作成する必要はありません。

1

「同じプロジェクト内のインスタンスのみがアクセスできるようにする」とは何ですか?

クラスタのapiserverへのアクセスを意味するとは限りません。そのIPはすべてのインスタンスからアクセス可能である必要があるためです。

クラスタ外のインスタンスからクラスタ内のコンテナにアクセスする場合は、ファイアウォールルールを作成して、GCEネットワーク内のトラフィックを許可することができます。あなたはどちらかこれを行うときに、非常に寛容またはもう少しきめ細かくすることができます。

  1. 非常に寛容な - ちょうどあなたのソースIP範囲10.0.0.0/8のすべてのインスタンスへのトラフィックを許可するファイアウォールルールを作成しますあなたの気にするすべてのプロトコルとポート(例:tcp:1-65535,udp:1-65535,icmp)にネットワーク(「ターゲットタグ」を追加しないでください)。 10.0.0.0/8の範囲は、ネットワーク内のすべてのインスタンスとコンテナ(およびその外部のもの)を対象とします。

  2. クラスタごとに別個のファイアウォール - 番号1と同じことを実行しますが、クラスタ内のすべてのノードにあるターゲットタグを追加します。インスタンスのタグの1つを見るか、GKEが作成されたときにクラスタ用に作成したファイアウォールのターゲットタグを調べることで、これを取得できます。このアプローチの利点は、ネットワーク内のすべてのものをクラスタに話しかけることができるようになることです。

クラスタ外からサービスにアクセスする意味場合は、するために、クラスタ外のインスタンスにKUBE-プロキシを実行して、クラスタのapiserverに話をするように設定する必要があるので、それは少し厳しいですサービスパケットを適切にルーティングします。

+0

申し訳ありませんが、ミスタイプです!私はGoogle Compute Engineを意味しましたが、GKEも関わっています。私の編集した質問を見てください。 – aknuds1

+0

あなたの10.0.0.0/8ソースルールを試しましたが、同じプロジェクト内の他のインスタンスもロックアウトされています。 – aknuds1

+0

AFAICT、問題は、GCEインスタンスが外部IP経由で他のインスタンスにアクセスすることです。私はトラフィックを通過させる外部IPに対応するソース範囲を追加してこれを検証しました。 – aknuds1

関連する問題