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
Podmanで実現する手軽なCI/CD環境
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Ueda Naoaki
November 16, 2023
Technology
1.2k
3
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Podmanで実現する手軽なCI/CD環境
リポジトリ
https://github.com/na0x2c6/connpass-231116-container-in-container
Ueda Naoaki
November 16, 2023
More Decks by Ueda Naoaki
See All by Ueda Naoaki
2022-02-26開催 - merge / rebase 勉強会
na0x2c6
1
380
Other Decks in Technology
See All in Technology
モバイルアプリ開発概論2026
recruitengineers
PRO
3
500
AI時代の強いチームの作り方
yuukiyo
25
16k
今こそ聞きたいソフトウェア設計 ドメイン駆動設計再入門
masuda220
PRO
17
6.8k
変化の早いClaude Codeを 書籍に落とし込む
oikon48
7
1.3k
AIコーディングの次。コードレビューと理解負荷を解消して組織の開発生産性を高める
moongift
PRO
2
2.3k
Forza Horizon 6 のテレメトリ機能で 自動運転に使えそうな学習データを集める話
henjin0
0
150
認知負荷をGemini で溶かす — GKE 基盤「Orbit」における AI エージェントの実践
sansantech
PRO
1
270
20260801_スクフェス大阪
kgnkhkr
2
1.2k
Flutterをカメラで動かしたかった話
sony
1
130
研究開発部の紹介 / Sansan R&D Profile
sansan33
PRO
4
24k
OSPN.JPバージョンアップ作業進捗のご報告 / 20260801-osc26kyoto
akkiesoft
0
420
ガバメント AI 源内を地方自治体は活用できるのか可能性と課題、期待について
takeda_h
1
360
Featured
See All Featured
Building Flexible Design Systems
yeseniaperezcruz
330
40k
How to Ace a Technical Interview
jacobian
281
24k
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.3k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.8k
Become a Pro
speakerdeck
PRO
31
6.2k
How Software Deployment tools have changed in the past 20 years
geshan
1
34k
Product Roadmaps are Hard
iamctodd
55
12k
The untapped power of vector embeddings
frankvandijk
2
1.8k
So, you think you're a good person
axbom
PRO
2
2.1k
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
400
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
66
57k
Evolving SEO for Evolving Search Engines
ryanjones
0
250
Transcript
Podman で実現する手軽な CI/CD 環境 Ueda Naoaki
自己紹介 - SocialDog, Inc - Podman歴2年 上田直諒 Ueda Naoaki /
na0x2c6 https://twitter.com/na0x2c6 https://socialdog.jp/
自己紹介 - SocialDog, Inc - Podman歴2年 - OpenShift運用歴 - Kubernetes運用歴
上田直諒 Ueda Naoaki / na0x2c6 https://twitter.com/na0x2c6 https://socialdog.jp/
自己紹介 - SocialDog, Inc - Podman歴2年 - OpenShift運用歴0年 - Kubernetes運用歴0年
上田直諒 Ueda Naoaki / na0x2c6 https://twitter.com/na0x2c6 https://socialdog.jp/
自己紹介 - SocialDog, Inc - Podman歴2年 - OpenShift運用歴0年 - Kubernetes運用歴0年
- Podman愛だけで来ました 上田直諒 Ueda Naoaki / na0x2c6 https://twitter.com/na0x2c6 https://socialdog.jp/
PodmanでCI/CDを運用したゆえに助かった話をします
※Podman初めての方向けの内容を含みます
どういう話か - JenkinsコンテナをPodmanで運用していた - もともと静的ファイルのデプロイに使っていた - 途中で依存系のインストールやビルドをしたくなった
出発点:静的ファイルをデプロイするためだけの
- TypeScriptをビルドしたい 出発点:静的ファイルをデプロイするためだけの
- TypeScriptをビルドしたい 出発点:静的ファイルをデプロイするためだけの
出発点:静的ファイルをデプロイするためだけの - TypeScriptをビルドしたい - 必要な環境が増える度にイメージに含める?
出発点:静的ファイルをデプロイするためだけの - TypeScriptをビルドしたい - 必要な環境が増える度にイメージに含める? - 💡コンテナでビルドしよう
Podman in Container 参考:How to use Podman inside of a
container | Enable Sysadmin
Podman in Container 参考:How to use Podman inside of a
container | Enable Sysadmin
Podman in Container 参考:How to use Podman inside of a
container | Enable Sysadmin
Podman in Container 参考:How to use Podman inside of a
container | Enable Sysadmin Podman実行環境を用意
やりたかったこと 参考:How to use Podman inside of a container |
Enable Sysadmin
やりたかったこと 参考:How to use Podman inside of a container |
Enable Sysadmin npm ci npm run build
やりたかったこと 参考:How to use Podman inside of a container |
Enable Sysadmin npm ci npm run build Jenkinsイメージにビルド環境を用意する必要がある
やりたかったこと 参考:How to use Podman inside of a container |
Enable Sysadmin npm ci npm run build Jenkinsイメージにビルド環境を用意する必要がある Podman実行環境があれば…
やりたかったこと 参考:How to use Podman inside of a container |
Enable Sysadmin npm ci npm run build Jenkinsイメージにビルド環境を用意する必要がある podman run --rm -v "$PWD:$PWD" -w "$PWD" -- docker.io/node:lts npm ci podman run --rm -v "$PWD:$PWD" -w "$PWD" -- docker.io/node:lts npm build Podman実行環境があれば… コンテナでビルドすればよい
Makefileの工夫 よく見る書き方
Makefileの工夫 custom.mk で上書き可能に
Makefileの工夫 custom.mk
Makefileの工夫 Jenkinsで使う custom.mk.deployでコミット
Makefileの工夫 Podmanでビルド🎉
だがしかし
だがしかし:責務を詰め込みすぎ?
だがしかし:責務を詰め込みすぎ? Jenkinsのためのコンテナ? Podmanのためのコンテナ? Container
だがしかし:責務を詰め込みすぎ? Jenkinsのためのコンテナ? Podmanのためのコンテナ? Container
Container Container JenkinsコンテナからPodmanエンジンコンテナを利用する 別コンテナにする
別コンテナにしたい:準備
別コンテナにしたい:準備 コンテナエンジンホストを指定 ※同一pod内で実行するためローカルホスト tcp://127.0.0.1:2375
dockerクライアントも利用可能 tcp://127.0.0.1:2375
Podmanはコンテナエンジンサービスとして待機可能 tcp://127.0.0.1:2375 で待機しているよ〜
Podmanはコンテナエンジンサービスとして待機可能 tcp://127.0.0.1:2375 で待機しているよ〜 OCI準拠のコンテナエンジンサービス OCI: Open Container Initiative コンテナフォーマットとランタイムに関するオープンな業界標準を作成するこ とを目的としたオープンなガバナンス機構
Open Container Initiative - Open Container Initiative
OCI準拠のコンテナエンジンサービス OCI: Open Container Initiative コンテナフォーマットとランタイムに関するオープンな業界標準を作成するこ とを目的としたオープンなガバナンス機構 Open Container Initiative
- Open Container Initiative 別コンテナにしたい tcp://127.0.0.1:2375 で待機しているよ〜 Container Container
OCI準拠のコンテナエンジンサービス 別コンテナにしたい:Podmanエンジン in Podman tcp://127.0.0.1:2375 で待機しているよ〜 OCI: Open Container Initiative
コンテナフォーマットとランタイムに関するオープンな業界標準を作成するこ とを目的としたオープンなガバナンス機構 Open Container Initiative - Open Container Initiative Container Container
OCI準拠のコンテナエンジンサービス 別コンテナにしたい:Podmanエンジン in Podman tcp://127.0.0.1:2375 で待機しているよ〜 OCI: Open Container Initiative
コンテナフォーマットとランタイムに関するオープンな業界標準を作成するこ とを目的としたオープンなガバナンス機構 Open Container Initiative - Open Container Initiative Container Container
Kubernetes YAML定義のサンプル
Kubernetes YAML定義のサンプル /var/jenkins_home Podmanコンテナのビルド生成物を Jenkinsで利用可能に
PodmanはKubernetes YAMLを実行できる Pod
Quadlet: systemd を kubelet の代わりに 引用:podman-systemd.unit — Podman documentation
Quadlet: systemd を kubelet の代わりに 引用:podman-systemd.unit — Podman documentation Podmanをインストールすると
systemd-generator に登録される
Quadlet: systemd を kubelet の代わりに 引用:podman-systemd.unit — Podman documentation 例:test.kube
というファイルで ~/.config/containers/systemd/ に配置
Quadlet: systemd を kubelet の代わりに 引用:podman-systemd.unit — Podman documentation Quadletがsystemd
unitに変換してくれる 例:test.kube というファイルで ~/.config/containers/systemd/ に配置
Quadlet: systemd を kubelet の代わりに 引用:podman-systemd.unit — Podman documentation Quadletがsystemd
unitに変換してくれる 例:test.kube というファイルで ~/.config/containers/systemd/ に配置 Podmanなら k8s YAMLで手軽な環境構築も可能
Quadlet: systemd を kubelet の代わりに 引用:podman-systemd.unit — Podman documentation Quadletがsystemd
unitに変換してくれる 例:test.kube というファイルで ~/.config/containers/systemd/ に配置 Podmanなら k8s YAMLで手軽な環境構築も可能 ※もちろんコンテナ単体のサービス化も可能 ホストネットワークを tailscaleネットワークに参加させる例。 コンテナイメージの自動更新も可能。
スライドの環境を再現するcompose.yaml Pod Container https://github.com/na0x2c6/connpass-231116-container-in-container
tcp://127.0.0.1:2375 そういえば:podman は docker compose も実行できる
PodmanにはDesktopアプリがある Podman Desktop - Containers and Kubernetes
Pod Container https://github.com/na0x2c6/connpass-231116-container-in-container スライドの環境を再現するcompose.yaml
Pod Container https://github.com/na0x2c6/connpass-231116-container-in-container Let’s try Podman!!! スライドの環境を再現するcompose.yaml