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
780
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
170
Other Decks in Technology
See All in Technology
室長と気ままに学ぶマイクロソフトのビジネスアプリケーションとビジネスプロセス
ryoheig0405
0
360
飲食店予約台帳を支えるインタラクティブ UI 設計と実装
siropaca
7
1.8k
関東Kaggler会LT: 人狼コンペとLLM量子化について
nejumi
3
580
組織貢献をするフリーランスエンジニアという生き方
n_takehata
1
1.3k
ホワイトボードチャレンジ 説明&実行資料
ichimichi
0
130
エンジニアの育成を支える爆速フィードバック文化
sansantech
PRO
3
1.1k
Developer Summit 2025 [14-D-1] Yuki Hattori
yuhattor
19
6.2k
白金鉱業Meetup Vol.17_あるデータサイエンティストのデータマネジメントとの向き合い方
brainpadpr
6
750
Helm , Kustomize に代わる !? 次世代 k8s パッケージマネージャー Glasskube 入門 / glasskube-entry
parupappa2929
0
250
転生CISOサバイバル・ガイド / CISO Career Transition Survival Guide
kanny
3
980
OpenID Connect for Identity Assurance の概要と翻訳版のご紹介 / 20250219-BizDay17-OIDC4IDA-Intro
oidfj
0
270
AndroidXR 開発ツールごとの できることできないこと
donabe3
0
130
Featured
See All Featured
Typedesign – Prime Four
hannesfritz
40
2.5k
Faster Mobile Websites
deanohume
306
31k
Building Your Own Lightsaber
phodgson
104
6.2k
GraphQLの誤解/rethinking-graphql
sonatard
68
10k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
46
2.3k
How to Ace a Technical Interview
jacobian
276
23k
Side Projects
sachag
452
42k
Fantastic passwords and where to find them - at NoRuKo
philnash
51
3k
The Cost Of JavaScript in 2023
addyosmani
47
7.3k
GitHub's CSS Performance
jonrohan
1030
460k
Navigating Team Friction
lara
183
15k
Build your cross-platform service in a week with App Engine
jlugia
229
18k
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