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
3
1.1k
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
300
Other Decks in Technology
See All in Technology
バニラVisaギフトカードを棄てるのは結構大変
meow_noisy
0
130
『誰の責任?』で揉めるのをやめて、エラーバジェットで判断するようにした ~感情論をデータで終わらせる、PMとエンジニアの意思決定プロセス~
coconala_engineer
0
1.7k
俺の失敗を乗り越えろ!メーカーの開発現場での失敗談と乗り越え方 ~ゆるゆるチームリーダー編~
spiddle
0
300
2026年のAIエージェント構築はどうなる?
minorun365
10
2.3k
歴史に敬意を! パラシュートVPoEが組織と共同で立ち上がる信頼醸成オンボーディング
go0517go
PRO
0
200
今、求められるデータエンジニア
waiwai2111
2
1.4k
Agent Payments Protocolで実装するAIエージェント間取引
tokio007
0
160
器用貧乏が強みになるまで ~「なんでもやる」が導いたエンジニアとしての現在地~
kakehashi
PRO
5
530
マイグレーションガイドに書いてないRiverpod 3移行話
taiju59
0
110
20260222ねこIoTLT ねこIoTLTをふりかえる
poropinai1966
0
200
EMから現場に戻って見えた2026年の開発者視点
sudoakiy
1
420
プロダクト開発の品質を守るAIコードレビュー:事例に見る導入ポイント
moongift
PRO
1
410
Featured
See All Featured
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
81
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
1
140
Making Projects Easy
brettharned
120
6.6k
The Cult of Friendly URLs
andyhume
79
6.8k
Typedesign – Prime Four
hannesfritz
42
3k
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
59
How to train your dragon (web standard)
notwaldorf
97
6.5k
Paper Plane (Part 1)
katiecoart
PRO
0
4.9k
Accessibility Awareness
sabderemane
0
68
WCS-LA-2024
lcolladotor
0
470
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
370
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
22k
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