web-dev-qa-db-ja.com

GCEでNodePortをインターネットに公開する方法

タイプNodePortを使用して、タイプLoadBalancerのサービスをインターネットに公開するにはどうすればよいですかなし?私が見つけたすべてのリソースは、ロードバランサーを使用してそれを行っていました。しかし、永続ディスクにマウントしているpostgresイメージの1つのインスタンスを実行していて、自分のデータベースからデータベースに接続できるようにしたいので、私はユースケースでその高価で不必要な負荷分散をしたくありませんpgAdminを使用するPC。可能であれば、Kubernetes、GCE、ネットワーキングの初心者なので、もう少し詳しく答えてください。

記録ともう少しコンテキストのために、私は、loadBalancerIPが設定されたロードバランサーを介して接続しているAPIサーバーの3つのレプリカを実行しているデプロイメントと、APIサーバーが通信するNodePortサービスを備えたpostgresの1つのインスタンスを実行している別のデプロイメントを持っています私のdb。そして、私の問題は、パブリックアクセスなしでdbを維持することが難しいことです。

25
Hnus

サービスタイプとしてNodePortを使用すると、すぐに機能します。このような:

apiVersion: v1
kind: Service
metadata:
  name: nginx
spec:
  type: NodePort
  ports:
    - port: 80
      nodePort: 30080
      name: http
    - port: 443
      nodePort: 30443
      name: https
  selector:
    name: nginx

詳細は documentation にあります。 NodePortを使用する欠点は、プロバイダーのファイアウォールとの統合を自分で行う必要があることです。その開始ポートは、公式ドキュメントの クラウドプロバイダーのファイアウォールの構成 セクションにもあります。

GCEの場合、すべてのノードで上記を公開すると、次のようになります。

gcloud compute firewall-rules create myservice --allow tcp:30080,tcp:30443

これが完了すると、ノードのパブリックIPのいずれかを介してサービスにアクセスできるようになります。あなたはそれらを見つけるでしょう:

gcloud compute instances list
31
pagid

ターミナルウィンドウ(WindowsではコマンドまたはPower Shell)でkubectlを実行して、postgresqlデプロイメントをローカルホストにポートフォワードできます。

kubectl port-forward deployment/my-pg-deployment 5432:5432

このコマンドの実行中(フォアグラウンドで実行)、pgAdminを使用してlocalhost:5432をポイントし、gke上のポッドにアクセスできます。 pgadminを使い終わったら、ターミナルを閉じてください。

1
Raj