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
Ueda Naoaki
November 16, 2023
Technology
3
830
Podmanで実現する手軽なCI/CD環境
リポジトリ
https://github.com/na0x2c6/connpass-231116-container-in-container
Ueda Naoaki
November 16, 2023
Tweet
Share
More Decks by Ueda Naoaki
See All by Ueda Naoaki
2022-02-26開催 - merge / rebase 勉強会
na0x2c6
1
220
Other Decks in Technology
See All in Technology
今日からはじめるプラットフォームエンジニアリング
jacopen
8
1.9k
OPENLOGI Company Profile
hr01
0
63k
生成AIのユースケースをとにかく集めてまるっと学ぶ!/ all about generative ai usecases
gakumura
3
360
Асинхронная коммуникация в Go: от понятного к душному. Дима Некрасов, Otello, 2ГИС
lamodatech
0
1.5k
Winning at PHP in Production in 2025
beberlei
1
270
GraphQLを活用したリアーキテクチャに対応するSLI/Oの再設計
coconala_engineer
0
190
テストって楽しい!開発を加速させるテストの魅力 / Testing is Fun! The Fascinating of Testing to Accelerate Development
aiandrox
0
160
Goの組織でバックエンドTypeScriptを採用してどうだったか / How was adopting backend TypeScript in a Golang company
kaminashi
12
9k
PagerDuty×ポストモーテムで築く障害対応文化/Building a culture of incident response with PagerDuty and postmortems
aeonpeople
3
530
AndroidアプリエンジニアもMCPを触ろう
kgmyshin
2
560
AIと共に乗り越える、 入社後2ヶ月の苦労と学習の軌跡
sai_kaneko
0
190
更新系と状態
uhyo
8
2.2k
Featured
See All Featured
Designing Experiences People Love
moore
142
24k
Building Better People: How to give real-time feedback that sticks.
wjessup
367
19k
Measuring & Analyzing Core Web Vitals
bluesmoon
7
410
Embracing the Ebb and Flow
colly
85
4.7k
The Pragmatic Product Professional
lauravandoore
33
6.6k
Keith and Marios Guide to Fast Websites
keithpitt
411
22k
Documentation Writing (for coders)
carmenintech
69
4.7k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
119
51k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
507
140k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
34
2.2k
Speed Design
sergeychernyshev
29
920
Reflections from 52 weeks, 52 projects
jeffersonlam
349
20k
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