チェックポイント
Create the lab resources
/ 20
Create the Cloud Build Triggers
/ 20
Deploy the first versions of the application
/ 20
Deploy the second versions of the application
/ 20
Roll back the production deployment
/ 20
Implement DevOps Workflows in Google Cloud: チャレンジラボ
GSP330
概要
チャレンジラボでは、シナリオと一連のタスクが提供されます。手順ガイドに沿って進める形式ではなく、コース内のラボで習得したスキルを駆使して、ご自身でタスクを完了していただきます。タスクが適切に完了したかどうかは、このページに表示される自動スコアリング システムで確認できます。
チャレンジラボは、Google Cloud の新しいコンセプトについて学習するためのものではありません。デフォルト値を変更する、エラー メッセージを読み調査を行ってミスを修正するなど、習得したスキルを応用する能力が求められます。
100% のスコアを達成するには、制限時間内に全タスクを完了する必要があります。
このラボは、「Implement DevOps Workflows in Google Cloud」コースに登録している受講者を対象としています。準備が整ったらチャレンジを開始しましょう。
[ラボを開始] ボタンをクリックする前に
こちらの手順をお読みください。ラボの時間は記録されており、一時停止することはできません。[ラボを開始] をクリックするとスタートするタイマーは、Google Cloud のリソースを利用できる時間を示しています。
このハンズオンラボでは、シミュレーションやデモ環境ではなく、実際のクラウド環境を使ってご自身でラボのアクティビティを行うことができます。そのため、ラボの受講中に Google Cloud にログインおよびアクセスするための、新しい一時的な認証情報が提供されます。
このラボを完了するためには、下記が必要です。
- 標準的なインターネット ブラウザ(Chrome を推奨)
- ラボを完了するために十分な時間を確保してください。ラボをいったん開始すると一時停止することはできません。
チャレンジ シナリオ
数か月前に Cymbal Superstore の DevOps エンジニアとして採用されたあなたは、同社が e コマース ウェブサイトをどのように運営しているかについて詳しく学びました。具体的には、DevOps チームは大規模な CI / CD パイプラインの構築に取り組んでおり、そのプロセスであなたの力を必要としています。このパイプラインによって、同社の開発者はタスクを自動化し、他のチームと効果的に共同作業して、ソフトウェアをより頻繁かつ確実にリリースできるようになります。Cymbal Superstore ではすべての Google Cloud ネイティブ サービスをパイプラインに使用したいと考えているため、Cloud Source Repositories、Artifact Registry、Docker、Cloud Build に関するあなたの経験が大いに役立つでしょう。
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 クラスタを作成します。
- 次のコマンドを実行して、GKE、Cloud Build、Cloud Source Repositories の API を有効にします。
- Cloud Build サービス アカウントに対して Kubernetes デベロッパー ロールを追加します。
- 次のコマンドを実行して、Cloud Shell で Git を構成します。
<email>
を生成されたラボ用メールアドレスに、<name>
を自分の名前に置き換えます。
-
my-repository という名前の Artifact Registry Docker リポジトリを
リージョンに作成します。このリポジトリにコンテナ イメージを保存します。 -
次の構成を使用して、
hello-cluster
という名前の GKE Standard クラスタを作成します。
設定 | 値 |
---|---|
ゾーン | |
リリース チャンネル | Regular |
クラスタのバージョン |
1.29 以降
|
クラスタ オートスケーラー | Enabled |
ノードの数 | 3 |
最小ノード数 | 2 |
最大ノード数 | 6 |
-
prod
名前空間とdev
名前空間をクラスタに作成します。
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
タスク 2. Cloud Source Repositories でリポジトリを作成する
このタスクでは、sample-app というリポジトリを Cloud Source Repositories に作成し、サンプルコードで初期化します。このリポジトリは Go アプリケーション コードを保持し、ビルドをトリガーするための主なソースになります。
-
sample-app という名前の空のリポジトリを Cloud Source Repositories に作成します。
-
Cloud Shell で Cloud Source Repositories の sample-app リポジトリのクローンを作成します。
-
次のコマンドを使用して、サンプルコードを
sample-app
ディレクトリにコピーします。
- 次のコマンドを実行します。このコマンドは、
cloudbuild-dev.yaml
ファイルとcloudbuild.yaml
ファイルの中の<your-region>
と<your-zone>
のプレースホルダを、プロジェクトに割り当てられているリージョンとゾーンに自動的に置き換えます。
-
sample-app
ディレクトリに追加したサンプルコードの最初の commit を行い、変更を master ブランチに push します。 -
dev という名前のブランチを作成します。
sample-app
ディレクトリに追加したサンプルコードの commit を行い、変更を dev ブランチに push します。 -
サンプルコードとブランチがソース リポジトリに保存されていることを確認します。
クローンを作成したコードには、Red と Blue という 2 つのエントリ ポイントを持つ単純な Go アプリケーションが含まれています。アクセスするエントリ ポイントに応じて、その色が付いた 1 つの四角形がウェブページに表示されます。
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
タスク 3. Cloud Build トリガーを作成する
このセクションでは、2 つの Cloud Build トリガーを作成します。
-
1 つ目のトリガーは、
master
ブランチの変更をリッスンし、アプリケーションの Docker イメージをビルドして Google Artifact Registry に push し、イメージの最新バージョンを GKE クラスタの prod 名前空間にデプロイします。 -
2 つ目のトリガーは、
dev
ブランチの変更をリッスンし、アプリケーションの Docker イメージをビルドして Google Artifact Registry に push し、イメージの最新バージョンを GKE クラスタの dev 名前空間にデプロイします。
-
次の構成を使用して、sample-app-prod-deploy という名前の Cloud Build トリガーを作成します。
- イベント: ブランチに push する
- ソース リポジトリ:
sample-app
- ブランチ:
^master$
- Cloud Build 構成ファイル:
cloudbuild.yaml
-
次の構成を使用して、sample-app-dev-deploy という名前の Cloud Build トリガーを作成します。
- イベント: ブランチに push する
- ソース リポジトリ:
sample-app
- ブランチ:
^dev$
- Cloud Build 構成ファイル:
cloudbuild-dev.yaml
トリガーを設定した後、ブランチに変更を加えると、対応する Cloud Build パイプラインがトリガーされ、cloudbuild.yaml
ファイルでの指定に従ってアプリケーションがビルドおよびデプロイされます。
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
タスク 4. アプリケーションの最初のバージョンをデプロイする
このセクションでは、本番環境アプリケーションと開発環境アプリケーションの最初のバージョンをビルドします。
最初の開発環境 Deployment をビルドする
-
Cloud Shell で、sample-app ディレクトリにある
cloudbuild-dev.yaml
ファイルを調べて、ビルドプロセスの手順を確認します。cloudbuild-dev.yaml
ファイル内の 9 行目と 13 行目の<version>
をv1.0
に置き換えます。 -
dev/deployment.yaml
ファイルを開き、17 行目の<todo>
を適切なコンテナ イメージ名に更新します。また、コンテナ イメージ名に含まれるPROJECT_ID
変数を実際のプロジェクト ID に置き換えます。
-
dev
ブランチに対する変更の commit を行い、変更を push して sample-app-dev-deploy ビルドジョブをトリガーします。 -
Cloud Build の履歴ページでビルドが正常に実行されたことを確認し、development-deployment アプリケーションがクラスタの
dev
名前空間にデプロイされたことを確認します。 -
development-deployment Deployment を
dev-deployment-service
という名前の LoadBalancer サービスにポート 8080 で公開し、コンテナのターゲット ポートを Dockerfile で指定されたポートに設定します。 -
サービスのロードバランサ IP に移動し、URL の末尾に
/blue
エントリ ポイントを付加して、アプリケーションが稼働していることを確認します。これは、http://34.135.97.199:8080/blue
のようになります。
最初の本番環境 Deployment をビルドする
-
master
ブランチに切り替えます。sample-app ディレクトリにあるcloudbuild.yaml
ファイルを調べて、ビルドプロセスの手順を確認します。cloudbuild.yaml
ファイル内の 11 行目と 16 行目の<version>
をv1.0
に置き換えます。 -
prod/deployment.yaml
ファイルを開き、17 行目の<todo>
を適切なコンテナ イメージ名に更新します。また、コンテナ イメージ名に含まれるPROJECT_ID
変数を実際のプロジェクト ID に置き換えます。
-
master
ブランチに対する変更の commit を行い、変更を push して sample-app-prod-deploy ビルドジョブをトリガーします。 -
Cloud Build の履歴ページでビルドが正常に実行されたことを確認し、production-deployment アプリケーションがクラスタの
prod
名前空間にデプロイされたことを確認します。 -
prod
名前空間の production-deployment Deployment をprod-deployment-service
という名前の LoadBalancer サービスにポート 8080 で公開し、コンテナのターゲット ポートを Dockerfile で指定されたポートに設定します。 -
サービスのロードバランサ IP に移動し、URL の末尾に
/blue
エントリ ポイントを付加して、アプリケーションが稼働していることを確認します。これは、http://34.135.245.19:8080/blue
のようになります。
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
タスク 5. アプリケーションの 2 番目のバージョンをデプロイする
このセクションでは、本番環境アプリケーションと開発環境アプリケーションの 2 番目のバージョンをビルドします。
2 番目の開発環境 Deployment をビルドする
-
dev
ブランチに戻ります。
-
main.go
ファイルで、main()
関数を次のように更新します。
-
main.go
ファイル内に次の関数を追加します。
-
cloudbuild-dev.yaml
ファイルを調べて、ビルドプロセスの手順を確認します。Docker イメージのバージョンをv2.0
に更新します。 -
dev/deployment.yaml
ファイルに移動し、コンテナ イメージ名を新しいバージョン(v2.0
)に更新します。 -
dev
ブランチに対する変更の commit を行い、変更を push して sample-app-dev-deploy ビルドジョブをトリガーします。 -
Cloud Build の履歴ページでビルドが正常に実行されたことを確認し、development-deployment アプリケーションがクラスタの
dev
名前空間にデプロイされ、v2.0
イメージが使用されていることを確認します。 -
サービスのロードバランサ IP に移動し、URL の末尾に
/red
エントリ ポイントを付加して、アプリケーションが稼働していることを確認します。これは、http://34.135.97.199:8080/red
のようになります。
2 番目の本番環境 Deployment をビルドする
-
master
ブランチに切り替えます。
-
main.go
ファイルで、main()
関数を次のように更新します。
-
main.go
ファイル内に次の関数を追加します。
-
cloudbuild.yaml
ファイルを調べて、ビルドプロセスの手順を確認します。Docker イメージのバージョンをv2.0
に更新します。 -
prod/deployment.yaml
ファイルに移動し、コンテナ イメージ名を新しいバージョン(v2.0
)に更新します。 -
master
ブランチに対する変更の commit を行い、変更を push して sample-app-prod-deploy ビルドジョブをトリガーします。 -
Cloud Build の履歴ページでビルドが正常に実行されたことを確認し、production-deployment アプリケーションがクラスタの
prod
名前空間にデプロイされ、v2.0
イメージが使用されていることを確認します。 -
サービスのロードバランサ IP に移動し、URL の末尾に
/red
エントリ ポイントを付加して、アプリケーションが稼働していることを確認します。これは、http://34.135.245.19:8080/red
のようになります。
これで、完全に機能する本番環境と開発環境の CI / CD パイプラインを適切に作成できました。
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
タスク 6. 本番環境の Deployment をロールバックする
このセクションでは、本番環境の Deployment を前のバージョンにロールバックします。
-
production-deployment をロールバックして、
v1.0
バージョンのアプリケーションを使用します。
- サービスのロードバランサ IP に移動し、本番環境の Deployment の URL の末尾に
/red
エントリ ポイントを付加します。ページのレスポンスで404
が返されます。
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
お疲れさまでした
これで完了です。このラボでは、Google Cloud での DevOps ワークフローの実装に関するスキルを確認しました。まず、アプリケーションを実行する GKE クラスタと、コードベースをホストする git リポジトリを作成しました。次に、Cloud Build トリガーを作成し、コードとテンプレートを変更して、開発環境アプリケーションと本番環境アプリケーションの最初のビルドを作成したリポジトリに更新を push しました。そして、更新をアプリケーションに push して新しいビルドを作成し、本番環境アプリケーションを前のバージョンにロールバックしました。これで、独自の環境で DevOps 作業を開始する準備が整いました。
次のスキルバッジを獲得する
このセルフペース ラボは「Implement DevOps Workflows in Google Cloud」コースの一部です。このコースを完了すると成果が認められて上のようなバッジが贈られます。獲得したバッジを履歴書やソーシャル プラットフォームに記載し、#GoogleCloudBadge を使用して成果を公表しましょう。
このスキルバッジは、Google Cloud のCloud DevOps エンジニア向け学習プログラムの一部です。「Monitor and Log with Google Cloud Observability」コースに登録し、学習を続けてください。
Google Cloud トレーニングと認定資格
Google Cloud トレーニングと認定資格を通して、Google Cloud 技術を最大限に活用できるようになります。必要な技術スキルとベスト プラクティスについて取り扱うクラスでは、学習を継続的に進めることができます。トレーニングは基礎レベルから上級レベルまであり、オンデマンド、ライブ、バーチャル参加など、多忙なスケジュールにも対応できるオプションが用意されています。認定資格を取得することで、Google Cloud テクノロジーに関するスキルと知識を証明できます。
マニュアルの最終更新日: 2024 年 6 月 26 日
ラボの最終テスト日: 2024 年 6 月 26 日
Copyright 2024 Google LLC All rights reserved. Google および Google のロゴは Google LLC の商標です。その他すべての企業名および商品名はそれぞれ各社の商標または登録商標です。