Upgrade to Pro — share decks privately, control downloads, hide ads and more …

第5回 雲勉LT【オンライン:初心者向け】GCのサービスだけでCI_CDを構築してみよう

Y.Sumikura
December 12, 2022

第5回 雲勉LT【オンライン:初心者向け】GCのサービスだけでCI_CDを構築してみよう

Y.Sumikura

December 12, 2022
Tweet

More Decks by Y.Sumikura

Other Decks in Technology

Transcript

  1. 目次 2 • 自己紹介 • はじめに • 本日の主役Cloud Buildとは? •

    実際に作ってみましょう! • Cloud Buildを実務で使ってみて、とくに困った・気づいたこと • まとめ
  2. 使用技術 8 Google Cloud • Cloud Build • Source Repositories

    • Artifact Registry • Cloud Run • Pub/Sub • Cloud Storage その他 • FastAPI • Terraform
  3. 本日の主役Cloud Buildとは? 11 Cloud Buildってなに? Google CloudのCI/CDサービスです。 CI/CDがあると、何がうれしいの? 今まで、テスト・デプロイなど手動でやっていたことを自動化することによって、 もっとアプリの開発に集中できたり、人的ミスを減らしたり、その分人的コストの軽減など...

    恩恵はたくさんあります。 (山盛りコードが書けますね。) GCの他サービスGKEやCloud Runなどとの連携がしやすく、一元管理ができる なおかつ、GCサービス内部で完結できれば安全性も高くなったりなど... Cloud Buildならではの嬉しいこと
  4. 本日の主役Cloud Buildとは? 12 Cloud Buildってどうやって使うの? Cloud Buildは、大きく分けて ビルドトリガー と Cloud

    Build構成ファイル という主に2つのモノを作成します。 ビルドトリガー Cloud Build構成ファイル (cloudbuild.yaml)
  5. まずは、全体の流れ 16 1. FastAPIとDockerfile準備する 2. Source Repositoriesを作成&プッシュ 3. Artifact Registryのリポジトリを作る

    4. Cloud Buildでトリガーを作る 5. Cloud Runにデプロイされていることを確認してみる ここを作成します
  6. 使用するサービスのかるい説明 17 Source Repositoriesとは? ソースコードを保管しておくサービスです。 GitHubのリポジトリとミラーリングなどもできます。 Artifact Registryとは? コンテナのイメージを保管しておくサービスです。 ちなみに、Container

    Registryというサービスとややこしくなりがちですが、 現在は、Artifact Registryの使用が推奨されています。 言わずと知れた、サーバレスでコンテナを動かすサービスです。 柔軟なオートスケーリングなど魅力が盛りだくさん、かつ、活発にプレビュー版機能が追加されていて まさに、Google Cloudの推しサービス?ですよね。 Cloud Runとは?
  7. 1.FastAPIとDockerfile準備する 19 1. FastAPIとDockerfile準備する 2. Source Repositoriesを作成&プッシュ 3. Artifact Registryのリポジトリを作る

    4. Cloud Buildでトリガーを作る 5. Cloud Runにデプロイされていることを確認してみる ここを準備します
  8. 2.Source Repositoriesを作成&プッシュ 23 1. FastAPIとDockerfile準備する 2. Source Repositoriesを作成&プッシュ 3. Artifact

    Registryのリポジトリを作る 4. Cloud Buildでトリガーを作る 5. Cloud Runにデプロイされていることを確認してみる ここを作成します
  9. 3.Artifact Registryのリポジトリを作る 27 1. FastAPIとDockerfile準備する 2. Source Repositoriesを作成&プッシュ 3. Artifact

    Registryのリポジトリを作る 4. Cloud Buildでトリガーを作る 5. Cloud Runにデプロイされていることを確認してみる ここを作成します
  10. 4.Cloud Buildでトリガーを作る 29 1. FastAPIとDockerfile準備する 2. Source Repositoriesを作成&プッシュ 3. Artifact

    Registryのリポジトリを作る 4. Cloud Buildでトリガーを作る 5. Cloud Runにデプロイされていることを確認してみる ここを作成します
  11. 5.Cloud Runにデプロイされていることを確認してみる 38 1. FastAPIとDockerfile準備する 2. Source Repositoriesを作成&プッシュ 3. Artifact

    Registryのリポジトリを作る 4. Cloud Buildでトリガーを作る 5. Cloud Runにデプロイされていることを確認してみる ここを確認します
  12. Slack通知を飛ばしたい時 45 Slack通知部分の大まかな流れ 1. Slackアプリを作成する 2. 通知用のyamlファイルをCloud Storageに保存する 3. Cloud

    Runで通知用コンテナをデプロイする 4. Pub/Subのトピック&サブスクライバーの設定をする https://cloud.google.com/build/docs/configuring-notifications/configure-slack
  13. Source Repositoriesとの併用の注意点 49 結論 自動化する場合、Source RepositoriesとCloud Buildは切り離せません。 なぜなら • GCコンソールでCloud

    Buildトリガー作成時に、同じプロジェクトのSource Repositoriesしか表示さ れません。 • CLIでトリガー作成した場合、手動でのみトリガーできるため、コミットしても自動でトリガーされ ません。(トリガー作成は、gcloud alphaを使用します)
  14. まとめ 57 色々読み物まとめ Cloud Build公式リファレンス https://cloud.google.com/build/docs/overview Cloud Build Slack通知を構成する https://cloud.google.com/build/docs/configuring-notifications/configure-slack

    Terrafrom公式リファレンス GoogleCloud https://registry.terraform.io/providers/hashicorp/google/latest/docs Slack API日本語版公式 https://api.slack.com/lang/ja-jp gcloudコマンド公式リファレンス https://cloud.google.com/sdk/gcloud/reference FastAPI日本語公式サイト https://fastapi.tiangolo.com/ja/