Appearance
5. CI/CDパイプラインの実行
Qmonus Value Stream に登録した CI/CD パイプラインを実行し、API Backend をデプロイします。
5-1. AssemblyLineの確認(gcp-shared-infra)
gcp-shared-infra
の AssemblyLine を確認して、登録された CI/CD パイプラインの内容を確認してみましょう。
Pipeline Stages を確認すると、deploy
Pipeline が存在していることがわかります。この deploy
Pipeline は、本チュートリアルで選択した構成(Architecture, Option)に基づいて生成された、gcp-shared-infra
用のクラウドリソースをデプロイする Pipeline になります。 gcp-shared-infra
の AssemblyLine は、この deploy
Pipeline のみから構成されています。このため、この AssemblyLine を実行すると deploy
Pipeline が実行され、deploy
Pipeline の実行が完了すると AssemblyLine の実行が完了することになります。
5-2. Deployment Configの登録(gcp-shared-infra)
gcp-shared-infra
の AssemblyLine を実行するために Deployment Config を登録します。 Deployment Config は AssemblyLine の実行に必要なパラメータです。
以下の手順に従って gcp-shared-infra
の AssemblyLine の Deployment Config を登録してください。
Deployment Config とは
Deployment Config とは、Deployment に対して定義可能な Key-Value 形式のパラメータです。 各環境ごとにアプリケーションに必要なパラメータや、AssemblyLine を実行するためのパラメータを設定するために利用できます。
AssemblyLine の Pipeline Stages で
deploy
を選択します。画面下部のパラメータ一覧で、赤色となっている箇所を確認します。
画面下部のパラメータ一覧で、赤色となっている箇所が空欄かを確認します。空欄の場合は続けて Deployment Config を編集し、パラメータを設定する必要があります。(今回はすべてのパラメータが埋まっているため、設定は必要ありません。)
5-3. AssemblyLineの実行(gcp-shared-infra)
gcp-shared-infra
の AssemblyLine を実行し、リソースを Google Cloud にデプロイします。
手順2-2でコピーした Git コミットのハッシュ値を確認します。
画面上部の Input Parameters に以下を入力し、
RUN
ボタンを押下して AssemblyLine を実行します。- gitRevision: Gitコミットのハッシュ値
5-4. AssemblyLineの実行結果の確認(gcp-shared-infra)
AssemblyLine を実行すると、自動的に AssemblyLine の進捗画面に遷移します。この画面で、AssemblyLine のステータス、ログ、イベントといった AssemblyLine の進捗を確認できます。
1. ステータスの確認
- Pipelines (Stages) に、各 Pipeline のステータスが表示されます。
- 表示されている
deploy
カードを選択することで、deploy
Pipeline の中で実行される Task のステータスを確認できます。
- すべての Task および Pipeline のステータスが完了になると、AssemblyLine の実行が完了します。
TIP
AssemblyLine の実行には10分程度かかりますが、リアルタイムで状況が反映されます。実行が完了するまでお待ちください。
2. ログの確認
- ページ下部の Timeline に、各 Pipeline および Task の詳細が表示されます。
- Task 名を選択すると、Task の中で実行済みおよび実行中の Step が表示されます。
- Step 名を選択すると、Step の中で実行された処理のログを確認できます。
3. イベントの確認
- 画面右上の
EVENTS
ボタン、もしくは Pipeline および Task カード上の虫眼鏡マーク🔎 から、Pipeline および Task のイベントのログを確認できます。AssemblyLine の実行に失敗した場合などは、原因を分析するためにこちらのログを参照してください。
5-5. 作成されたGoogle Cloudリソースの確認
Task および Pipeline のステータスがすべて完了となり、AssemblyLine の実行が完了したら、Google Cloud にリソースが作成されたかを確認します。
Google Cloudにログイン後に、Provisioning Target 設定時に入力したプロジェクトに移動し、以下の種類のリソースで新規にリソースが作成されているかを確認します。
VPCネットワーク
サブネット
Google Kubernetes Engine(GKE)
Secret Managerシークレット
Cloud NATゲートウェイ
Cloud Router
外部静的IPアドレス
Artifact Registry
Cloud SQL for MySQL
サービスアカウント
以上で、gcp-shared-infra
の AssemblyLine に関する作業は完了です。 続いて、gcp-api-backend
の AssemblyLine を実行して、gcp-shared-infra
によって作成されたクラウドリソース上に API Backend をデプロイする作業を進めます。
AssemblyLine 結果画面に表示される Next AssemblyLine to run の項目に、次に実行する必要のある AssemblyLine へのリンクが表示されます。 今回は、次に実行する必要のある gcp-api-backend
の AssemblyLine へのリンクが表示されるので、リンクをクリックして gcp-api-backend
の AssemblyLine 詳細画面に移動します。
5-6. GKEへのKubernetes Namespaceの作成
本チュートリアルでは、API Backend を Kubernetes クラスタにデプロイすることになります。 そのため、まずは gcp-shared-infra
の AssemblyLine によって Google Cloud に作成された Google Kubernetes Engine(GKE)クラスタに、API Backend をデプロイするための Namespace を作成します。
Google Cloudにログイン後に、Provisioning Target 設定時に入力したプロジェクトに移動します。
リソース一覧から
Kubernetes Engine > クラスタ
をクリックします。Kubernetes Engine
の画面に移動したら、本チュートリアルで作成したqvs-gcp-shared-infra-cluster
を選択します。クラスタを選択したら、画面上部にある"接続"をクリックします。
クリックすると接続用のコマンドが表示されるので、コマンドをコピーします。
コマンドをコピーしたら以下コマンドで Namespace を作成します。
- コピーしたコマンドを実行し、作成したクラスタに接続します。
bash
# コピーしたコマンド
gcloud container clusters get-credentials qvs-gcp-shared-infra-cluster --zone asia-northeast1-a --project {your-project-name}
- kubectl を実行して Namespace を作成します。
bash
# Namespace を作るコマンド
kubectl create namespace 2nd-tutorial
namespace/2nd-tutorial created
が表示されたら Namespace の作成は完了です。
bash
namespace/2nd-tutorial created
5-7. kubeconfigの再設定
続いて、Qmonus Value Stream からデプロイ先の GKE クラスタにアクセスしてリソースをデプロイできるようにするために、GKE クラスタにアクセスするための kubeconfig を設定します。 kubeconfig は Google Cloud Credentialsとkubeconfigの登録にて登録しましたが、その時点ではまだ GKE クラスタが作成されていなかったためダミーの文字列を登録しただけだったので、実際に利用可能な kubeconfig を再登録する必要があります。
再登録する kubeconfig は、gcp-shared-infra
の AssemblyLine によって GKE クラスタが作成されると同時に生成されています。 その時に生成された kubeconfig が Secret Manager に保管されているので、取得して Qmonus Value Stream に登録します。
はじめに、Secret Manager から kubeconfig を取得するのに必要な操作をします。
Google Cloudにログイン後に、Provisioning Target 設定時に入力したプロジェクトに移動します。
左のメニューより
セキュリティ > Secret Manager
を選択します。シークレット一覧から
qvs-gcp-shared-infra-cluster-kubeconfig
を選択します。シークレット詳細画面に移動したら、
操作
を選択します。一覧から
シークレットの値
を選択します。シークレットの値が表示されたら内容をコピーします。
kubeconfig を取得できたので、この kubeconfig を Qmonus Value Stream に再設定します。 再設定は以下の手順で行います。
左のメニューから
Application
を選択します。Application の一覧画面で
gcp-api-backend
を選択します。選択すると Deployments の一覧に
application-3-tier-env
が表示されるのでクリックします。Deployment 詳細画面に移動したら、画面右上の
EDIT
ボタンをクリックします。Deployment 編集画面に移動したら、画面下の kubeconfig の入力欄に、コピーした kubeconfig を入力します。
最後に画面右下の
SAVE
をクリックして設定を保存します。
以上で kubeconfig の再設定は完了です。
5-8. Artifact Registryのパスのコピー
次に、gcp-shared-infra
の AssemblyLine によって作成された Artifact Registry のパスの値を確認します。この値は、このあと gcp-api-backend
の AssemblyLine を実行する際に必要となります。 以下の手順に従って、値を確認してください。
Google Cloudにログイン後に、Provisioning Target 設定時に入力したプロジェクトに移動します。
画面上部の検索欄に
Artifact Registry
と入力し、検索結果一覧に Artifact Registry が表示されたらクリックします。Artifact Registry 一覧から、作成された
qvs-gcp-shared-infra-registry
を選択します。画面上部に表示されるパスのコピーマークをクリックしてパスをコピーします。こちらでコピーしたパスは後ほど使用するので、値をテキストエディタなどにコピーしておいてください。
5-9. SQLデータベースの情報のコピー
次に、SQL データベースのインスタンス ID とパブリック IP アドレスの値を確認します。これらの値は、このあと gcp-api-backend
の AssemblyLine を実行する際に必要となります。 以下の手順に従って、値を確認してください。
Google Cloudにログイン後に、Provisioning Target 設定時に入力したプロジェクトに移動します。
画面上部の検索欄に
SQL
と入力し、検索結果一覧にSQL
が表示されたらクリックします。インスタンス一覧から、作成された
qvs-gcp-shared-infra-mysql
を選択します。画面上部に表示される、作成された SQL データベースのインスタンス ID をコピーします。こちらでコピーした ID は後ほど使用するので、値をテキストエディタなどにコピーしておいてください。
画面中央に表示される、作成された SQL データベースのパブリック IP アドレスをコピーします。こちらでコピーした IP アドレスは後ほど使用するので、値をテキストエディタなどにコピーしておいてください。
5-10. AssemblyLineの確認(gcp-api-backend)
Qmonus Value Stream からリソースをデプロイできる準備が整ったので、gcp-api-backend
の AssemblyLine を確認して、登録された CI/CD パイプラインの内容を確認してみましょう。
左メニューから
AssemblyLine
を選択します。AssemblyLine 一覧画面に移動したら、一覧より
api-backend
の AssemblyLine を選択します。AssemblyLine が表示されたら、
DETAIL
ボタンをクリックして AssemblyLine 詳細画面へ移動します。
Pipeline Stages を確認すると、build
deploy
の Pipeline が存在していることがわかります。これらの Pipeline は、本チュートリアルで選択した構成(Architecture, Option)に基づいて生成された Pipeline であり、gcp-api-backend
の AssemblyLine はこれらの Pipeline から構成されています。
各 Pipeline は、それぞれ以下の機能を担っています。
build
: API Backend としてデプロイするアプリケーションのコンテナイメージをビルドする。deploy
:gcp-api-backend
用のクラウドリソースをデプロイする。
また、Pipeline Stages が build
deploy
の順番で配置されていることに注目してください。このため、この AssemblyLine を実行すると、まず build
Pipeline が実行され、build
Pipeline の実行が完了すると deploy
Pipeline が実行され、deploy
Pipeline の実行が完了すると AssemblyLine の実行が完了することになります。
5-11. Deployment Configの登録(gcp-api-backend)
gcp-api-backend
の AssemblyLine を実行するために Deployment Config を登録します。 手順は、先に行った gcp-shared-infra
の Deployment Config の登録と同様です。
AssemblyLine の Pipeline Stages で
build
カードを選択します。画面下部のパラメータ一覧で、赤色となっている箇所が空欄かを確認します。これらの赤くなっている空欄の箇所のパラメータを Deployment Config で設定します。
同様に、Pipeline Stages で
deploy
カードを選択し、画面下部のパラメータ一覧で、赤色となっている箇所が空欄かを確認します。EDIT DEPLOYMENT CONFIG
ボタンを押下し、表示される Edit Deployment Config ダイアログで、設定が必要なパラメータを入力します。今回設定する必要のあるパラメータは、以下の通りです。
パラメータ 説明 dnsARecordSubdomain 新たに作成するAレコードに設定するサブドメインのFQDN。末尾のルート( .
)まで含めて指定してください(例: api.vsdev.axis-dev.io.)dnsZoneName 事前に用意したCloud DNSゾーン名(例: qvs-gcp-dns) dnsZoneProjectId 事前に用意したCloud DNSゾーンが所属するGoogle CloudプロジェクトID imageRegistryPath Artifact Registryのパスのコピーでコピーしたパス imageShortName ビルドするコンテナイメージの省略名 mysqlDatabaseName 新たに作成するCloud SQL for MySQLのデータベース名 mysqlInstanceId SQLデータベースの情報のコピーでコピーしたID mysqlUserName 新たに作成するCloud SQL for MySQLのユーザ名 mysqlInstanceIpAddress SQLデータベースの情報のコピーでコピーしたパブリック IP アドレス port API Backend のアプリケーションが利用するポート番号 pathToContext ソースディレクトリから Dockerfile のあるディレクトリへの相対パス
本チュートリアルではtodo-app/backend
を指定してくださいenv1 API Backend のアプリケーションのデプロイに必要な環境変数
本チュートリアルではskip-verify
を指定してください
TIP
env1
は、本チュートリアルで使用するサンプルアプリケーションを動作させるために必要な設定です。 自分のアプリケーションをデプロイする場合、このパラメータは必須ではありません。
以下のようにパラメータを入力します。入力内容は適宜読み替えてください。
yaml
dnsARecordSubdomain: api.vsdev.axis-dev.io.
dnsZoneName: qvs-gcp-dns
dnsZoneProjectId: {Cloud DNSゾーンが所属するプロジェクトID}
imageRegistryPath: asia-northeast1-docker.pkg.dev/{プロジェクトID}/qvs-gcp-shared-infra-registry
imageShortName: api-backend
mysqlDatabaseName: database
mysqlInstanceId: qvs-gcp-shared-infra-mysql
mysqlUserName: dbuser
mysqlInstanceIpAddress: xxx.xxx.xxx.xxx
port: "8888"
pathToContext: todo-app/backend
env1: skip-verify
SAVE
ボタンを押下し、ダイアログを閉じます。Pipeline Stages で
build
カードを選択し、画面下部のパラメータ一覧が、すべて青色になっていることを確認します。Pipeline Stages で
deploy
カードを選択し、画面下部のパラメータ一覧が、すべて青色になっていることを確認します。
5-12. AssemblyLineの実行(gcp-api-backend)
gcp-api-backend
の AssemblyLine を実行し、リソースを Google Cloud にデプロイします。
手順2-2でコピーした Git コミットのハッシュ値を確認します。
画面上部の Input Parameters に以下を入力し、
RUN
ボタンを押下して AssemblyLine を実行します。- gitRevision: Gitコミットのハッシュ値
- imageTag:
backend
5-13. AssemblyLineの実行結果の確認(gcp-api-backend)
AssemblyLine を実行すると、自動的に AssemblyLine の進捗画面に遷移します。
1. ステータスの確認
- Pipelines (Stages) に、各 Pipeline のステータスが表示されます。
- 表示されている
build
deploy
カードを選択することで、それぞれの Pipeline の中で実行される Task のステータスを確認できます。 - すべての Task および Pipeline のステータスが完了になると、AssemblyLine の実行が完了します。
TIP
AssemblyLine の実行には10分程度かかりますが、リアルタイムで状況が反映されます。実行が完了するまでお待ちください。
以上で AssemblyLine の実行は完了です。
5-14. デプロイされたサンプルアプリケーションの実行確認
Kubernetes にアクセスして、デプロイされたアプリケーションが実行されているかを確認します。 以下の URL にアクセスし、アプリケーションの実行確認を行ってください。
https://{新たに作成したAレコードのFQDN}
例: https://api.vsdev.axis-dev.io
TIP
gcp-api-backend
の AssemblyLine の実行が完了しても、実際にアプリケーションにアクセスできるようになるには、API Backend 用に作成される Google マネージド SSL 証明書のプロビジョニングが完了する必要があります。この処理には時間がかかる場合があります。
以下のように WEB ブラウザ上に API のレスポンスが表示されれば、デプロイに成功しています。
以上で、Qmonus Value Stream が提供する構成を選択して API Backend をデプロイするまでの一連の手順を体験いただきました。
次のチュートリアルでは、ここまで使用してきた構成を編集して、追加で要件を選択することで、既存の構成を拡張することを体験できます。 本チュートリアルの実施後にぜひトライしてみてください。 API Backendの拡張
ここでチュートリアルを終了する場合は、リソースの削除手順がありますのでそちらを参考にリソースを削除してください。 リソースの削除