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
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
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
580
Google に学ぶ、安全性を高める信頼性設計 / Reliability Design for Enhanced Safety: Lessons from Google SRE
aoto
0
150
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
AI Agent 時代のデータ基盤: ClickHouse で実現する 超高速分析とコスト削減の両立
jozono
0
220
内製アプリとClaudeスキルのセキュリティチェック、 Backlogの課題で回しています。
ayaka_egaaa
0
160
ライフワーク「猫でもわかるDirectConnect」
kentapapa
0
300
分析作業をどこまで任せるか自分で決められる AIネイティブBI『Golden Analytics』が 良さげな話 /golden-analytics-is-ai-native-bi
shinyaa31
0
130
The future of architectural work
ufried
0
190
AWS基盤改善を支える 私たちの理念と行動指針
kentosuzuki
0
140
詳解 never 型 - ボトム型の性質を深掘り
nealle
0
160
MCPでAIが自分で調べに行く
cdataj
0
130
2026 Apache Flink Community Checkpoint
rmetzger
0
210
ゼロから作るWebアプリの新定番!?Amplify Gen 2 × AWS Blocksで実現する「開発速度とRDBの柔軟性のいいとこ取り」
amixedcolor
1
190
「AIチャットからもできないの?」と言われたら ~業務アプリをMCP対応するときの認証・認可の勘所
oidfj
0
260
業務でAWSをあまり使っていない私が、AWSへのモチベを保つ方法
smt7174
0
180
Featured
See All Featured
Being A Developer After 40
akosma
PRO
92
590k
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
820
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
630
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
1
520
Context Engineering - Making Every Token Count
addyosmani
9
1.3k
Building AI with AI
inesmontani
PRO
1
1.4k
Fireside Chat
paigeccino
43
4.1k
Building an army of robots
kneath
307
47k
AI Search: Implications for SEO and How to Move Forward - #ShenzhenSEOConference
aleyda
1
1.4k
The Language of Interfaces
destraynor
162
27k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
3.1k
The Limits of Empathy - UXLibs8
cassininazir
2
770
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