arrow_back

Implement DevOps Workflows in Google Cloud: チャレンジラボ

参加 ログイン
Test and share your knowledge with our community!
done
Get access to over 700 hands-on labs, skill badges, and courses

Implement DevOps Workflows in Google Cloud: チャレンジラボ

Lab 1時間 30分 universal_currency_alt クレジット: 5 show_chart 中級
Test and share your knowledge with our community!
done
Get access to over 700 hands-on labs, skill badges, and courses

GSP330

Google Cloud セルフペース ラボ

概要

チャレンジラボでは、シナリオと一連のタスクが提供されます。各ステップの説明に沿って進める形式ではなく、クエスト内のラボで習得したスキルを駆使して、ご自身でタスクを完了していただきます。タスクが適切に完了したかどうかは、このページに表示される自動スコアリング システムで確認できます。

チャレンジラボは、Google Cloud の新しいコンセプトについて学習するためのものではありません。デフォルト値を変更する、エラー メッセージを読み調査を行ってミスを修正するなど、習得したスキルを応用する能力が求められます。

100% のスコアを達成するには、制限時間内に全タスクを完了する必要があります。

このラボは、「Implement DevOps Workflows in Google Cloud」コースに登録している受講者を対象としています。準備が整ったらチャレンジを開始しましょう。

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

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

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

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

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

チャレンジ シナリオ

数か月前に Cymbal Superstore の DevOps エンジニアとして採用されたあなたは、同社が e コマース ウェブサイトをどのように運営しているかについて詳しく学びました。具体的には、DevOps チームは大規模な CI / CD パイプラインの構築に取り組んでおり、そのプロセスであなたの力を必要としています。このパイプラインによって、同社の開発者はタスクを自動化し、他のチームと効果的に共同作業して、ソフトウェアをより頻繁かつ確実にリリースできるようになります。Cymbal Superstore ではすべての Google Cloud ネイティブ サービスをパイプラインに使用したいと考えているため、Cloud Source Repositories、Artifact Registry、Docker、Cloud Build に関するあなたの経験が大いに役立つでしょう。

Cymbal Superstore のロゴ

DevOps チームでは、このプロジェクトを開始する前に、あなたの新しいスキルをデモンストレーションで実証してもらいたいと考えています。この一環として、あなたは決められた時間内にサンドボックス環境で一連のタスクを実行する必要があります。

チャレンジ

実行するタスクは次のとおりです。

  • 指定された一連の構成に基づいて GKE クラスタを作成する
  • Go アプリケーション コードをホストする Cloud Source Repositories のリポジトリを作成する
  • 本番環境アプリケーションと開発環境アプリケーションをデプロイする Cloud Build トリガーを作成する
  • 更新をアプリに push し、新しいビルドを作成する
  • 本番環境アプリケーションを前のバージョンにロールバックする

全体としては、Cloud Source Repositories、Artifact Registry、Cloud Build を使用して単純な CI / CD パイプラインを作成します。

タスク 1. ラボ用リソースを作成する

このセクションでは、デモ環境用に Google Cloud プロジェクトを初期化します。必要な API を有効にし、Cloud Shell で Git を構成し、Artifact Registry Docker リポジトリを作成して、本番環境アプリケーションと開発環境アプリケーションを実行するための GKE クラスタを作成します。

  1. 次のコマンドを実行して、GKE、Cloud Build、Cloud Source Repositories の API を有効にします。
gcloud services enable container.googleapis.com \ cloudbuild.googleapis.com \ sourcerepo.googleapis.com
  1. Cloud Build サービス アカウントに対して Kubernetes デベロッパー ロールを追加します。
export PROJECT_ID=$(gcloud config get-value project) gcloud projects add-iam-policy-binding $PROJECT_ID \ --member=serviceAccount:$(gcloud projects describe $PROJECT_ID \ --format="value(projectNumber)")@cloudbuild.gserviceaccount.com --role="roles/container.developer"
  1. 次のコマンドを実行して、Cloud Shell で Git を構成します。<email> を生成されたラボ用メールアドレスに、<name> を自分の名前に置き換えます。
git config --global user.email <email> git config --global user.name <name>
  1. my-repository という名前の Artifact Registry Docker リポジトリを リージョンに作成します。このリポジトリにコンテナ イメージを保存します。

  2. 次の構成を使用して、hello-cluster という名前の GKE Standard クラスタを作成します。

設定
ゾーン
リリース チャンネル Regular
クラスタのバージョン 1.27.8-gke.1067004 以降
クラスタ オートスケーラー Enabled
ノードの数 3
最小ノード数 2
最大ノード数 6
  1. prod 名前空間と dev 名前空間をクラスタに作成します。

[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。 ラボ用リソースを作成する

タスク 2. Cloud Source Repositories でリポジトリを作成する

このタスクでは、sample-app というリポジトリを Cloud Source Repositories に作成し、サンプルコードで初期化します。このリポジトリは Go アプリケーション コードを保持し、ビルドをトリガーするための主なソースになります。

  1. sample-app という名前の空のリポジトリを Cloud Source Repositories に作成します。

  2. Cloud Shell で Cloud Source Repositories の sample-app リポジトリのクローンを作成します。

  3. 次のコマンドを使用して、サンプルコードを sample-app ディレクトリにコピーします。

cd ~ gsutil cp -r gs://spls/gsp330/sample-app/* sample-app
  1. 次のコマンドを実行します。このコマンドは、cloudbuild-dev.yaml ファイルと cloudbuild.yaml ファイルの中の <your-region><your-zone> のプレースホルダを、プロジェクトに割り当てられているリージョンとゾーンに自動的に置き換えます。
export REGION="{{{project_0.default_region | REGION}}}" export ZONE="{{{project_0.default_zone | ZONE}}}" for file in sample-app/cloudbuild-dev.yaml sample-app/cloudbuild.yaml; do sed -i "s/<your-region>/${REGION}/g" "$file" sed -i "s/<your-zone>/${ZONE}/g" "$file" done
  1. sample-app ディレクトリに追加したサンプルコードの最初の commit を行い、変更を master ブランチに push します。

  2. dev という名前のブランチを作成します。sample-app ディレクトリに追加したサンプルコードの commit を行い、変更を dev ブランチに push します。

  3. サンプルコードとブランチがソース リポジトリに保存されていることを確認します。

ブランチを含むソース リポジトリ

クローンを作成したコードには、Red と Blue という 2 つのエントリ ポイントを持つ単純な Go アプリケーションが含まれています。アクセスするエントリ ポイントに応じて、その色が付いた 1 つの四角形がウェブページに表示されます。

[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。 Cloud Source Repositories でリポジトリを作成する

タスク 3. Cloud Build トリガーを作成する

このセクションでは、2 つの Cloud Build トリガーを作成します。

  • 1 つ目のトリガーは、master ブランチの変更をリッスンし、アプリケーションの Docker イメージをビルドして Google Artifact Registry に push し、イメージの最新バージョンを GKE クラスタの prod 名前空間にデプロイします。

  • 2 つ目のトリガーは、dev ブランチの変更をリッスンし、アプリケーションの Docker イメージをビルドして Google Artifact Registry に push し、イメージの最新バージョンを GKE クラスタの dev 名前空間にデプロイします。

  1. 次の構成を使用して、sample-app-prod-deploy という名前の Cloud Build トリガーを作成します。

    • イベント: ブランチに push する
    • ソース リポジトリ: sample-app
    • ブランチ: ^master$
    • Cloud Build 構成ファイル: cloudbuild.yaml
  2. 次の構成を使用して、sample-app-dev-deploy という名前の Cloud Build トリガーを作成します。

    • イベント: ブランチに push する
    • ソース リポジトリ: sample-app
    • ブランチ: ^dev$
    • Cloud Build 構成ファイル: cloudbuild-dev.yaml

トリガーを設定した後、ブランチに変更を加えると、対応する Cloud Build パイプラインがトリガーされ、cloudbuild.yaml ファイルでの指定に従ってアプリケーションがビルドおよびデプロイされます。

[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。 Cloud Build トリガーを作成する

タスク 4. アプリケーションの最初のバージョンをデプロイする

このセクションでは、本番環境アプリケーションと開発環境アプリケーションの最初のバージョンをビルドします。

最初の開発環境 Deployment をビルドする

  1. Cloud Shell で、sample-app ディレクトリにある cloudbuild-dev.yaml ファイルを調べて、ビルドプロセスの手順を確認します。cloudbuild-dev.yaml ファイル内の 9 行目と 13 行目の <version>v1.0 に置き換えます。

  2. dev/deployment.yaml ファイルを開き、17 行目の <todo> を適切なコンテナ イメージ名に更新します。また、コンテナ イメージ名に含まれる PROJECT_ID 変数を実際のプロジェクト ID に置き換えます。

注: dev/deployment.yaml ファイルと cloudbuild-dev.yaml ファイルの中のコンテナ イメージ名が同じになるようにしてください。
  1. dev ブランチに対する変更の commit を行い、変更を push して sample-app-dev-deploy ビルドジョブをトリガーします。

  2. Cloud Build の履歴ページでビルドが正常に実行されたことを確認し、development-deployment アプリケーションがクラスタの dev 名前空間にデプロイされたことを確認します。

  3. development-deployment Deployment を dev-deployment-service という名前の LoadBalancer サービスにポート 8080 で公開し、コンテナのターゲット ポートを Dockerfile で指定されたポートに設定します。

  4. サービスのロードバランサ IP に移動し、URL の末尾に /blue エントリ ポイントを付加して、アプリケーションが稼働していることを確認します。これは、http://34.135.97.199:8080/blue のようになります。

最初の本番環境 Deployment をビルドする

  1. master ブランチに切り替えます。sample-app ディレクトリにある cloudbuild.yaml ファイルを調べて、ビルドプロセスの手順を確認します。cloudbuild.yaml ファイル内の 11 行目と 16 行目の <version>v1.0 に置き換えます。

  2. prod/deployment.yaml ファイルを開き、17 行目の <todo> を適切なコンテナ イメージ名に更新します。また、コンテナ イメージ名に含まれる PROJECT_ID 変数を実際のプロジェクト ID に置き換えます。

注: prod/deployment.yaml ファイルと cloudbuild.yaml ファイルの中のコンテナ イメージ名が同じになるようにしてください。
  1. master ブランチに対する変更の commit を行い、変更を push して sample-app-prod-deploy ビルドジョブをトリガーします。

  2. Cloud Build の履歴ページでビルドが正常に実行されたことを確認し、production-deployment アプリケーションがクラスタの prod 名前空間にデプロイされたことを確認します。

  3. prod 名前空間の production-deployment Deployment を prod-deployment-service という名前の LoadBalancer サービスにポート 8080 で公開し、コンテナのターゲット ポートを Dockerfile で指定されたポートに設定します。

  4. サービスのロードバランサ IP に移動し、URL の末尾に /blue エントリ ポイントを付加して、アプリケーションが稼働していることを確認します。これは、http://34.135.245.19:8080/blue のようになります。

[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。 アプリケーションの最初のバージョンをデプロイする

タスク 5. アプリケーションの 2 番目のバージョンをデプロイする

このセクションでは、本番環境アプリケーションと開発環境アプリケーションの 2 番目のバージョンをビルドします。

2 番目の開発環境 Deployment をビルドする

  1. dev ブランチに戻ります。
注: dev 環境の Deployment を作成するため、次に進む前に dev ブランチにいることを確認してください。
  1. main.go ファイルで、main() 関数を次のように更新します。
func main() { http.HandleFunc("/blue", blueHandler) http.HandleFunc("/red", redHandler) http.ListenAndServe(":8080", nil) }
  1. main.go ファイル内に次の関数を追加します。
func redHandler(w http.ResponseWriter, r *http.Request) { img := image.NewRGBA(image.Rect(0, 0, 100, 100)) draw.Draw(img, img.Bounds(), &image.Uniform{color.RGBA{255, 0, 0, 255}}, image.ZP, draw.Src) w.Header().Set("Content-Type", "image/png") png.Encode(w, img) }
  1. cloudbuild-dev.yaml ファイルを調べて、ビルドプロセスの手順を確認します。Docker イメージのバージョンを v2.0 に更新します。

  2. dev/deployment.yaml ファイルに移動し、コンテナ イメージ名を新しいバージョン(v2.0)に更新します。

  3. dev ブランチに対する変更の commit を行い、変更を push して sample-app-dev-deploy ビルドジョブをトリガーします。

  4. Cloud Build の履歴ページでビルドが正常に実行されたことを確認し、development-deployment アプリケーションがクラスタの dev 名前空間にデプロイされ、v2.0 イメージが使用されていることを確認します。

  5. サービスのロードバランサ IP に移動し、URL の末尾に /red エントリ ポイントを付加して、アプリケーションが稼働していることを確認します。これは、http://34.135.97.199:8080/red のようになります。

注: 更新がロードバランサに反映されるまでに数分かかる場合があります。

2 番目の本番環境 Deployment をビルドする

  1. master ブランチに切り替えます。
注: master 環境の Deployment を作成するため、次に進む前に master ブランチにいることを確認してください。
  1. main.go ファイルで、main() 関数を次のように更新します。
func main() { http.HandleFunc("/blue", blueHandler) http.HandleFunc("/red", redHandler) http.ListenAndServe(":8080", nil) }
  1. main.go ファイル内に次の関数を追加します。
func redHandler(w http.ResponseWriter, r *http.Request) { img := image.NewRGBA(image.Rect(0, 0, 100, 100)) draw.Draw(img, img.Bounds(), &image.Uniform{color.RGBA{255, 0, 0, 255}}, image.ZP, draw.Src) w.Header().Set("Content-Type", "image/png") png.Encode(w, img) }
  1. cloudbuild.yaml ファイルを調べて、ビルドプロセスの手順を確認します。Docker イメージのバージョンを v2.0 に更新します。

  2. prod/deployment.yaml ファイルに移動し、コンテナ イメージ名を新しいバージョン(v2.0)に更新します。

  3. master ブランチに対する変更の commit を行い、変更を push して sample-app-prod-deploy ビルドジョブをトリガーします。

  4. Cloud Build の履歴ページでビルドが正常に実行されたことを確認し、production-deployment アプリケーションがクラスタの prod 名前空間にデプロイされ、v2.0 イメージが使用されていることを確認します。

  5. サービスのロードバランサ IP に移動し、URL の末尾に /red エントリ ポイントを付加して、アプリケーションが稼働していることを確認します。これは、http://34.135.245.19:8080/red のようになります。

注: 更新がロードバランサに反映されるまでに数分かかる場合があります。

これで、完全に機能する本番環境と開発環境の CI / CD パイプラインを適切に作成できました。

[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。 アプリケーションの 2 番目のバージョンをデプロイする

タスク 6. 本番環境の Deployment をロールバックする

このセクションでは、本番環境の Deployment を前のバージョンにロールバックします。

  1. production-deployment をロールバックして、v1.0 バージョンのアプリケーションを使用します。
ヒント: Cloud Build の履歴を利用すると、Deployment を以前のバージョンに簡単にロールバックまたは再ビルドできます。
  1. サービスのロードバランサ IP に移動し、本番環境の Deployment の URL の末尾に /red エントリ ポイントを付加します。ページのレスポンスで 404 が返されます。

[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。 本番環境の Deployment をロールバックする

お疲れさまでした

これで完了です。このラボでは、Google Cloud での DevOps ワークフローの実装に関するスキルを確認しました。まず、アプリケーションを実行する GKE クラスタと、コードベースをホストする git リポジトリを作成しました。次に、Cloud Build トリガーを作成し、コードとテンプレートを変更して、開発環境アプリケーションと本番環境アプリケーションの最初のビルドを作成したリポジトリに更新を push しました。そして、更新をアプリケーションに push して新しいビルドを作成し、本番環境アプリケーションを前のバージョンにロールバックしました。これで、独自の環境で DevOps 作業を開始する準備が整いました。

Implement DevOps Workflows スキルバッジ

次のスキルバッジを獲得する

このセルフペース ラボは「Implement DevOps Workflows in Google Cloud」コースの一部です。このコースを完了すると成果が認められて上のようなバッジが贈られます。獲得したバッジを履歴書やソーシャル プラットフォームに記載し、#GoogleCloudBadge を使用して成果を公表しましょう。

このスキルバッジは、Google Cloud のCloud DevOps エンジニア向け学習プログラムの一部です。「Monitor and Log with Google Cloud Operations Suite」コースに登録し、学習を続けてください。

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

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

マニュアルの最終更新日: 2024 年 3 月 22 日

ラボの最終テスト日: 2024 年 2 月 9 日

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