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

【ITニュース解説】Part-87: 🚀 Kubernetes Deployments with Imperative Commands in GCP (Google Kubernetes Engine)

2025年09月27日に「Dev.to」が公開したITニュース「Part-87: 🚀 Kubernetes Deployments with Imperative Commands in GCP (Google Kubernetes Engine)」について初心者にもわかりやすく解説しています。

作成日: 更新日:

ITニュース概要

KubernetesのDeploymentをGCP(GKE)でコマンド操作する基本を解説。アプリの作成、Pod数の増減、外部公開、更新、問題時の復旧(ロールバック)など、実践的な運用管理をステップで学ぶ。安定したアプリ運用に役立つ知識だ。

ITニュース解説

今日のデジタル社会において、アプリケーションを安定して運用することはシステムエンジニアにとって非常に重要な課題だ。特に、多くのユーザーが利用するサービスでは、システムの一部に障害が発生してもサービス全体が停止しないようにしたり、急なアクセス増加に対応して処理能力を柔軟に調整したりする必要がある。このような課題を解決するために、クラウド技術やコンテナ技術、そしてコンテナオーケストレーションツールであるKubernetesが注目されている。Kubernetesは、コンテナ化されたアプリケーションのデプロイ、スケーリング、管理を自動化するための強力なプラットフォームだ。Google Cloud Platform(GCP)上で提供されるGoogle Kubernetes Engine(GKE)は、そのKubernetesを簡単に利用できるサービスであり、多くの企業で採用されている。

この記事では、システムエンジニアを目指す皆さんに、GKEを使ったKubernetesの「Deployment(デプロイメント)」という概念と、それを「命令型コマンド」で操作する方法について解説していく。命令型コマンドとは、kubectlというツールを使って、アプリケーションの状態を直接指定して変更していく方式のことだ。これにより、アプリケーションの展開から運用、そして更新までの一連の流れを、実際に手を動かしながら学ぶことができる。

まず、Deploymentとは具体的に何なのだろうか。KubernetesにおけるDeploymentは、アプリケーションを構成する最小単位である「Pod(ポッド)」と、そのPodのセットを管理する「ReplicaSet(レプリカセット)」をさらに上位のレベルで管理する仕組みである。開発者がDeploymentを作成する際には、どのようなコンテナイメージを実行するか、Podをいくつ起動するか、そしてアプリケーションの更新時にどのような戦略を用いるか(例えば、新しいバージョンに順次切り替えるローリングアップデートなど)、といったことを定義する。Deploymentの主な役割は、新しいアプリケーションのバージョンを安全にデプロイしたり、アプリケーションの処理能力を増減させたりすることにある。また、もしPodが何らかの理由で停止してしまっても、DeploymentはReplicaSetを通じて自動的に新しいPodを起動し、常に指定された数のPodが稼働している状態を維持する「自己修復」の機能も持っている。これにより、アプリケーションの可用性が向上し、運用が非常に楽になる。

実際にDeploymentを作成する手順を見ていこう。Nginxというウェブサーバーのアプリケーションを例に、三つのPodを持つDeploymentを作成する場合、kubectl create deploymentというコマンドを使う。このコマンドでは、Deploymentの名前、使用するコンテナイメージ、そして起動したいPodの数(ここでは3つ)を指定する。コマンドを実行すると、Kubernetesはまず指定された数のPodを管理するためのReplicaSetを作成し、そのReplicaSetが三つのNginx Podを起動する。kubectl get deploymentskubectl get poといったコマンドを使えば、実際にDeploymentやPodが正常に作成され、稼働していることを確認できる。さらにkubectl describe deployment my-first-deploymentコマンドを使うと、Deploymentの詳細な情報、例えばどのReplicaSetを管理しているか、どんなコンテナイメージを使っているか、といった設定内容を確認できる。

Deploymentは、アプリケーションの変更履歴を追跡する機能も持っている。これは「Rollout History(ロールアウト履歴)」と呼ばれ、過去にどのような変更が行われたかを記録してくれる。もし新しいバージョンのアプリケーションをデプロイした後に問題が見つかった場合でも、この履歴を使って簡単に以前の安定したバージョンに戻すことができるため、非常に重要な機能だ。kubectl annotateコマンドを使ってkubernetes.io/change-causeというアノテーション(補足情報)をDeploymentに追加することで、各デプロイメントがどのような変更で行われたかを明確に記録できる。これにより、後から履歴を見たときに、どの変更が何のためのものだったかを一目で判断できるようになり、トラブルシューティングや運用管理の効率が格段に向上する。

アプリケーションの負荷は常に一定ではないため、必要に応じて処理能力を柔軟に変更できることは重要だ。Deploymentを使えば、このスケーリングも簡単に行える。例えば、ユーザーからのアクセスが急増し、より多くのPodでリクエストを処理したい場合、kubectl scaleコマンドを使ってDeploymentが管理するPodの数を増やすことができる。例えば、Podの数を3つから6つに増やせば、Kubernetesは自動的に追加のPodを起動し、全体の処理能力を向上させる。逆に、アクセスが減ってリソースを節約したい場合は、同じコマンドでPodの数を減らすことも可能だ。これらの操作は非常に迅速に行われ、アプリケーションの安定運用に大きく貢献する。

Deploymentで起動したアプリケーションは、デフォルトではKubernetesクラスターの内部からしかアクセスできない。しかし、ウェブアプリケーションなどは通常、インターネット経由で外部からアクセスできるようにする必要がある。ここで登場するのが「Service(サービス)」だ。Serviceは、Podの集合に対して安定したネットワークアクセスを提供するための抽象化された仕組みである。特に「LoadBalancer(ロードバランサー)」タイプのServiceを使うと、GCPのようなクラウド環境では自動的に外部IPアドレスが割り当てられ、インターネットからアプリケーションにアクセスできるようになる。kubectl expose deploymentコマンドを使って、DeploymentをLoadBalancerタイプのServiceとして公開する。このとき、どのポートで外部に公開するか(例えばHTTPの標準ポート80)、そしてPod内のどのポートにリクエストを転送するかを指定する。

Serviceが作成され、LoadBalancerのプロビジョニングが完了すると、kubectl get svcコマンドで外部IPアドレスを確認できるようになる。この外部IPアドレスを使って、ウェブブラウザやcurlコマンドでアプリケーションにアクセスし、Nginxのウェブページが表示されることを確認できる。これにより、自分のアプリケーションが実際にインターネット上に公開され、世界中のどこからでもアクセスできる状態になるわけだ。

これまでの操作をまとめると、まずkubectl create deploymentでアプリケーションのDeploymentを作成し、これによりPodとReplicaSetが自動的に管理されるようになった。次に、kubectl annotateでDeploymentの変更履歴を明確にし、kubectl scaleでPodの数を柔軟に調整する方法を学んだ。そして、kubectl exposeでLoadBalancerサービスを通じてアプリケーションを外部に公開し、最終的にインターネット経由でアクセスできることを確認した。これらの操作はすべて「命令型コマンド」によって行われ、Kubernetesの強力な機能を体験できたはずだ。システムエンジニアにとって、KubernetesのDeploymentとServiceは、クラウドネイティブなアプリケーションを構築・運用する上で欠かせない基本的な要素であり、これらの概念と操作を理解することは、今後のキャリアにおいて非常に大きな強みとなるだろう。

関連コンテンツ

関連IT用語

関連ITニュース