Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【ITニュース解説】Part-102: 🚀 Configure a NodePort Service in Google Kubernetes Engine (GKE)

2025年10月02日に「Dev.to」が公開したITニュース「Part-102: 🚀 Configure a NodePort Service in Google Kubernetes Engine (GKE)」について初心者にもわかりやすく解説しています。

作成日: 更新日:

ITニュース概要

GKEでNodePort Serviceを使い、Kubernetes上のアプリをインターネットに公開する方法を学ぶ。NodePortは各ノードのポート(30000-32768)を開放し、外部からアプリへアクセス可能にする。GKEではファイアウォール設定が必須だ。これは主に開発やテストで使う手法である。

ITニュース解説

このニュース記事は、Google Kubernetes Engine(GKE)というクラウド環境で、私たちが作ったアプリケーションをインターネットを通じて外の世界に公開する方法の一つ、「NodePort Service」について詳しく解説している。Kubernetesは、たくさんのプログラムを効率的に動かし、管理するための強力なツールだ。今回は、GKE上で動くアプリケーションを、Webサイトのように誰でもアクセスできるようにするための基本的な仕組みを学ぶことができる。

まず、アプリケーションを動かすためには、Kubernetesの「Deployment」という仕組みを使う。これは、私たちが作ったプログラムを「Pod」という単位で複数動かすことを宣言するものだ。Podは、アプリケーションを実行するための最小単位であり、コンテナという技術を使って動く。例えば、ニュース記事では「myapp1-deployment」という名前で、NginxというWebサーバーアプリケーションを動かすPodを2つ用意するように設定している。このDeploymentを設定することで、Kubernetesは指定された数のNginxのPodを自動的に管理し、もしPodが故障しても自動で新しいPodを立ち上げてくれる。

次に、このNginxアプリケーションをインターネットからアクセスできるようにするのが「Service」の役割だ。Serviceにはいくつかの種類があるが、今回は「NodePort Service」を使う。NodePort Serviceは、Kubernetesクラスター内のすべての「Node」(Nodeはアプリケーションが実際に動いているサーバーマシンのことだ)に対して、特定のポート番号を開放することで、そのポートを通じてアプリケーションにアクセスできるようにする。開放されるポート番号は、通常30000番から32768番の範囲から選ばれるか、Kubernetesによって自動的に割り当てられる。ニュース記事の例では、30080番ポートが指定されている。これにより、Nodeの外部IPアドレスとこのNodePort番号を組み合わせることで、「http://<ノードの外部IP>:<NodePort>」という形式でアプリケーションにアクセスできるようになる。Deploymentがアプリケーションの実行を担当するのに対し、Serviceはアプリケーションへのアクセス方法を提供する役割を担っている。

ただし、Google Cloud Platform(GCP)上でGKEを使っている場合、デフォルトの設定では、これらのNodePortが外部から直接アクセスできないようになっている。これはセキュリティ上の理由で、意図しないアクセスを防ぐための仕組みだ。そのため、NodePort Serviceを設定しただけでは、まだアプリケーションにアクセスできない。実際にアクセスするには、「ファイアウォールルール」という設定を追加し、特定のポートへの通信を明示的に許可する必要がある。

ニュース記事では、これらの設定を実際に適用する手順が示されている。まず、先ほどのDeploymentとNodePort Serviceの設定ファイルをkubectl applyコマンドでGKEにデプロイする。これにより、アプリケーションのPodと、それを公開するためのServiceがKubernetesクラスター内に作成される。デプロイ後、kubectl get nodes -o wideコマンドを使って、Nodeの外部IPアドレスを確認し、そのIPアドレスと指定したNodePort(30080番)でWebブラウザからアクセスを試みる。しかし、この時点ではGCPのファイアウォールによってアクセスがブロックされ、アプリケーションは表示されない。そこで、gcloud compute firewall-rules createコマンドを使って、30080番ポートへのTCP通信を許可するファイアウォールルールを作成する。このルールは、インターネット上のあらゆる場所から、GKEのNodeの30080番ポートへのアクセスを許可するものだ。ファイアウォールルールが適用された後、もう一度Nodeの外部IPアドレスとNodePortでアクセスすると、今度はNginxのWebページが正常に表示される。これは、アプリケーションがインターネットに公開され、誰でもアクセスできるようになったことを意味する。

最後に、不要になったKubernetesリソースやファイアウォールルールを削除する「クリーンアップ」の手順も重要だ。これは、リソースの無駄遣いを防ぎ、予期せぬ料金発生を防ぐためにも行うべき作業だ。ニュース記事では、kubectl deletegcloud compute firewall-rules deleteコマンドを使って、作成したすべての設定を元に戻す方法が示されている。NodePort Serviceは、開発やテストには便利だが、本番環境で一般公開するWebアプリケーションには、セキュリティや拡張性の面から、より適切な「LoadBalancer Service」や「Ingress」といった別の種類のServiceを利用することが推奨される。これらのサービスは、より高度なトラフィック管理やSSL証明書の利用などを可能にする。この解説を通じて、GKEでアプリケーションを外部に公開する一連の基本的な流れと、セキュリティに対する考慮点の重要性を理解できたことだろう。

関連コンテンツ

関連IT用語