Skip to content

5. CI/CDパイプラインの実行

Qmonus Value Stream に登録した CI/CD パイプラインを実行し、API Backend をデプロイします。

5-1. AssemblyLineの確認(gcp-shared-infra)

gcp-shared-infra の AssemblyLine を確認して、登録された CI/CD パイプラインの内容を確認してみましょう。

CI/CDパイプラインの実行手順AssemblyLineの確認

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 を実行するためのパラメータを設定するために利用できます。

  1. AssemblyLine の Pipeline Stages で deploy を選択します。

  2. 画面下部のパラメータ一覧で、赤色となっている箇所を確認します。

    CI/CDパイプラインの実行手順Deployment Configの登録

  3. 画面下部のパラメータ一覧で、赤色となっている箇所が空欄かを確認します。空欄の場合は続けて Deployment Config を編集し、パラメータを設定する必要があります。(今回はすべてのパラメータが埋まっているため、設定は必要ありません。)

5-3. AssemblyLineの実行(gcp-shared-infra)

gcp-shared-infra の AssemblyLine を実行し、リソースを GCP にデプロイします。

  1. 手順2-2でコピーした Git コミットのハッシュ値を確認します。

  2. 画面上部の Input Parameters に以下を入力し、RUN ボタンを押下して AssemblyLine を実行します。

    • gitRevision: Gitコミットのハッシュ値

5-4. AssemblyLineの実行結果の確認(gcp-shared-infra)

AssemblyLine を実行すると、自動的に AssemblyLine の進捗画面に遷移します。この画面で、AssemblyLine のステータス、ログ、イベントといった AssemblyLine の進捗を確認できます。

1. ステータスの確認

  • Pipelines (Stages) に、各 Pipeline のステータスが表示されます。
  • 表示されている deploy カードを選択することで、deploy Pipeline の中で実行される Task のステータスを確認できます。

CI/CDパイプラインの実行手順AssemblyLineの実行結果の確認

  • すべての Task および Pipeline のステータスが完了になると、AssemblyLine の実行が完了します。

CI/CDパイプラインの実行手順AssemblyLineの実行結果の確認

TIP

AssemblyLine の実行には10分程度かかりますが、リアルタイムで状況が反映されます。実行が完了するまでお待ちください。

2. ログの確認

  • ページ下部の Timeline に、各 Pipeline および Task の詳細が表示されます。
  • Task 名を選択すると、Task の中で実行済みおよび実行中の Step が表示されます。
  • Step 名を選択すると、Step の中で実行された処理のログを確認できます。

CI/CDパイプラインの実行手順ログの確認

3. イベントの確認

  • 画面右上の EVENTS ボタン、もしくは Pipeline および Task カード上の虫眼鏡マーク🔎 から、Pipeline および Task のイベントのログを確認できます。AssemblyLine の実行に失敗した場合などは、原因を分析するためにこちらのログを参照してください。

5-5. 作成されたGCPリソースの確認

Task および Pipeline のステータスがすべて完了となり、AssemblyLine の実行が完了したら、GCP にリソースが作成されたかを確認します。

GCPにログイン後に、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 によって GCP に作成された Google Kubernetes Engine(GKE)クラスタに、API Backend をデプロイするための Namespace を作成します。

  1. GCPにログイン後に、Provisioning Target 設定時に入力したプロジェクトに移動します。

  2. リソース一覧から Kubernetes Engine > クラスタ をクリックします。

    GKEへのKubernetes Namespaceの作成手順

  3. Kubernetes Engine の画面に移動したら、本チュートリアルで作成した qvs-gcp-shared-infra-cluster を選択します。

  4. クラスタを選択したら、画面上部にある"接続"をクリックします。

    GKEへのKubernetes Namespaceの作成手順

  5. クリックすると接続用のコマンドが表示されるので、コマンドをコピーします。

    GKEへのKubernetes Namespaceの作成手順

  6. コマンドをコピーしたら以下コマンドで Namespace を作成します。

    1. コピーしたコマンドを実行し、作成したクラスタに接続します。
bash
# コピーしたコマンド
gcloud container clusters get-credentials qvs-gcp-shared-infra-cluster --zone asia-northeast1-a --project {your-project-name}
    1. kubectl を実行して Namespace を作成します。
bash
# Namespace を作るコマンド
kubectl create namespace 2nd-tutorial
    1. namespace/2nd-tutorial created が表示されたら Namespace の作成は完了です。
bash
namespace/2nd-tutorial created

5-7. kubeconfigの再設定

続いて、Qmonus Value Stream からデプロイ先の GKE クラスタにアクセスしてリソースをデプロイできるようにするために、GKE クラスタにアクセスするための kubeconfig を設定します。 kubeconfig は GCP Credentialsとkubeconfigの登録にて登録しましたが、その時点ではまだ GKE クラスタが作成されていなかったためダミーの文字列を登録しただけだったので、実際に利用可能な kubeconfig を再登録する必要があります。

再登録する kubeconfig は、gcp-shared-infra の AssemblyLine によって GKE クラスタが作成されると同時に生成されています。 その時に生成された kubeconfig が Secret Manager に保管されているので、取得して Qmonus Value Stream に登録します。

はじめに、Secret Manager から kubeconfig を取得するのに必要な操作をします。

  1. GCPにログイン後に、Provisioning Target 設定時に入力したプロジェクトに移動します。

  2. 左のメニューより セキュリティ > Secret Manager を選択します。

    CI/CDパイプラインの実行手順

  3. シークレット一覧から qvs-gcp-shared-infra-cluster-kubeconfig を選択します。

    CI/CDパイプラインの実行手順

  4. シークレット詳細画面に移動したら、操作を選択します。

    CI/CDパイプラインの実行手順

  5. 一覧から シークレットの値 を選択します。

    CI/CDパイプラインの実行手順

  6. シークレットの値が表示されたら内容をコピーします。

    CI/CDパイプラインの実行手順

kubeconfig を取得できたので、この kubeconfig を Qmonus Value Stream に再設定します。 再設定は以下の手順で行います。

  1. 左のメニューから Application を選択します。

    CI/CDパイプラインの実行手順

  2. Application の一覧画面で gcp-api-backend を選択します。

  3. 選択すると Deployments の一覧に application-3-tier-env が表示されるのでクリックします。

  4. Deployment 詳細画面に移動したら、画面右上の EDIT ボタンをクリックします。

  5. Deployment 編集画面に移動したら、画面下の kubeconfig の入力欄に、コピーした kubeconfig を入力します。

  6. 最後に画面右下の SAVE をクリックして設定を保存します。

以上で kubeconfig の再設定は完了です。

5-8. Artifact Registryのパスのコピー

次に、gcp-shared-infra の AssemblyLine によって作成された Artifact Registry のパスの値を確認します。この値は、このあと gcp-api-backend の AssemblyLine を実行する際に必要となります。 以下の手順に従って、値を確認してください。

  1. GCPにログイン後に、Provisioning Target 設定時に入力したプロジェクトに移動します。

  2. 画面上部の検索欄に Artifact Registry と入力し、検索結果一覧に Artifact Registry が表示されたらクリックします。

    CI/CDパイプラインの実行手順Artifact Registry

  3. Artifact Registry 一覧から、作成された qvs-gcp-shared-infra-registry を選択します。

    CI/CDパイプラインの実行手順Artifact Registry

  4. 画面上部に表示されるパスのコピーマークをクリックしてパスをコピーします。こちらでコピーしたパスは後ほど使用するので、値をテキストエディタなどにコピーしておいてください。

    CI/CDパイプラインの実行手順Artifact Registry

5-9. SQLデータベースの情報のコピー

次に、SQL データベースのインスタンス ID とパブリック IP アドレスの値を確認します。これらの値は、このあと gcp-api-backend の AssemblyLine を実行する際に必要となります。 以下の手順に従って、値を確認してください。

  1. GCPにログイン後に、Provisioning Target 設定時に入力したプロジェクトに移動します。

  2. 画面上部の検索欄に SQL と入力し、検索結果一覧に SQL が表示されたらクリックします。

    CI/CDパイプラインの実行手順SQLデータベース

  3. インスタンス一覧から、作成された qvs-gcp-shared-infra-mysql を選択します。

    CI/CDパイプラインの実行手順SQLデータベース

  4. 画面上部に表示される、作成された SQL データベースのインスタンス ID をコピーします。こちらでコピーした ID は後ほど使用するので、値をテキストエディタなどにコピーしておいてください。

    CI/CDパイプラインの実行手順SQLデータベース

  5. 画面中央に表示される、作成された SQL データベースのパブリック IP アドレスをコピーします。こちらでコピーした IP アドレスは後ほど使用するので、値をテキストエディタなどにコピーしておいてください。

    CI/CDパイプラインの実行手順SQLデータベース

5-10. AssemblyLineの確認(gcp-api-backend)

Qmonus Value Stream からリソースをデプロイできる準備が整ったので、gcp-api-backend の AssemblyLine を確認して、登録された CI/CD パイプラインの内容を確認してみましょう。

  1. 左メニューから AssemblyLine を選択します。

    CI/CDパイプラインの実行手順AssemblyLineの確認

  2. AssemblyLine 一覧画面に移動したら、一覧より api-backend の AssemblyLine を選択します。

  3. AssemblyLine が表示されたら、DETAIL ボタンをクリックして AssemblyLine 詳細画面へ移動します。

CI/CDパイプラインの実行手順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 の実行が完了することになります。

CI/CDパイプラインの実行手順AssemblyLineの確認

5-11. Deployment Configの登録(gcp-api-backend)

gcp-api-backend の AssemblyLine を実行するために Deployment Config を登録します。 手順は、先に行った gcp-shared-infra の Deployment Config の登録と同様です。

  1. AssemblyLine の Pipeline Stages で build カードを選択します。

  2. 画面下部のパラメータ一覧で、赤色となっている箇所が空欄かを確認します。これらの赤くなっている空欄の箇所のパラメータを Deployment Config で設定します。

    CI/CDパイプラインの実行手順Deployment Configの登録

  3. 同様に、Pipeline Stages で deploy カードを選択し、画面下部のパラメータ一覧で、赤色となっている箇所が空欄かを確認します。

  4. 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
    imageRegistryPathArtifact Registryのパスのコピーでコピーしたパス
    imageShortNameビルドするコンテナイメージの省略名
    mysqlDatabaseName新たに作成するCloud SQL for MySQLのデータベース名
    mysqlInstanceIdSQLデータベースの情報のコピーでコピーしたID
    mysqlUserName新たに作成するCloud SQL for MySQLのユーザ名
    mysqlInstanceIpAddressSQLデータベースの情報のコピーでコピーしたパブリック IP アドレス
    portAPI Backend のアプリケーションが利用するポート番号
    pathToContextソースディレクトリから Dockerfile のあるディレクトリへの相対パス
    本チュートリアルでは todo-app/backend を指定してください
    env1API 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

CI/CDパイプラインの実行手順Deployment Configの登録

  1. SAVE ボタンを押下し、ダイアログを閉じます。

  2. Pipeline Stages で build カードを選択し、画面下部のパラメータ一覧が、すべて青色になっていることを確認します。

  3. Pipeline Stages で deploy カードを選択し、画面下部のパラメータ一覧が、すべて青色になっていることを確認します。

5-12. AssemblyLineの実行(gcp-api-backend)

gcp-api-backend の AssemblyLine を実行し、リソースを GCP にデプロイします。

  1. 手順2-2でコピーした Git コミットのハッシュ値を確認します。

  2. 画面上部の 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 の実行が完了します。

CI/CDパイプラインの実行手順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の拡張

ここでチュートリアルを終了する場合は、リソースの削除手順がありますのでそちらを参考にリソースを削除してください。 リソースの削除