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
110
頼れる Agentic AI を支える Datadog のオブザーバビリティ / Powering Reliable Agentic AI with Datadog Observability
aoto
PRO
0
440
作りっぱなしで終わらせない! 価値を出し続ける AI エージェントのための「信頼性」設計 / Designing Reliability for AI Agents that Deliver Continuous Value
aoto
PRO
2
430
Google に学ぶ、安全性を高める信頼性設計 / Reliability Design for Enhanced Safety: Lessons from Google SRE
aoto
PRO
0
96
AI エージェントで AI エージェントを作る!Google Cloudが実現するフルスタックな AI 開発エコシステム / Building AI Agents with AI Agents! Full-Stack AI Development Ecosystem on Google Cloud
aoto
PRO
0
400
Jagu'e'r Advent Calendar でコミュニティを盛り上げよう / Join us the community with Jagu'e'r Advent Calendar
aoto
PRO
0
82
現場の壁を乗り越えて、 「計装注入」が拓く オブザーバビリティ / Beyond the Field Barriers: Instrumentation Injection and the Future of Observability
aoto
PRO
1
1.6k
「最速」で Gemini CLI を使いこなそう! 〜Cloud Shell/Cloud Run の活用〜 / The Fastest Way to Master the Gemini CLI — with Cloud Shell and Cloud Run
aoto
PRO
1
460
開発者を支える Internal Developer Portal のイマとコレカラ / To-day and To-morrow of Internal Developer Portals: Supporting Developers
aoto
PRO
1
1.2k
Other Decks in Technology
See All in Technology
ループエンジニアリングでE2Eテストを実践
noriyukitakei
0
250
cccccc
moznion
0
1.7k
そのハーネス、本当に境界になっていますか? AIエージェント時代の実行環境設計【MEGU-Meet #4】
cscengineer
PRO
0
100
Baseline対応のDOMの型定義を作った
uhyo
2
660
Oracle Exadata Database Service on Cloud@Customer X11M (ExaDB-C@C) サービス概要
oracle4engineer
PRO
2
8.3k
5分でわかる Amazon Connect_20260608
hwangbyeonghun
0
180
金融の未来を考える / Thinking About the Future of Finance
ks91
PRO
0
150
End-to-Endで考える信頼性 —LINEアプリにおけるクライアント開発×SRE連携の実践
maruloop
0
110
AIエージェントとPhysical AIが拓く製造業の変革(ハノーバーメッセリキャップ)
iotcomjpadmin
0
210
依頼文化をやめる日 EM視点で語るPlatform EngineeringとInclusive SRE / Discussing Platform Engineering and Inclusive SRE from an EM's Perspective
shin1988
1
250
Multi-Agent並列開発を 安全に回すための技術 / Technology for Safely Multi-Agent Parallel Development
tooppoo
0
250
Terraform 101 (初心者向け) 資料
shuadachi
0
170
Featured
See All Featured
Exploring anti-patterns in Rails
aemeredith
3
430
Docker and Python
trallard
47
3.9k
Highjacked: Video Game Concept Design
rkendrick25
PRO
1
400
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
220
How Software Deployment tools have changed in the past 20 years
geshan
0
34k
4 Signs Your Business is Dying
shpigford
187
22k
Designing for Timeless Needs
cassininazir
1
270
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
62
55k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8.2k
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
0
170
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
380
Heart Work Chapter 1 - Part 1
lfama
PRO
8
36k
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