Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Podmanで実現する手軽なCI/CD環境
Search
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
410
Other Decks in Technology
See All in Technology
[EMNLP26] RIGEL: Self-Distilled Score Adaptation for Image and Video Captioning Evaluation
keio_smilab
PRO
0
120
Conditional PED-ANOVA: Hyperparameter Importance in Hierarchical & Dynamic Search Spaces
pfn
PRO
0
150
その Valkey 使いこなしていますか?
onk
PRO
5
1.9k
シンプルな設定ファイルで実現する AWS IAM Identity Center の ユーザー管理Terraformフレームワークを公開しました / Simplifying AWS IAM Identity Center User Management: An Open-Source Terraform Framework
yamaguchitk333
0
230
Rustuna: Rustによる高速なOptuna実装
pfn
PRO
0
220
Kiro Crewで「みのるん式」仕事術やってみた
minorun365
PRO
3
1k
ストレスなくAIと付き合いたい!こんなときどうしてる?
namiki64
4
670
初海外で注意すべきこと12選!!!安全快適なre:invent生活にするために
yuuuuuuu168
1
200
Metadata - Section 2: Simple Metadata & Meta Tags
mohab1
0
120
AI駆動開発における開発環境のセキュリティの考え方
yamahiro
2
450
Introduction to Microsoft for Startups
satakeyusuke19920527
0
100
AI × アーキテクト 第1・2章|生成AIの課題とアーキテクトの素養
daidaidai
1
230
Featured
See All Featured
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
1.4k
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
720
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
Skip the Path - Find Your Career Trail
mkilby
1
260
End of SEO as We Know It (SMX Advanced Version)
ipullrank
3
4.4k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.9k
Fashionably flexible responsive web design (full day workshop)
malarkey
409
67k
Build your cross-platform service in a week with App Engine
jlugia
234
19k
Building AI with AI
inesmontani
PRO
1
1.3k
Joys of Absence: A Defence of Solitary Play
codingconduct
1
550
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
2
740
Dominate Local Search Results - an insider guide to GBP, reviews, and Local SEO
greggifford
PRO
0
380
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