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
Dive Deep in Cloud Run: Automatic Base Image up...
Search
Kento Kimura
PRO
August 30, 2024
Technology
1.1k
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
PRO
August 30, 2024
More Decks by Kento Kimura
See All by Kento Kimura
Compose Spec の変遷と Cloud Run のイマ / The History of Compose Spec and Cloud Run Support
aoto
PRO
0
130
頼れる Agentic AI を支える Datadog のオブザーバビリティ / Powering Reliable Agentic AI with Datadog Observability
aoto
PRO
0
500
作りっぱなしで終わらせない! 価値を出し続ける AI エージェントのための「信頼性」設計 / Designing Reliability for AI Agents that Deliver Continuous Value
aoto
PRO
2
460
Google に学ぶ、安全性を高める信頼性設計 / Reliability Design for Enhanced Safety: Lessons from Google SRE
aoto
PRO
0
110
AI エージェントで AI エージェントを作る!Google Cloudが実現するフルスタックな AI 開発エコシステム / Building AI Agents with AI Agents! Full-Stack AI Development Ecosystem on Google Cloud
aoto
PRO
0
420
Jagu'e'r Advent Calendar でコミュニティを盛り上げよう / Join us the community with Jagu'e'r Advent Calendar
aoto
PRO
0
93
現場の壁を乗り越えて、 「計装注入」が拓く オブザーバビリティ / Beyond the Field Barriers: Instrumentation Injection and the Future of Observability
aoto
PRO
1
1.7k
「最速」で Gemini CLI を使いこなそう! 〜Cloud Shell/Cloud Run の活用〜 / The Fastest Way to Master the Gemini CLI — with Cloud Shell and Cloud Run
aoto
PRO
1
490
開発者を支える Internal Developer Portal のイマとコレカラ / To-day and To-morrow of Internal Developer Portals: Supporting Developers
aoto
PRO
1
1.3k
Other Decks in Technology
See All in Technology
tamachi.go 誕生の裏側
rymiyamoto
1
130
自宅NWにISR4331を導入してみた話
okaits
0
110
DDDのエッセンスを取り入れたAIでの開発
ak2ie
0
130
Software Supply Chain Attackからクラウド環境を守るためにできること
lhazy
2
280
2027年のMetricKit
kantacky
0
120
AIに狂うスタートアップが、あえて「人との協働」に全振りした新卒エンジニア研修 / New Graduate Engineer Training at a Startup Accelerating AI Adoption
ohnoeight
0
120
名刺メーカーDevグループ 紹介資料
sansan33
PRO
0
1.2k
【GCC2026】大規模言語モデルを活用した内製検索サービスの社内展開や業務活用
bandainamcostudios
PRO
0
310
My broken English still works: speaking at global OSS events
naruoga
0
120
FORENSIA: ローカルLLMフォレンジックハーネス
sumeshi
2
420
AI時代のアウトプット――変わったこと、変わらないこと / Devsumi 2026 Kansai #devsumi
jnchito
0
150
【AG-UI × A2UI × MCP Apps】Generative UIをやさしく解説する
nrinetcom
PRO
1
150
Featured
See All Featured
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
210
From Legacy to Launchpad: Building Startup-Ready Communities
dugsong
0
300
My Coaching Mixtape
mlcsv
0
250
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
2
640
Google's AI Overviews - The New Search
badams
0
1.1k
Odyssey Design
rkendrick25
PRO
2
770
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
780
A designer walks into a library…
pauljervisheath
211
24k
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
390
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
1
350
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
120
120k
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