Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
第5回 雲勉LT【オンライン:初心者向け】GCのサービスだけでCI_CDを構築してみよう
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Y.Sumikura
December 12, 2022
Technology
82
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
第5回 雲勉LT【オンライン:初心者向け】GCのサービスだけでCI_CDを構築してみよう
Y.Sumikura
December 12, 2022
More Decks by Y.Sumikura
See All by Y.Sumikura
第103回 雲勉【オンライン】インフラエンジニアにおける ChatGPT の便利な使い方と注意点
sumikurayurie1125
1
320
第101回 雲勉【オンライン】VPC から始めるネットワーク入門
sumikurayurie1125
0
190
第99回 雲勉【オンライン:初心者向け】Infrastructure as Code (IaC) 入門 〜TerraformとAnsibleを使ってみよう〜
sumikurayurie1125
0
260
第96回 雲勉【オンライン:初心者向け】インフラエンジニアのKubernetes入門
sumikurayurie1125
0
270
第8回 雲勉LT【オンライン:中級者向け】AthenaでS3上のデータとDynamoDBのデータを結合する
sumikurayurie1125
0
390
第93回 雲勉【オンライン:初心者向け】CI/CDって結局何なの?インフラエンジニアがCode3兄弟を学ぶ
sumikurayurie1125
13
4.9k
第7回 雲勉LT【オンライン:初心者向け】サーバレスコンテナサービス Lambda, Fargate, App Runnerの特徴、違いを解説
sumikurayurie1125
3
680
第6回 雲勉LT【オンライン:初心者向け】2022年 気になったアップデート情報:「RDSコンソールの、EC2ワンクリック接続オプション」について
sumikurayurie1125
0
190
第90回 雲勉【オンライン:初心者向け】AWS App RunnerにLaravelをデプロイしてLINEBotを作ってみよう
sumikurayurie1125
0
930
Other Decks in Technology
See All in Technology
AI時代のコスト管理を考えよう〜明日から使える実践AWSノウハウ~
yoshimi0227
0
310
[チョークトーク資料]AWS DevOps Agent を使いこなす / AWS Dev Ops Agent Chalk Talk AWS Summit Japan 2026
kinunori
3
570
日本 Fintech 未来予測レポート 2027〜2028年(手動編集版)
8maki
1
2.5k
徹底討論!ECS vs EKS!
daitak
0
220
SONiC Scale-Up Working Group から探る Scale-UpやUltraEthernet機能の実装方法
ebiken
PRO
2
410
【NRUG vol.18】KubernetesにおけるNew Relicデータ取得量削減の考え方
nrug_member
0
170
Bucharest Tech Week 2026 - Reinventing testing practices in the AI era
edeandrea
PRO
1
170
【Cyber-sec+】経営層を"動かす"ための考え方
hssh2_bin
0
200
AIネイティブな開発のサプライチェーンリスク対策 〜激動の開発現場でリスクに立ち向かう〜【ZennFes】
cscengineer
PRO
2
140
When Platform Engineering Meets GenAI
sucitw
0
130
2026TECHFRESH畢業分享會 - Lightning Talk - E起 See See : 電商推薦讀心術? 數據說了算
line_developers_tw
PRO
0
1.3k
不要なレビューをAIにまかせて AIコーディングの環境改善を加速した
shoota
1
230
Featured
See All Featured
Primal Persuasion: How to Engage the Brain for Learning That Lasts
tmiket
0
370
The Cost Of JavaScript in 2023
addyosmani
55
10k
Making the Leap to Tech Lead
cromwellryan
135
9.9k
Darren the Foodie - Storyboard
khoart
PRO
3
3.4k
Statistics for Hackers
jakevdp
799
230k
How to make the Groovebox
asonas
2
2.2k
Site-Speed That Sticks
csswizardry
13
1.2k
HDC tutorial
michielstock
2
720
New Earth Scene 8
popppiees
3
2.3k
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
210
sira's awesome portfolio website redesign presentation
elsirapls
0
280
How to Ace a Technical Interview
jacobian
281
24k
Transcript
第5回 雲勉LT【オンライン:初心者向け】 GCのサービスだけでCI/CDを構築してみよう 2022.12.13 アイレット株式会社 クラウドインテグレーション事業部
目次 2 • 自己紹介 • はじめに • 本日の主役Cloud Buildとは? •
実際に作ってみましょう! • Cloud Buildを実務で使ってみて、とくに困った・気づいたこと • まとめ
3 自己紹介
自己紹介 4 小林 千紘 クラウドインテグレーション事業部 開発第二セクション 第一グループ 前職では、主にPythonを使ったweb開発をしており、 現在も、かちゃかちゃ開発をしています。コードはごはん。アルゴリズム体操すき。 アイレットに転職し、クラウドをガッツリ触り始めました。
推し言語はRustとGo、 最近嬉しいことは、GCプロフェッショナルパーカーがやっと届いたこと。 どんな人間なの?
5 はじめに
はじめに 6 このLTの対象者は? • GCのCI/CDの全容をざっくり知りたい方 • ポートフォリオを作っているけどGCを取り入れてみたい方
今回のアーキテクチャ図 7 本日の主役
使用技術 8 Google Cloud • Cloud Build • Source Repositories
• Artifact Registry • Cloud Run • Pub/Sub • Cloud Storage その他 • FastAPI • Terraform
9 本日の主役Cloud Buildとは?
本日の主役Cloud Buildとは? 10 なんかすごい
本日の主役Cloud Buildとは? 11 Cloud Buildってなに? Google CloudのCI/CDサービスです。 CI/CDがあると、何がうれしいの? 今まで、テスト・デプロイなど手動でやっていたことを自動化することによって、 もっとアプリの開発に集中できたり、人的ミスを減らしたり、その分人的コストの軽減など...
恩恵はたくさんあります。 (山盛りコードが書けますね。) GCの他サービスGKEやCloud Runなどとの連携がしやすく、一元管理ができる なおかつ、GCサービス内部で完結できれば安全性も高くなったりなど... Cloud Buildならではの嬉しいこと
本日の主役Cloud Buildとは? 12 Cloud Buildってどうやって使うの? Cloud Buildは、大きく分けて ビルドトリガー と Cloud
Build構成ファイル という主に2つのモノを作成します。 ビルドトリガー Cloud Build構成ファイル (cloudbuild.yaml)
本日の主役Cloud Buildとは? 13 ビルドトリガーとは? 何かの監視対象に対してアクションをトリガーするものです。 例えば、mainブランチにコミットされたら、トリガーを引く、という部分になります。 Source Repositories以外にも、GitHubやBitbucketなどもトリガーにできます。 コミットなど、 変化を加える
ビルドトリガーが気づく cloudbuild.yamlを 元にテスト・デプロイな どしてくれる ビルドトリガー Cloud Build周辺の流れ
本日の主役Cloud Buildとは? 14 Cloud Build構成ファイルとは? ビルドトリガーが引かれた後に、どんなテストをするのか、どのコンテナを使用するのか、 ビルドの設定など、詳細について記載したファイルです。 yamlとjsonで作成できます。 コミットなど、 変化を加える
ビルドトリガーが気づく cloudbuild.yamlを 元にテスト・デプロイな どしてくれる Cloud Build構成ファイル Cloud Build周辺の流れ
15 実際に作ってみましょう!
まずは、全体の流れ 16 1. FastAPIとDockerfile準備する 2. Source Repositoriesを作成&プッシュ 3. Artifact Registryのリポジトリを作る
4. Cloud Buildでトリガーを作る 5. Cloud Runにデプロイされていることを確認してみる ここを作成します
使用するサービスのかるい説明 17 Source Repositoriesとは? ソースコードを保管しておくサービスです。 GitHubのリポジトリとミラーリングなどもできます。 Artifact Registryとは? コンテナのイメージを保管しておくサービスです。 ちなみに、Container
Registryというサービスとややこしくなりがちですが、 現在は、Artifact Registryの使用が推奨されています。 言わずと知れた、サーバレスでコンテナを動かすサービスです。 柔軟なオートスケーリングなど魅力が盛りだくさん、かつ、活発にプレビュー版機能が追加されていて まさに、Google Cloudの推しサービス?ですよね。 Cloud Runとは?
使用するサービスのかるい説明 18 FastAPIとは? PythonのAPIフレームワークです。 他のフレームワークより高速、OpenAPIがデフォルトで組み込まれているので、 リファレンスも自動で生成できたり、など... とても便利かつ簡単に使用できるフレームワーク。 UberやNetflixなども使用しているようです。 FastAPI日本語公式サイト https://fastapi.tiangolo.com/ja/
1.FastAPIとDockerfile準備する 19 1. FastAPIとDockerfile準備する 2. Source Repositoriesを作成&プッシュ 3. Artifact Registryのリポジトリを作る
4. Cloud Buildでトリガーを作る 5. Cloud Runにデプロイされていることを確認してみる ここを準備します
1.FastAPIとDockerfile準備する前の情報 20 ディレクトリ構成 使用言語とバージョン情報 • Python (ver.3.10) • FastAPI (ver.0.85)
1-1.FastAPIのプロジェクトなど作る 21 1.FastAPIをインストールする 3.main.pyの中身を作成する 2.プロジェクトディレクトリなど諸々作成する
1-2.Dockerfile作る 22 1.Dockerfileを作成する 2.Dockerfileの中身を作成する
2.Source Repositoriesを作成&プッシュ 23 1. FastAPIとDockerfile準備する 2. Source Repositoriesを作成&プッシュ 3. Artifact
Registryのリポジトリを作る 4. Cloud Buildでトリガーを作る 5. Cloud Runにデプロイされていることを確認してみる ここを作成します
2-1.Source Repositoriesを作成 24 1.リポジトリを追加 2.新しいリポジトリを作成を選択 3.リポジトリ名とプロジェクトIDなど入力する
2-2.Source Repositoriesにプッシュ 25 1.ローカルからリポジトリにプッシュする 書いてあるとおり、gitコマンドでプッシュする
2-2.Source Repositoriesにプッシュ 26 2.ブラウザを更新して、選択すると... 3.無事プッシュされています!
3.Artifact Registryのリポジトリを作る 27 1. FastAPIとDockerfile準備する 2. Source Repositoriesを作成&プッシュ 3. Artifact
Registryのリポジトリを作る 4. Cloud Buildでトリガーを作る 5. Cloud Runにデプロイされていることを確認してみる ここを作成します
3.Artifact Registryのリポジトリを作る 28 1.リポジトリを作成クリックする 2.リポジトリ名とリージョンなど設定する 3.作成されました!
4.Cloud Buildでトリガーを作る 29 1. FastAPIとDockerfile準備する 2. Source Repositoriesを作成&プッシュ 3. Artifact
Registryのリポジトリを作る 4. Cloud Buildでトリガーを作る 5. Cloud Runにデプロイされていることを確認してみる ここを作成します
4-1.cloudbuild.yamlを作成する 30 前提として Cloud Buildは、ステップというタスクを実行していく構造になっています。 ステップごとに、コンテナを作成→タスクを実行→コンテナを破壊 しています。 そのため、次のステップで使用したいデータなどがある場合は注意が必要です。 (/workspaceに書き込むと後続で使用できるようになります。) 詳しくはこちらをご覧ください。
https://cloud.google.com/build/docs/configuring-builds/pass-data-between-steps Cloud Build構成ファイル (cloudbuild.yaml)
4-1.cloudbuild.yamlを作成する 31 cloudbuild.yamlファイルの構造は? 前述のテストやビルドなどの指示をするのが、stepsプロパティです。必須項目です。 他によく使うプロパティは、images, substitutions, availableSecrets 辺りが多いかと思います。 必須!
4-1.cloudbuild.yamlを作成する 32 stepsプロパティはこんな感じになっています ステップ1 ステップ2 ステップ3 name部分で、使用するコンテナを指定します。 あらかじめGC側でイメージを色々用意してくれていますが、自作のイメージをArtifact Registryから使用 することもできます。
4-1.cloudbuild.yamlを作成する 33 imagesプロパティとは? ビルドしたイメージをArtifact Registry(or Container Registry)に保存することができます。 ただし、処理の流れとして、stepsが終わった後にimagesでイメージが保存されるので、 トリガーを分割せず、後続のステップで、 直接Artifact
Registryのイメージを使用する場合は注意が必要です。 ここでCloud Runにデプロイ しているステップがあるので ... steps内で、Artifact Registryに pushするコマンドが必須になり ます。
4-1.cloudbuild.yamlを作成する 34 substitutionsプロパティとは? 環境変数などを指定できます。 設定側は、_から始まるように指定します。使用側は、$_から指定します。 ただし、シークレット情報は、availableSecretsプロパティに指定してください。 availableSecretsプロパティとは? シークレット情報を使用するためのものです。 Secret Managerにシークレット情報を保存して、Cloud
Buildから取得します。 他にも色々プロパティがあるので詳しくはこちらをご覧ください。 https://cloud.google.com/build/docs/build-config-file-schema
4-1.cloudbuild.yamlを作成する 35 ということで、今回使うcloudbuild.yaml ルートディレクトリの直下にcloudbuild.yamlを作成し、Source Repositoriesにプッシュします。
4-2.ビルドトリガーを作る 36 1.トリガーを作成クリックする 3.ソースは先ほど作成した Source Repositoriesのリポジトリを選択 4.cloudbuild.yamlのロケーションは ルートディレクトリの直下を指定 2.トリガー名、リージョン、イベントを設定する
4-2.ビルドトリガーを作る 37 5.作成をクリック 6.無事作成されました!
5.Cloud Runにデプロイされていることを確認してみる 38 1. FastAPIとDockerfile準備する 2. Source Repositoriesを作成&プッシュ 3. Artifact
Registryのリポジトリを作る 4. Cloud Buildでトリガーを作る 5. Cloud Runにデプロイされていることを確認してみる ここを確認します
39 1.適当な変更をプッシュするか、 トリガー一覧画面から手動で実行してみる 3.ビルドトリガーは無事完了したので Cloud Runのエンドポイントにアクセスしてみる 2.トリガーが実行されダッシュボードに表示されます 5.Cloud Runにデプロイされていることを確認してみる
40 4.無事Cloud Runに、Hello Worldされました! 5.Cloud Runにデプロイされていることを確認してみる
41 Cloud Buildを実務で使ってみて、 とくに困った・気づいたこと
Cloud Buildを使ってみて、とくに困った・気づいたこと 42 • Slack通知を飛ばしたい時 • Source Repositoriesとの併用の注意点 • 別プロジェクトにデプロイするには
Slack通知を飛ばしたい時 43 やりたいこと テストやビルドが走った時に、失敗したのか、成功したのか... 通知を受け取りたい! そわそわ、終わったかな〜とGCコンソールで、ブラウザ更新する機械になりたくないですよね...? ビルド、マダカナ...
Slack通知を飛ばしたい時 44 結論 Cloud Buildには通知機能はデフォルトで組み込まれていません。 ただし、GC側で通知用コンテナを用意してくれてます。 通知用コンテナの公式GitHub https://github.com/GoogleCloudPlatform/cloud-build-notifiers/tree/master/slack
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
Slack通知を飛ばしたい時 46 毎回作成するのは大変なので、Terraformにしておくのがオススメです ※以下参考まで Cloud Storage 通知用のyamlファイルのバケット作成など
Slack通知を飛ばしたい時 47 Cloud Run 通知用コンテナのデプロイなど Pub/Sub トピック・サブスクリプションなど
Source Repositoriesとの併用の注意点 48 やりたいこと develop, staging, productionなどそれぞれの環境に切り分けたい イメージとしては、こう考えてました
Source Repositoriesとの併用の注意点 49 結論 自動化する場合、Source RepositoriesとCloud Buildは切り離せません。 なぜなら • GCコンソールでCloud
Buildトリガー作成時に、同じプロジェクトのSource Repositoriesしか表示さ れません。 • CLIでトリガー作成した場合、手動でのみトリガーできるため、コミットしても自動でトリガーされ ません。(トリガー作成は、gcloud alphaを使用します)
GCコンソールでの、Source Repositories選択のようす 50 my-testレポジトリを 別プロジェクトでトリガーしたいのに... どんなに権限を与えても表示されない...
CLIで作成した、手動トリガーの挙動のようす 51 1.CLIでトリガー作成する 3.手動でトリガーした場合のみビルドできる 2.上手く接続できていても、 このようにエラーが出ている... 4.なんとかビルドはできている
Source Repositoriesとの併用の注意点 52 公式からのお言葉 https://cloud.google.com/build/docs/automating-builds/create-manage-triggers とあるので、そもそもプロジェクトを切り離す作りでは無いようです。 ※今回はあくまでも、検証のために無理矢理CLIで切り離したので、個人的にもおすすめはしません。
ということで、CI/CDアーキテクチャ案 53 環境ごとにデプロイするならCDをCloud Deploy構築しても良さそうです。※ただしCloud Runはプレビュー版
別プロジェクトにデプロイするには 54 結論 --projectフラグで指定できます。 Google公式ドキュメントより引用 https://cloud.google.com/sdk/gcloud/reference/run/deploy ページの隅にあるので、見落とさないようご注意ください...
55 まとめ
まとめ 56 まとめ&感想 実際に作成してみていかがだったでしょうか? GCのサービスは、開発エンジニアでも簡単にデプロイできて便利かつ楽しいですよね。 また、今回メインの方のCI/CD部分は、Terraformにしていないので、Terraformで作成してみても理解が 深まって面白かもしれません、ね? 他にも、どんどんCloud Buildの新しい機能を追加されていますので ワクワクしながら、公式リファレンスを見ていただければいいのではないかと思います。
まとめ 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/
58 ご視聴ありがとうございました!