Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Dive Deep in Cloud Run: Automatic Base Image up...
Search
Kento Kimura
August 30, 2024
Technology
1.2k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Dive Deep in Cloud Run: Automatic Base Image update
Kento Kimura
August 30, 2024
More Decks by Kento Kimura
See All by Kento Kimura
オブザーバビリティを高める AI エージェント体験を考える / Designing AI Agent Experiences That Enhance Observability
aoto
2
390
Compose Spec の変遷と Cloud Run のイマ / The History of Compose Spec and Cloud Run Support
aoto
0
190
頼れる Agentic AI を支える Datadog のオブザーバビリティ / Powering Reliable Agentic AI with Datadog Observability
aoto
0
660
作りっぱなしで終わらせない! 価値を出し続ける AI エージェントのための「信頼性」設計 / Designing Reliability for AI Agents that Deliver Continuous Value
aoto
2
570
Google に学ぶ、安全性を高める信頼性設計 / Reliability Design for Enhanced Safety: Lessons from Google SRE
aoto
0
140
AI エージェントで AI エージェントを作る!Google Cloudが実現するフルスタックな AI 開発エコシステム / Building AI Agents with AI Agents! Full-Stack AI Development Ecosystem on Google Cloud
aoto
0
510
Jagu'e'r Advent Calendar でコミュニティを盛り上げよう / Join us the community with Jagu'e'r Advent Calendar
aoto
0
120
現場の壁を乗り越えて、 「計装注入」が拓く オブザーバビリティ / Beyond the Field Barriers: Instrumentation Injection and the Future of Observability
aoto
1
1.8k
「最速」で Gemini CLI を使いこなそう! 〜Cloud Shell/Cloud Run の活用〜 / The Fastest Way to Master the Gemini CLI — with Cloud Shell and Cloud Run
aoto
1
550
Other Decks in Technology
See All in Technology
GCASアップデート(202607-202610)
techniczna
1
220
AIエージェントの監視、思考を見るか行動を見るか / Monitoring AI Agents: Thoughts or Actions
yusukeshimizu
2
170
bpf_arenaとstruct_opsを使うのが難しかった話
masu_mi
0
210
AI時代のエンジニアの情報発信〜個人の発信を組織の力に変える〜
ryo_kawamata
1
7.4k
eBPF 簡介 2026 版
shunghsiyu
0
190
AI時代の組織作り:チーム開発から「個人×AI」への移行と、持続可能な「開発資本」の築き方
ham0215
2
320
Kiro Crew の Bot (続く役目を任せる窓口) | 目指せ Kiro マスター 12
inariku
PRO
2
300
`go get`したらELFが降ってきた件
taiyow
0
190
IBC 2026 動画技術関連レポート / IBC 2026 Report
cyberagentdevelopers
PRO
2
440
お客様の「やりたい」の先を見通す合意形成プロセス ~裏にある課題と不安を解きほぐすコツ~
yukakoseki
0
120
デザインレビューは自動化できるのか?─ Flutter × Figma で UI 品質保証を考える
techiro
2
820
プロダクションコードにおける encoding/json から encoding/json/v2 へのスムーズな移行
sansantech
PRO
1
140
Featured
See All Featured
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
20k
Marketing to machines
jonoalderson
1
6k
How to build a perfect <img>
jonoalderson
1
6.2k
エンジニアに許された特別な時間の終わり
watany
109
250k
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
480
For a Future-Friendly Web
brad_frost
184
11k
Tips & Tricks on How to Get Your First Job In Tech
honzajavorek
1
830
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
470
Building Adaptive Systems
keathley
44
3.3k
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
530
Darren the Foodie - Storyboard
khoart
PRO
4
4.1k
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
1
350
Transcript
Dive Deep in Cloud Run: Automatic Base Image Update 30th
Aug, Kento Kimura Jagu'e'r CloudNative #15『大人の夏休み自由研究ビアバッシュLT』
Self-Introduction • 所属:Technical Solutions / Sales Engineer • 担当:パブリッククラウドのアーキテクト知識を活かした Datadog
のプリセールス技術支援 • 資格:Google Cloud 全 11 資格、AWS 10 資格、Azure 12 資格 • 表彰:Google Cloud Partner Top Engineer 2023-24 Jagu'e'r Award 2023 優秀賞 木村 健人 (Kento Kimura) Datadog Japan GK Technical Solutions Sales Engineering History データセンター運用保守 → パブリッククラウド技術支援 → プリセールス技術支援 Community Jagu’e’r デジクラ人材育成分科会 運営リード O11y-SRE/CloudNative/TechWriters 分科会 運営メンバー Partner Top Engineer 2023 Partner Top Engineer 2024
4 What’s this
Automatic Base Image Update • Google Cloud Next ’24 で
Private Preview Cloud Run のソースコードデプロイ機能利用時に、ベースイメージを指定してのデプロイが可能 ベースイメージの更新時にデフォルトで自動更新、--clear-base-image で自動更新の無効化も可能 5 • 2024/8/21 に Public Preview コンテナデプロイでも実行イメージを FROM scratch とするマルチステージビルドの場合、 ビルドイメージのベースイメージを指定できるように! gcloud run deploy <SERVICE_NAME> \ --source \ --base-image=<REGISTORY_PATH> gcloud run deploy <SERVICE_NAME> \ --image=<IMAGE_NAME> \ --base-image=<BASE_IMAGE>
Automatic Base Image Update • Google Cloud Next ’24 で
Private Preview Cloud Run のソースコードデプロイ機能利用時に、ベースイメージを指定してのデプロイが可能 ベースイメージの更新時にデフォルトで自動更新、--clear-base-image で自動更新の無効化も可能 • 裏側では Buildpack, Cloud Build が使われている • 0 downtime, 0 rebuild • 48時間以内に脆弱性に対応するパッチを配布 6 • 2024/8/21 に Public Preview コンテナデプロイでも実行イメージを FROM scratch とするマルチステージビルドの場合、 ビルドイメージのベースイメージを指定できるように! • マルチステージビルド理解する必要… gcloud run deploy <SERVICE_NAME> \ --source \ --base-image=<REGISTORY_PATH> gcloud run deploy <SERVICE_NAME> \ --image=<IMAGE_NAME> \ --base-image=<BASE_IMAGE>
7 Dive Deep
8 Multi Stage Build マルチステージビルドのポイント マルチステージビルドで Dockerfile の可読性・ 保守性を向上し、軽量な実行イメージを作成できる •
Dockerfile の中で複数の FROM 命令文を利用 • 各 FROM 命令文で異なるベースを用いる • 実行ステージでは必要な成果物のみをコピー • 一般的にはビルドと実行でステージを分ける • AS[名前] で各ステージを命名できる • ビルド時に --target で特定ステージのみ指定 • BuildKit を利用すると依存ステージのみビルド • 外部イメージもステージとして利用可能 # syntax=docker/dockerfile:1 FROM golang:1.21 AS builder WORKDIR /src COPY <<EOF ./main.go package main import "fmt" func main() { fmt.Println("hello, world") } EOF RUN go build -o /bin/hello ./main.go FROM scratch COPY --from=builder /bin/hello /bin/hello CMD ["/bin/hello"] ◆ 引用 • docker.docs 『Multi-stage builds』 https://docs.docker.com/build/building/multi-stage/#use-a-previous-stage-as-a-new-stage
9 Multi Stage Build マルチステージビルドを簡単に説明 ビルドステージで作成されたイメージから 必要な成果物だけをコピーして、実行ステージで 最小限の製品イメージを作成する FROM scratch
では何も実行されず、Dockerfile に イメージに追加のレイヤーは作成されない 実行ステージで FROM scratch を利用してステージ を開始して FROM --from=ステージ名 で最初のレイ ヤーとして必要なものだけを持ってくる # おまじない FROM ビルドするためのイメージ AS 名前 WORKDIR /アプリを置く場所 COPY コードを持ってくる RUN コンパイルやビルドをする FROM 実行するためのイメージ AS 名前 COPY --from=ステージ名 成果物を持ってくる CMD ["エントリーポイント "] ビルドステージ 実行ステージ layer3 layer2 layer1 layer1 artifact build image scratch COPY
10 CloudNative Buildpacks(CNB) CNB はマルチステージビルドを前提としている Google Cloud も gcr.io/buildpacks/builder いう
Builder を提供していて、 Cloud Run, App Engine で利用されている! Stack Buildpack が使用するマルチステー ジビルドのコンテナイメージ • Build image アプリのビルドに使用する コンテナイメージ • Run image アプリの実行に使用する コンテナイメージ Builder 前述の Stack と Buildpack の集合の 組み合わせ Buildpack 特定構成のアプリに対する 複数のビルドプロセス • Detect ビルド対象アプリが Buildpack の 対象構成か判定するプロセス • Build 実際にコンテナイメージをビルドす るプロセス
11 CloudNative Buildpacks(CNB) Rebase pack rebase のはなし • アプリのイメージを検査することで、pack rebase
はアプリのベースイメージの 新しいバージョンが存在するかどうかを判断する • 存在すれば、rebase はアプリのレイヤメタデータを更新し、 新しいバージョンのベースイメージを参照する • めっちゃ便利 exec exec artifact artifact base-image new-base-image rebase
12 CloudNative Buildpacks(CNB) イメージ拡張(image extension) のはなし • ビルドイメージ・実行イメージのベースイメージを独立して拡張・入替できる • Dockerfile
で定義した内容を参照して、ベースイメージだけを入替する ◦ FROM scratch で作成した実行イメージはベースイメージなし ◦ アプリケーション実行に必要なランタイムなどが含まれたベースイメージを加える layer3 layer2 exec exec layer1 artifact artifact build image scratch base-image COPY rebase
13 Key takeaways
14 Matome • Cloud Run のベースイメージ自動更新機能は ソースコード・コンテナデプロイのどちらでもできる • Cloud Run
のコンテナイメージ作成は CloudNative Buildpack(CNB) が使われている • リビルドなしのイメージ更新は マルチステージビルドと CNB のおかげ(推測) • 続きはブログで…(鋭意執筆中)
Thank you