Enable services, create an artifact registry and the GKE cluster

進行状況を確認

/ 20

Create a container image with Cloud Build

進行状況を確認

/ 20

Create the Continuous Integration (CI) Pipeline

進行状況を確認

/ 20

Store SSH key secret in Secret Manager

進行状況を確認

/ 20

Create the Test Environment and CD Pipeline

進行状況を確認

/ 20

このラボでは、学習をサポートする AI ツールが組み込まれている場合があります。
このコンテンツはまだモバイル デバイス向けに最適化されていません。
快適にご利用いただくには、メールで送信されたリンクを使用して、デスクトップ パソコンでアクセスしてください。

GSP1077

Google Cloud セルフペース ラボ

概要

Cloud Build は、Google Cloud でビルドを実行するサービスです。ソースコードのインポートやビルドの実行などが可能です。

このラボでは、commit されたコードからコンテナ イメージを自動的にビルドし、そのイメージを Artifact Registry に格納して、Git リポジトリの Kubernetes マニフェストを更新し、そのマニフェストを使用してアプリケーションを Google Kubernetes Engine にデプロイする継続的インテグレーションと継続的デプロイ(CI / CD)のパイプラインを作成します。

CI / CD フロー

このラボでは、専用のセルフホスト型 Gitea Git サーバー(git-server)でホストされている次の 2 つの Git リポジトリを使用します。

  • app: アプリケーションのソースコードが含まれます(hello-cloudbuild-app)。
  • env: Kubernetes のデプロイ マニフェストが含まれます(hello-cloudbuild-env)。

app リポジトリに変更を push すると、Cloud Build パイプラインがテストを実施し、コンテナ イメージをビルドして、Artifact Registry に変更を push します。イメージを push した後、Cloud Build はデプロイ マニフェストを更新して env リポジトリに push します。これにより、マニフェストを GKE クラスタに適用する別の Cloud Build パイプラインがトリガーされ、正常終了した場合は、マニフェストが env リポジトリの別のブランチに格納されます。

app リポジトリと env リポジトリが分かれているのは、それぞれのライフサイクルと用途が異なるためです。app リポジトリは特定のアプリケーション専用であり、主に実際の人間が使用します。env リポジトリは複数のアプリケーションで共有することができ、Cloud Build などの自動システムで使用されます。env リポジトリは複数のブランチを持つことができ、それぞれ特定の環境にマッピングし、特定のコンテナ イメージを参照できます。app リポジトリに複数のブランチはありません。

このラボを終了すると、システムで次のことが簡単にできるようになります。

  • Cloud Build の履歴を確認して、失敗したデプロイと成功したデプロイを区別する。
  • env リポジトリの production ブランチを確認して、現在使用されているマニフェストにアクセスする。
  • 対応する Cloud Build ビルドを再実行して、以前のバージョンにロールバックする。

GitOps フロー

目標

このラボでは、次のタスクの実施方法について学びます。

  • Kubernetes Engine クラスタを作成する。
  • 専用の Git サーバーに接続して Git リポジトリを初期化する。
  • ソースコード リポジトリから Cloud Build パイプラインを実行する。
  • Cloud Build でテストを自動化し、デプロイ可能なコンテナ イメージを公開する。
  • Kubernetes Engine クラスタにデプロイされたリソースを Cloud Build で管理する。

設定と要件

[ラボを開始] ボタンをクリックする前に

こちらの説明をお読みください。ラボには時間制限があり、一時停止することはできません。タイマーは、Google Cloud のリソースを利用できる時間を示しており、[ラボを開始] をクリックするとスタートします。

このハンズオンラボでは、シミュレーションやデモ環境ではなく実際のクラウド環境を使って、ラボのアクティビティを行います。そのため、ラボの受講中に Google Cloud にログインおよびアクセスするための、新しい一時的な認証情報が提供されます。

このラボを完了するためには、下記が必要です。

  • 標準的なインターネット ブラウザ(Chrome を推奨)
注: このラボの実行には、シークレット モード(推奨)またはシークレット ブラウジング ウィンドウを使用してください。これにより、個人アカウントと受講者アカウント間の競合を防ぎ、個人アカウントに追加料金が発生しないようにすることができます。
  • ラボを完了するための時間(開始後は一時停止できません)
注: このラボでは、受講者アカウントのみを使用してください。別の Google Cloud アカウントを使用すると、そのアカウントに料金が発生する可能性があります。

ラボを開始して Google Cloud コンソールにログインする方法

  1. [ラボを開始] ボタンをクリックします。ラボの料金をお支払いいただく必要がある場合は、表示されるダイアログでお支払い方法を選択してください。 右側の [ラボの設定とアクセス] パネルには、以下が表示されます。

    • [Google Cloud コンソールを開く] ボタン
    • このラボで使用する一時的な認証情報(ユーザー名とパスワード)
    • このラボを行うために必要なその他の情報(ある場合)

    ラボのタイマーはページの上部に表示され、残り時間が示されます。

  2. [Google Cloud コンソールを開く] をクリックします(Chrome ブラウザを使用している場合は、右クリックして [シークレット ウィンドウで開く] を選択します)。

    ラボでリソースがスピンアップし、別のタブで [ログイン] ページが表示されます。

    ヒント: タブをそれぞれ別のウィンドウで開き、並べて表示しておきましょう。

    注: [アカウントの選択] ダイアログが表示された場合は、[別のアカウントを使用] をクリックします。
  3. 必要に応じて、下のユーザー名をコピーして、[ログイン] ダイアログに貼り付けます。

    {{{user_0.username | "Username"}}}

    [ラボの設定とアクセス] パネルでもユーザー名を確認できます。

  4. [次へ] をクリックします。

  5. 以下のパスワードをコピーして、[ようこそ] ダイアログに貼り付けます。

    {{{user_0.password | "Password"}}}

    [ラボの設定とアクセス] パネルでもパスワードを確認できます。

  6. [次へ] をクリックします。

    重要: ラボで指定された認証情報を使用する必要があります。ご自身の Google Cloud アカウントの認証情報は使用しないでください。 注: このラボでご自身の Google Cloud アカウントを使用すると、追加料金が発生する場合があります。
  7. その後のページはクリックして先に進みます。

    • 利用規約に同意します。
    • 一時的なアカウントなので、復元オプションや 2 要素認証プロセスは設定しないでください。
    • 無料トライアルには登録しないでください。

しばらくすると、このタブで Google Cloud コンソールが開きます。

注: Google Cloud のプロダクトやサービスにアクセスするには、ナビゲーション メニューをクリックするか、[検索] フィールドにサービス名またはプロダクト名を入力します。 ナビゲーション メニューのアイコンと検索フィールド

Cloud Shell をアクティブにする

Cloud Shell は、開発ツールと一緒に読み込まれる仮想マシンです。5 GB の永続ホーム ディレクトリが用意されており、Google Cloud で稼働します。Cloud Shell を使用すると、コマンドラインで Google Cloud リソースにアクセスできます。

  1. Google Cloud コンソールの上部にある「Cloud Shell をアクティブにする」アイコン 「Cloud Shell をアクティブにする」アイコン をクリックします。

  2. ウィンドウで次の操作を行います。

    • Cloud Shell 情報ウィンドウで操作を進めます。
    • Cloud Shell が認証情報を使用して Google Cloud API を呼び出すことを承認します。

接続した時点で認証が完了しており、プロジェクトに各自の Project_ID、 が設定されます。出力には、このセッションの PROJECT_ID を宣言する次の行が含まれています。

Your Cloud Platform project in this session is set to {{{project_0.project_id | "PROJECT_ID"}}}

gcloud は Google Cloud のコマンドライン ツールです。このツールは、Cloud Shell にプリインストールされており、タブ補完がサポートされています。

  1. (省略可)次のコマンドを使用すると、有効なアカウント名を一覧表示できます。
gcloud auth list
  1. [承認] をクリックします。

出力:

ACTIVE: * ACCOUNT: {{{user_0.username | "ACCOUNT"}}} To set the active account, run: $ gcloud config set account `ACCOUNT`
  1. (省略可)次のコマンドを使用すると、プロジェクト ID を一覧表示できます。
gcloud config list project

出力:

[core] project = {{{project_0.project_id | "PROJECT_ID"}}} 注: Google Cloud における gcloud ドキュメントの全文については、gcloud CLI の概要ガイドをご覧ください。

タスク 1. ラボを初期化する

このタスクでは、次の操作を行って環境を設定します。

  • プロジェクト ID、プロジェクト番号、Git サーバーの IP を変数としてインポートする
  • GKE、Cloud Build、Secret Manager、Artifact Analysis の API を有効にする
  • Artifact Registry Docker リポジトリを作成する
  • このラボのサンプル アプリケーションをデプロイする GKE クラスタを作成する
  1. Cloud Shell で次のコマンドを実行して、プロジェクト ID、プロジェクト番号、リージョンを設定します。
export PROJECT_ID=$(gcloud config get-value project) export PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format='value(projectNumber)') export REGION={{{ project_0.default_region }}} gcloud config set compute/region $REGION export GIT_SERVER_IP=$(gcloud compute instances describe git-server --zone={{{ project_0.default_zone }}} --format='get(networkInterfaces[0].accessConfigs[0].natIP)') echo "Git Server IP is: ${GIT_SERVER_IP}"
  1. 次のコマンドを実行して、GKE、Cloud Build、Secret Manager、Artifact Analysis の API を有効にします。
gcloud services enable container.googleapis.com \ cloudbuild.googleapis.com \ secretmanager.googleapis.com \ containeranalysis.googleapis.com
  1. my-repository という名前の Artifact Registry Docker リポジトリを リージョンに作成します。このリポジトリにコンテナ イメージを保存します。
gcloud artifacts repositories create my-repository \ --repository-format=docker \ --location=$REGION
  1. このラボのサンプル アプリケーションをデプロイする GKE クラスタを作成します。
gcloud container clusters create hello-cloudbuild --num-nodes 1 --region $REGION
  1. Cloud Shell で次のコマンドを実行して、Git を構成します。 git config --global user.name "giteaadmin" git config --global user.email "student@qwiklabs.net"

[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。 サービスを有効にして Artifact Registry と GKE クラスタを作成する

タスク 2. Git サーバー上の Git リポジトリに接続する

このタスクでは、専用の Git サーバー(git-server)上の 2 つの Git リポジトリ(hello-cloudbuild-app と hello-cloudbuild-env)を初期化し、初期サンプルコードを push します。

  1. Cloud Storage からサンプルコードをダウンロードします。
cd ~ git clone http://${GIT_SERVER_IP}:3000/giteaadmin/hello-cloudbuild-app.git

クローンを作成したコードには、単純な「Hello World」アプリケーションが含まれています。

from flask import Flask app = Flask('hello-cloudbuild') @app.route('/') def hello(): return "Hello World!\n" if __name__ == '__main__': app.run(host = '0.0.0.0', port = 8080)

タスク 3. Cloud Build でコンテナ イメージを作成する

このタスクでは、既存の Dockerfile を使用して、Cloud Build でコンテナ イメージを作成して保存します。

Dockerfile は、以前にクローンを作成したコードに含まれています。

FROM python:3.11-slim RUN pip install flask WORKDIR /app COPY app.py /app/app.py ENTRYPOINT ["python"] CMD ["/app/app.py"]

この Dockerfile を使用して、Cloud Build でコンテナ イメージを作成し、Artifact Registry に保存できます。

  1. Cloud Shell で次のコマンドを使用して、最新の commit に基づいて Cloud Build ビルドを作成します。
cd ~/hello-cloudbuild-app COMMIT_ID="$(git rev-parse --short=7 HEAD)" gcloud builds submit --tag="${REGION}-docker.pkg.dev/${PROJECT_ID}/my-repository/hello-cloudbuild:${COMMIT_ID}" .

このコマンドを実行すると、Cloud Build はコンテナ イメージの作成によって生成されたログをターミナルにストリーミングします。

  1. ビルドが完了したら、Google Cloud コンソールのタイトルバーで、[検索] フィールドに「Artifact Registry」と入力し、検索結果から [Artifact Registry] をクリックします。新しいコンテナ イメージが Artifact Registry 内で実際に利用可能になっていることを確認します。my-repository をクリックして、イメージ リストで hello-cloudbuild イメージを確認します。

[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。 Cloud Build でコンテナ イメージを作成する

タスク 4. 継続的インテグレーション(CI)パイプラインを作成して実行する

このタスクでは、自動的に単体テストを実施し、コンテナ イメージをビルドして Artifact Registry に push するように Cloud Build を構成して実行します。

アーキテクチャ

すでにコードに含まれている cloudbuild.yaml ファイルがこのパイプラインの構成です。

  1. 変更を commit して Git サーバーに push します。
cd ~/hello-cloudbuild-app git add . git commit -m "Trigger CI pipeline" git push http://giteaadmin:GiteaPassword123@${GIT_SERVER_IP}:3000/giteaadmin/hello-cloudbuild-app.git main
  1. 次のコマンドを使用して、ビルドを Cloud Build に送信します。
gcloud builds submit --config=cloudbuild.yaml --substitutions=SHORT_SHA=$(git rev-parse --short=7 HEAD) .
  1. Google Cloud コンソールで「Cloud Build」を検索し、左側のペインで [履歴] をクリックします。CI ビルドの実行ログを確認できます。

[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。 継続的インテグレーション(CI)パイプラインを作成する

タスク 5. SSH 認証鍵のシークレットを Secret Manager に保存する

このステップでは、秘密鍵のシークレットを Secret Manager に保存し、Cloud Build に Secret Manager へのアクセス権を付与します。

SSH 認証鍵を作成して Secret Manager に保存する

  1. Cloud Shell で、SSH 認証鍵を作成します。

    mkdir -p ~/workingdir && cd ~/workingdir ssh-keygen -t rsa -b 4096 -N '' -f id_rsa -C "student@qwiklabs.net"
  2. Cloud Shell で次のコマンドを実行して、Secret Manager に秘密 SSH 認証鍵を保存します。

gcloud secrets create ssh_key_secret --data-file=$HOME/workingdir/id_rsa

別の方法として、Google Cloud コンソールで次の操作を行うこともできます。 a. まず、id_rsa をパソコンにダウンロードします。Cloud Shell で、その他アイコン(その他アイコン)> [ファイルをダウンロード] をクリックし、「workingdir/id_rsa」と入力して [ダウンロード] をクリックします。 b. 「Secret Manager」を検索して、[Secret Manager] をクリックします。 c. [シークレットの作成] をクリックします。 d. [名前] を「ssh_key_secret」に設定します。 e. [シークレットの値] で [アップロード] を選択し、ダウンロードした id_rsa ファイルをアップロードします。 f. [シークレットの作成] をクリックします。

サービス アカウントに Secret Manager へのアクセス権を付与する

Cloud Shell で次のコマンドを実行して、Compute Engine のデフォルトのサービス アカウントに Secret Manager へのアクセス権を付与します。

PROJECT_NUMBER=$(gcloud projects describe ${PROJECT_ID} --format='value(projectNumber)') gcloud projects add-iam-policy-binding ${PROJECT_NUMBER} \ --member=serviceAccount:${PROJECT_NUMBER}-compute@developer.gserviceaccount.com \ --role=roles/secretmanager.secretAccessor

[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。 Secret Manager に SSH 認証鍵のシークレットを保存する

タスク 6. テスト環境と継続的デリバリー(CD)パイプラインを作成する

継続的デリバリー パイプラインにも Cloud Build を使用できます。このパイプラインは、commit が hello-cloudbuild-env リポジトリの candidate ブランチに push されるたびに実行されるものです。実行時には、新しいバージョンのマニフェストを Kubernetes クラスタに適用し、正常に終了した場合はマニフェストを production ブランチにコピーします。このプロセスには次のような特徴があります。

  • candidate ブランチはデプロイ試行の履歴です。
  • production ブランチは成功したデプロイの履歴です。
  • 成功したデプロイと失敗したデプロイを Cloud Build で確認できます。
  • Cloud Build で対応するビルドを再実行することで、以前のデプロイにロールバックできます。ロールバック時には、デプロイ履歴を正確に反映するように production ブランチが更新されます。

続いて、継続的インテグレーション パイプラインを変更して hello-cloudbuild-env リポジトリの candidate ブランチを更新し、継続的デリバリー パイプラインをトリガーします。

Cloud Build に GKE へのアクセス権を付与する

Kubernetes クラスタにアプリケーションをデプロイするには、Cloud Build に Kubernetes Engine 開発者のロールが必要です。

  1. Cloud Shell で、次のコマンドを実行します。
PROJECT_NUMBER="$(gcloud projects describe ${PROJECT_ID} --format='get(projectNumber)')" gcloud projects add-iam-policy-binding ${PROJECT_NUMBER} \ --member=serviceAccount:${PROJECT_NUMBER}@cloudbuild.gserviceaccount.com \ --role=roles/container.developer

hello-cloudbuild-env リポジトリを 2 つのブランチ(production と candidate)と、デプロイ プロセスを記述した Cloud Build 構成ファイルで初期化する必要があります。

  1. Cloud Shell で、Cloud Storage からサンプルコードをダウンロードします。
cd ~ git clone http://${GIT_SERVER_IP}:3000/giteaadmin/hello-cloudbuild-env.git
  1. Cloud Shell で次のコマンドを実行して、hello-cloudbuild-env リポジトリにある cloudbuild.yaml の内容を置き換えます。
cd ~/hello-cloudbuild-env cat <<'EOF' > cloudbuild.yaml # Copyright 2018 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # https://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. substitutions: _COMMIT_SHA: 'v1.0' steps: # This step deploys the new version of our container image # in the hello-cloudbuild Kubernetes Engine cluster. - name: 'gcr.io/cloud-builders/kubectl' id: Deploy args: - 'apply' - '-f' - 'kubernetes.yaml' env: - 'CLOUDSDK_COMPUTE_REGION={{{ project_0.default_region }}}' - 'CLOUDSDK_CONTAINER_CLUSTER=hello-cloudbuild' # This step copies the applied manifest to the production branch - name: 'gcr.io/cloud-builders/gcloud' id: Copy to production branch entrypoint: /bin/sh args: - '-c' - | set -x && \ git clone -b production http://giteaadmin:GiteaPassword123@${GIT_SERVER_IP}:3000/giteaadmin/hello-cloudbuild-env.git prod_repo && \ cd prod_repo && \ git config user.email "student@qwiklabs.net" && \ git config user.name "Cloud Build" && \ cp ../kubernetes.yaml kubernetes.yaml && \ git add kubernetes.yaml && \ git commit -m "Deployed manifest from commit $_COMMIT_SHA" && \ git push origin production options: logging: CLOUD_LOGGING_ONLY EOF sed -i "s/\${GIT_SERVER_IP}/$GIT_SERVER_IP/g" cloudbuild.yaml

更新内容を commit して hello-cloudbuild-env に push します。

cd ~/hello-cloudbuild-env git checkout candidate git add cloudbuild.yaml git commit -m "Create cloudbuild.yaml for deployment" git push http://giteaadmin:GiteaPassword123@${GIT_SERVER_IP}:3000/giteaadmin/hello-cloudbuild-env.git candidate

継続的デリバリー パイプラインをトリガーするように継続的インテグレーション パイプラインを変更する

次に、hello-cloudbuild-app の継続的インテグレーション パイプラインを更新して Kubernetes マニフェストの新しいバージョンを生成し、それを hello-cloudbuild-env に push して継続的デリバリー パイプラインをトリガーします。

  1. Cloud Shell で次のコマンドを実行して、hello-cloudbuild-app にある cloudbuild.yaml を置き換え、Git サーバーの IP を代入します。
cd ~/hello-cloudbuild-app cat <<'EOF' > cloudbuild.yaml # Copyright 2018 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # https://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. substitutions: _SHORT_SHA: 'v1.0' _COMMIT_SHA: 'v1.0' steps: # This step runs the unit tests on the app - name: 'python:3.11-slim' id: Test entrypoint: /bin/sh args: - -c - 'pip install flask && python test_app.py -v' # This step builds the container image. - name: 'gcr.io/cloud-builders/docker' id: Build args: - 'build' - '-t' - '{{{ project_0.default_region }}}-docker.pkg.dev/$PROJECT_ID/my-repository/hello-cloudbuild:$_SHORT_SHA' - '.' # This step pushes the image to Artifact Registry - name: 'gcr.io/cloud-builders/docker' id: Push args: - 'push' - '{{{ project_0.default_region }}}-docker.pkg.dev/$PROJECT_ID/my-repository/hello-cloudbuild:$_SHORT_SHA' # This step clones the hello-cloudbuild-env repository - name: 'gcr.io/cloud-builders/gcloud' id: Clone env repo entrypoint: /bin/sh args: - '-c' - | git clone http://giteaadmin:GiteaPassword123@${GIT_SERVER_IP}:3000/giteaadmin/hello-cloudbuild-env.git && \ cd hello-cloudbuild-env && \ git checkout candidate && \ git config user.email "student@qwiklabs.net" && \ git config user.name "Cloud Build" # This step generates the new manifest - name: 'gcr.io/cloud-builders/gcloud' id: Generate manifest entrypoint: /bin/sh args: - '-c' - | sed "s/GOOGLE_CLOUD_PROJECT/${PROJECT_ID}/g" kubernetes.yaml.tpl | \ sed "s/COMMIT_SHA/${_SHORT_SHA}/g" > hello-cloudbuild-env/kubernetes.yaml # This step pushes the manifest back to hello-cloudbuild-env candidate branch - name: 'gcr.io/cloud-builders/gcloud' id: Push manifest entrypoint: /bin/sh args: - '-c' - | set -x && \ cd hello-cloudbuild-env && \ git add kubernetes.yaml && \ git commit -m "Deploying image {{{ project_0.default_region }}}-docker.pkg.dev/$PROJECT_ID/my-repository/hello-cloudbuild:${_SHORT_SHA} Built from commit ${_COMMIT_SHA} of repository hello-cloudbuild-app Author: $(git log --format='%an <%ae>' -n 1 HEAD)" && \ git push origin candidate options: logging: CLOUD_LOGGING_ONLY EOF sed -i "s/\${GIT_SERVER_IP}/$GIT_SERVER_IP/g" cloudbuild.yaml
  1. 変更内容を commit して Git サーバーに push し、パイプラインのビルドを送信します。
cd ~/hello-cloudbuild-app git add cloudbuild.yaml git commit -m "Trigger CD pipeline" git push http://giteaadmin:GiteaPassword123@${GIT_SERVER_IP}:3000/giteaadmin/hello-cloudbuild-app.git main gcloud builds submit --config=cloudbuild.yaml --substitutions=_SHORT_SHA=$(git rev-parse --short=7 HEAD),_COMMIT_SHA=$(git rev-parse HEAD) .

これにより、Cloud Build の継続的インテグレーション パイプラインがトリガーされます。このパイプラインは、アプリケーション イメージをビルドし、新しい kubernetes.yaml マニフェストを hello-cloudbuild-env リポジトリに push します。

  1. hello-cloudbuild-env 内の生成されたマニフェストを pull し、継続的デリバリー(CD)デプロイ ビルドをトリガーします。
cd ~/hello-cloudbuild-env git pull http://giteaadmin:GiteaPassword123@${GIT_SERVER_IP}:3000/giteaadmin/hello-cloudbuild-env.git candidate gcloud builds submit --config=cloudbuild.yaml --substitutions=_COMMIT_SHA=$(git rev-parse HEAD) .

[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。 テスト環境と継続的デリバリー(CD)パイプラインを作成する

タスク 7. Cloud Build パイプラインを確認する

このタスクでは、コンソールで Cloud Build パイプラインを確認します。

  1. コンソールで、[Cloud Build] > [履歴] に移動します。
  2. 最新のビルドをクリックして、その実行を追跡し、ログを確認します。
  3. ビルド パイプラインですべてのステップが正常に実行されたことを確認します。

タスク 8. パイプライン全体をテストする

これで、CI / CD パイプライン全体が構成されました。このタスクでは、エンドツーエンドのテストを行います。

  1. コンソールのナビゲーション メニュー(ナビゲーション メニュー アイコン)で、[Kubernetes Engine] > [Gateway、Service、Ingress] > [Services] をクリックします。

hello-cloudbuild という名前の Service が 1 つリストにあります。これは実行された継続的デリバリー ビルドによって作成されたものです。

  1. hello-cloudbuild Service のエンドポイントをクリックします。「Hello World!」と表示されます。エンドポイントがない場合や、ロードバランサのエラーが発生した場合は、ロードバランサが完全に初期化されるまで数分待つ必要があります。必要に応じて、[更新] をクリックしてページを更新します。

アプリ 1 Hello World!

  1. Cloud Shell で、アプリケーションと単体テストの両方で「Hello World」を「Hello Cloud Build」に置き換えます。
cd ~/hello-cloudbuild-app sed -i 's/Hello World/Hello Cloud Build/g' app.py sed -i 's/Hello World/Hello Cloud Build/g' test_app.py
  1. 変更内容を commit して Git サーバーに push し、CI ビルドを送信します。
git add app.py test_app.py git commit -m "Hello Cloud Build" git push http://giteaadmin:GiteaPassword123@${GIT_SERVER_IP}:3000/giteaadmin/hello-cloudbuild-app.git main gcloud builds submit --config=cloudbuild.yaml --substitutions=_SHORT_SHA=$(git rev-parse --short=7 HEAD),_COMMIT_SHA=$(git rev-parse HEAD) .
  1. 更新されたマニフェストを hello-cloudbuild-env に pull し、デプロイ パイプライン ビルドを送信して、新しいアプリケーション バージョンをデプロイします。
cd ~/hello-cloudbuild-env git pull http://giteaadmin:GiteaPassword123@${GIT_SERVER_IP}:3000/giteaadmin/hello-cloudbuild-env.git candidate gcloud builds submit --config=cloudbuild.yaml --substitutions=_COMMIT_SHA=$(git rev-parse HEAD) .

数分後、ブラウザでアプリケーションを再読み込みします。今度は「Hello Cloud Build!」と表示されます。

アプリ 2 Hello Cloud Build!

タスク 9. ロールバックをテストする

このタスクでは、「Hello World!」と表示するアプリケーションのバージョンにロールバックします。

  1. コンソールのタイトルバーにある [検索] フィールドに「Cloud Build ダッシュボード」と入力し、検索結果から [Cloud Build] をクリックします。左側のペインで [履歴] が選択されていることを確認します。
  2. [ビルド履歴] で、利用可能なビルドのうち、2 番目に新しいものをクリックします。
  3. [再ビルド] をクリックします。

ロールバック成功画面

ビルドが完了したら、ブラウザでアプリケーションを再読み込みします。再び「Hello World!」と表示されます。

アプリ 1 Hello World!

お疲れさまでした

Cloud Build を使用して、Google Cloud の GKE で継続的インテグレーション パイプラインの作成とロールバックを実行できるようになりました。

Google Cloud トレーニングと認定資格

Google Cloud トレーニングと認定資格を通して、Google Cloud 技術を最大限に活用できるようになります。必要な技術スキルとベスト プラクティスについて取り扱うクラスでは、学習を継続的に進めることができます。トレーニングは基礎レベルから上級レベルまであり、オンデマンド、ライブ、バーチャル参加など、多忙なスケジュールにも対応できるオプションが用意されています。認定資格を取得することで、Google Cloud テクノロジーに関するスキルと知識を証明できます。

マニュアルの最終更新日: 2026 年 7 月 20 日

ラボの最終テスト日: 2026 年 7 月 20 日

Copyright 2026 Google LLC. All rights reserved. Google および Google のロゴは Google LLC の商標です。その他すべての企業名および商品名はそれぞれ各社の商標または登録商標です。

始める前に

  1. ラボでは、Google Cloud プロジェクトとリソースを一定の時間利用します
  2. ラボには時間制限があり、一時停止機能はありません。ラボを終了した場合は、最初からやり直す必要があります。
  3. 画面左上の [ラボを開始] をクリックして開始します

シークレット ブラウジングを使用する

  1. ラボで使用するユーザー名とパスワードをコピーします
  2. プライベート モードで [コンソールを開く] をクリックします

コンソールにログインする

    ラボの認証情報を使用して
  1. ログインします。他の認証情報を使用すると、エラーが発生したり、料金が発生したりする可能性があります。
  2. 利用規約に同意し、再設定用のリソースページをスキップします
  3. ラボを終了する場合や最初からやり直す場合を除き、[ラボを終了] はクリックしないでください。クリックすると、作業内容がクリアされ、プロジェクトが削除されます

このコンテンツは現在ご利用いただけません

利用可能になりましたら、メールでお知らせいたします

ありがとうございます。

利用可能になりましたら、メールでご連絡いたします

1 回に 1 つのラボ

既存のラボをすべて終了して、このラボを開始することを確認してください

シークレット ブラウジングを使用してラボを実行する

このラボを実行するには、シークレット モードまたはシークレット ブラウジング ウィンドウを使用することをおすすめします。これにより、個人アカウントと受講者アカウントの競合を防ぎ、個人アカウントに追加料金が発生することを防ぎます。