【ITニュース解説】Deploy de uma api em rust em cloudrun através de pipeline com gitlab

2025年09月09日に「Dev.to」が公開したITニュース「Deploy de uma api em rust em cloudrun através de pipeline com gitlab」について初心者にもわかりやすいように丁寧に解説しています。

作成日: 更新日:

ITニュース概要

Rust言語で開発したWeb APIをGoogle Cloud Runへ自動デプロイする方法を紹介。Dockerfileでコンテナイメージを作成し、GitLab CI/CDパイプラインでビルドからデプロイまでを自動化する具体的な設定例を解説する。

ITニュース解説

プログラミング言語Rustで開発されたWeb APIを、GitLabのCI/CDパイプラインを利用してGoogle Cloud Runへ自動的にデプロイする方法について解説する。この一連の流れは、現代的なソフトウェア開発における自動化の典型的な例であり、開発したアプリケーションを迅速かつ確実にユーザーへ届けるための重要な技術である。

まず、開発の中心となるのはRustで書かれたAPIアプリケーションである。このAPIは、外部からのリクエストに応じて特定の機能を提供するプログラムであり、ここではwarpというWebフレームワークが使用されている。コードの中心的な部分は、サーバーを起動し、リクエストを受け付けるルートを定義している点にある。具体的には、/healthというパスへのGETリクエストを受け付ける「ヘルスチェック」用のエンドポイントが設定されている。このエンドポイントは、APIが正常に稼働しているかを外部から確認するために用いられ、正常であれば「healthy」という状態を返す。特に重要なのは、サーバーを起動する際の.run(([0, 0, 0, 0], 8080))という設定である。これは、コンテナ環境内でアプリケーションを動作させる際に不可欠な設定で、コンテナの特定のIPアドレスに限定せず、あらゆるネットワークインターフェースからのポート8080への接続を受け付けることを意味する。これにより、コンテナの外部からでもアプリケーションにアクセスできるようになる。

次に、開発したRustアプリケーションを配布・実行可能な形式にパッケージングするためにDockerが用いられる。その設計図となるのがDockerfileである。この記事で紹介されているDockerfileは、「マルチステージビルド」という効率的な手法を採用している。これは、コンテナイメージを作成するプロセスを複数の段階に分ける技術である。第一段階では、Rustのコンパイル環境を含む比較的大きなベースイメージ(rust:latest)上で、ソースコードをコンパイルし、単一の実行可能ファイルを生成する。第二段階では、本番環境で実行するために必要な最小限のライブラリだけを含む、非常に軽量なベースイメージ(debian:bookworm-slim)を用意する。そして、第一段階で生成した実行可能ファイルのみをこの軽量なイメージにコピーする。この手法により、最終的に作成されるコンテナイメージのサイズを大幅に削減できる。イメージが軽量であることは、保存に必要なストレージ容量の節約、ネットワーク転送時間の短縮、そしてコンパイルツールなどの不要なプログラムを含まないことによるセキュリティ向上といった多くの利点をもたらす。

そして、このコンテナ化からデプロイまでの一連のプロセスを自動化するのが、GitLab CI/CDの役割である。.gitlab-ci.ymlという設定ファイルに、実行したい一連のタスクを「パイプライン」として定義する。この設定では、devという名前のブランチにソースコードがプッシュされると、自動的にdeploy_cloud_runというジョブが実行されるルールが定められている。ジョブの実行前には、before_scriptセクションでGoogle Cloudを操作するためのコマンドラインツール(gcloud CLI)のインストールや、認証設定が行われる。認証には、事前にGitLabのセキュアな変数として登録しておいたサービスアカウントの認証情報(JSONキー)が使用される。これにより、CI/CDパイプラインがGoogle Cloud上のリソースを安全に操作する権限を得る。

scriptセクションに記述された一連のコマンドが、自動化プロセスの本丸である。まず、docker buildコマンドでDockerfileを基にコンテナイメージを構築する。この際、Gitのコミットハッシュをイメージのタグとして付与することで、どのバージョンのコードから作られたイメージなのかを明確に識別できるようにしている。次に、docker pushコマンドで、構築したイメージをGoogle Cloudのコンテナレジストリ(Artifact Registry)にアップロードする。最後に、gcloud run deployコマンドが実行され、アップロードされたコンテナイメージを基にCloud Run上でアプリケーションが起動または更新される。Cloud Runはサーバーの管理を意識することなくコンテナを実行できるサーバーレスプラットフォームであり、トラフィックに応じて自動的にスケールする特徴を持つ。

このパイプラインが正常に完了すると、デプロイされたAPIにアクセスするための公開URLが生成される。最終的な動作確認として、curlコマンドなどを用いて、公開されたURLの/healthエンドポイントにアクセスし、期待通りのJSONレスポンスが返ってくることを確認する。この仕組み全体を構築することで、開発者はソースコードの変更をリポジトリにプッシュするだけで、ビルド、テスト、コンテナ化、デプロイといった一連のリリース作業をすべて自動化できる。これにより、手作業によるミスを防ぎ、より迅速で信頼性の高いアプリケーション提供が可能となる。