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
Skaffoldを使ってKubernetes してみた/skaffold_k8s
Search
KOYAMA Tetsuji
June 16, 2018
Programming
2
1.3k
Skaffoldを使ってKubernetes してみた/skaffold_k8s
PHPカンファレンス福岡2018での発表に用いた資料です。
KOYAMA Tetsuji
June 16, 2018
Tweet
Share
More Decks by KOYAMA Tetsuji
See All by KOYAMA Tetsuji
PIE (PHP Installer for Extensions) をみんなで試そう/piseka-pie
koyhoge
0
79
君はPostScriptなウィンドウシステム 「NeWS」をご存知か?/sunnews
koyhoge
0
900
全日本PHPカンファレンス2024スタンプラリーについて/stamprally-php2024
koyhoge
0
170
日本PHPカンファレンス2024スタンプラリーとその実装/phpcon-stamprally
koyhoge
1
1.7k
日本のPHPカンファレンスの歩みと、その辺もろもろ/phpcon_japan_history
koyhoge
0
300
Inside SWOOLE: 非同期処理はどのようにして動くのか/inside_swoole
koyhoge
0
19k
映画を年300本観る技術/watch_300_movies_in_a_year
koyhoge
0
1.3k
Swooleで実装するPHP非同期処理の世界/phpcondo2019-swoole
koyhoge
3
5.5k
CloudFormation と FaaS のはざま - Kubernetes の設計思想を探る -/cf-faas-k8s
koyhoge
0
1.5k
Other Decks in Programming
See All in Programming
実践Claude Code:20の失敗から学ぶAIペアプログラミング
takedatakashi
16
6.5k
O Que É e Como Funciona o PHP-FPM?
marcelgsantos
0
130
SwiftDataを使って10万件のデータを読み書きする
akidon0000
0
230
Domain-centric? Why Hexagonal, Onion, and Clean Architecture Are Answers to the Wrong Question
olivergierke
3
940
When Dependencies Fail: Building Antifragile Applications in a Fragile World
selcukusta
0
110
Webサーバーサイド言語としてのRustについて
kouyuume
0
3.5k
その面倒な作業、「Dart」にやらせませんか? Flutter開発者のための業務効率化
yordgenome03
1
140
monorepo の Go テストをはやくした〜い!~最小の依存解決への道のり~ / faster-testing-of-monorepos
convto
2
520
Pythonに漸進的に型をつける
nealle
1
100
Google Opalで使える37のライブラリ
mickey_kubo
3
130
PHPに関数型の魂を宿す〜PHP 8.5 で実現する堅牢なコードとは〜 #phpcon_hiroshima / phpcon-hiroshima-2025
shogogg
1
320
Claude CodeによるAI駆動開発の実践 〜そこから見えてきたこれからのプログラミング〜
iriikeita
0
320
Featured
See All Featured
Music & Morning Musume
bryan
46
6.9k
A designer walks into a library…
pauljervisheath
209
24k
Typedesign – Prime Four
hannesfritz
42
2.8k
Optimizing for Happiness
mojombo
379
70k
A Tale of Four Properties
chriscoyier
161
23k
How to Ace a Technical Interview
jacobian
280
24k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
Rebuilding a faster, lazier Slack
samanthasiow
84
9.2k
How STYLIGHT went responsive
nonsquared
100
5.8k
Navigating Team Friction
lara
190
15k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
5.7k
Rails Girls Zürich Keynote
gr2m
95
14k
Transcript
PHPΧϯϑΝϨϯεԬ2018 2018-06-16 4LB⒎PMEΛͬͯ ,VCFSOFUFTͯ͠Έͨ খࢁࢤ !LPZIPHF
ࣗݾհ খࢁࢤ ͜·ͯͭ͡ ߹ಉձࣾ΄ٕ͛ݚ Ϣʔβձ͍͔ͭ͘ ຊ6/*9Ϣʔβձ ຊ1PTUHSF42-Ϣʔβձ ຊ1)1Ϣʔβձ SBLVNPגࣜձࣾΤϯδχΞ
!LPZIPHF LPZIPHF
w (4VJUF (NBJM (PPHMFΧϨϯμʔͳͲ ʹػೳՃ͠ ͯൢച w ಋೖ ࣾҎ্ w
IUUQTSBLVNPDPN w ࡢ(PPHMF$MPVE1MBUGPSN ($1 ͷύʔτφʔʹ
ࠓճͷ༰ w ,VCFSOFUFTͷྺ࢙ w ,VCFSOFUFTͷಛ w 4LB⒎PMEͷಛ w 4LB⒎PMEͷ͍ํ
,VCFSOFUFT w IUUQTLVCFSOFUFTJP w LTͱུ͞ΕΔ w ಡΈʮ͘ʔͶͯ͌͢ʯ w %PDLFS͚ΦʔέετϨʔγϣϯπʔϧ
ࠓճͷ༰ w ,VCFSOFUFTͷྺ࢙ w ,VCFSOFUFTͷಛ w 4LB⒎PMEͷಛ w 4LB⒎PMEͷ͍ํ
LTIJTUPSZ w (PPHMFͷࣾπʔϧͱͯ͠։ൃ։࢝ w (PPHMFͷ#PSH͔Βڧ͍ӨڹΛड͚ͨ1SPKFDU4FWFO w 4FWFO4UBS5SFL7PZBHFSͷ4FWFOPG/JOF͔Β w ϩΰͷຊεϙʔΫͷͷ༝དྷ w
ʹWϦϦʔε w ͦͷޙ$/$'ʹҠ #Z4PVSDF 81/'$$ 'BJSVTF IUUQTFOXJLJQFEJBPSHXJOEFYQIQ DVSJE
LT%PDLFS w %PDLFS$PO&6 w LTͷ%PDLFSͱ౷߹Λൃද w ࣄ্࣮ͷඪ४ΦʔέετϨʔγϣϯπʔϧʹ w ͦͷޙΫϥυք۾͕૽͕͘͠ͳΔ
w (PPHMF$POUBJOFS&OHJOF w ($1ͷ%PDLFSίϯςφӡ༻ϚωʔδυαʔϏε w ུশ(,& ($&$PNQVUF&OHJOFʹΘΕ͍ͯ ͨ w
(PPHMF,VCFSOFUFT&OHJOF (,& ʹվ໊ LTPO($1
w "[VSF$POUBJOFS4FSWJDF "$4 w ࠷ॳ"QBDIF.FTPTϕʔε w ෳͷΦʔέετϨʔγϣϯπʔϧΛαϙʔτ w "[VSF$POUBJOFS4FSWJDF
",4 w ,VCFSOFUFTϕʔε w "[VSF,VCFSOFUFT4FSWJDF ",4 ʹվ໊ LTPO"[VSF
w &MBTUJD$POUBJOFS4FSWJDFGPS,VSCFSOFUFT &,4 w &$4ͱ͍͏ಠࣗϚωʔδυαʔϏεΛ͢Ͱʹ͍ͬͯ ͨ w LTඪ४ͷྲྀΕΛड͚ͯαʔϏεՃ
LTPO"84
ࠓճͷ༰ w ,VCFSOFUFTͷྺ࢙ w ,VCFSOFUFTͷಛ w 4LB⒎PMEͷಛ w 4LB⒎PMEͷ͍ํ
w ʮγεςϜΛߏ͢ΔϓϥοτϑΥʔϜϛυϧΣΞɺ αʔϏεɺΞϓϦέʔγϣϯɺཧπʔϧͳͲͷઃఆ ཧΛࣗతʹ࿈ܞͤ͞Δ͜ͱɻʯ ;%/FU+BQBOΩʔϫʔυղઆΑΓ w ΦʔέετϨʔγϣϯͱͳʹ͔
w ༷ʑͳׂͷίϯςφΛΈ߹ΘͤͯαʔϏεΛ࡞Δͱ ͖ͷɺӡ༻ͷෳࡶੑΛղܾ͢Δ w (PPHMF͕#PSHΛӡ༻͖ͯͨ͠ͱ͖ͷݟ͕٧·ͬͯ ͍Δ LTԿΛղܾ͢Δͷ͔
w Πϛϡʔλϒϧ w એݴతઃఆ w ΦϯϥΠϯͰࣗݾճ෮͢Δ LTͷઃܭίϯηϓτ
w *NNVUBCJMJUZ w Ұ࡞ͨ͠Βมߋ͞Εͳ͍ w ඞཁʹԠͯ͡ಉ͡༰ͷίϯςφΛ͍ͭ͘ىಈͰ͖Δ Πϛϡʔλϒϧ
w ʮԿΛ͢Δ͔ʯͰͳ͘ʮͲ͏͋Δ͖͔ʯΛهड़͢Δ w ࠷ऴతͳ·͍͠ঢ়ଶΛॻ͘ એݴతઃఆ
w ·͍͠ঢ়ଶ͍ͬͯΔ w ܧଓతʹࢹ͠ɺ·͍͠ঢ়ଶʹͳ͍ͬͯͳ͔ͬͨΒͦΕ ʹҰக͢ΔΑ͏ʹಈ͖ଓ͚Δ ࣗݾճ෮͢Δ
apiVersion: v1 kind: Pod metadata: name: nginx spec: containers: -
name: nginx image: nginx:1.7.9 ports: - containerPort: 80 nginx-pod.yml
w Ϋϥελ w 1PE w 4FSWJDF w 3FQMJDB4FU w %BFNPO4FU
w +PC w %FQMPZNFOU w $POpH.BQ LTߏཁૉ
w Ϋϥελ w 1PE w 4FSWJDF w 3FQMJDB4FU w %BFNPO4FU
w +PC w %FQMPZNFOU w $POpH.BQ LTߏཁૉ
w LTڥΛߏ͢ΔϚγϯ܈ w %PDLFS͕ಈ͚ཧཧͲͪΒͰྑ͍ w ΫϥυαʔϏεͰཧը໘ͰϙνΔ͚ͩ Ϋϥελ
w ϫʔΫϩʔυ ίϯςφ ͕ಈ࡞͢Δཧϊʔυ w ෳͷϫʔΫϩʔυ͕ಈ࡞͢Δ߹͋Δ w ಉҰ1PEͷ߹ɺϑΝΠϧγεςϜͰίϯςφಉ࢜ ͕ΓऔΓ͢Δ͜ͱՄೳ 1PE
w ໊લղܾ w ෦Ͱ%/4͕ಈ͍͍ͯΔ w ֎෦ͷΤϯυϙΠϯτ࡞ 4FSWJDF
w αʔϏεҰࣜΛஔ͢ΔΈ w ࢮ׆ࢹ w ߏมߋɾΦʔτεέʔϧ w %PDLFSΠϝʔδͷߋ৽ w Ξοϓσʔτઓུ
%FQMPZNFOU
w LTཧίϚϯυ w جຊ͜ͷίϚϯυ͔Βͯ͢Λߦ͏ LVCFDUM
w IPHFZNMʹαʔϏεͷͯ͢Λॻ͘ํࣜ w ͍ͨΜγϯϓϧ w :".-Ͱ͔͗͢ σϓϩΠ $ kubectl apply
-f hoge.yml
ࠓճͷ༰ w ,VCFSOFUFTͷྺ࢙ w ,VCFSOFUFTͷಛ w 4LB⒎PMEͷಛ w 4LB⒎PMEͷ͍ํ
w IUUQTHJUIVCDPN(PPHMF$POUBJOFS5PPMT TLB⒎PME w ϫʔΫϑϩʔͷࣗಈԽπʔϧ w ·ͩΞϧϑΝ൛Ͱ࣮ݧతͳҐஔ͚ͮ w ࠷৽൛ʹϦϦʔε͞Εͨ 4LB⒎PME
w .BUU3JDLBSE͞Μ w IUUQTHJUIVCDPNSE w ($1ΤϯδχΞ w NJOJLVCFʹؔΘ͍ͬͯΔ ࡞ͬͨͷ͜ͷਓ
w ίϯςφϕʔε։ൃͷ$* w %PDLFSΠϝʔδͷ࡞ɺϨδετϦͷొɺσϓϩΠ ͷͦΕͧΕΛࣗಈԽ ԿΛղܾ͢Δͷ
None
w ։ൃ࣌ w ϏϧυϩʔΧϧͷEPDLFSCVJME w ొͳ͠ w σϓϩΠNJOJLVCFʹLVCFDUM w ຊ൪࣌
($1ͷ߹ w Ϗϧυ(PPHMF$POUBJOFS#VJMEFSʹ͛Δ w ొ(PPHMF$POUBJOFS3FHJTUSZʹొ͢Δ w σϓϩΠ(,&ʹLVCFDUM ྆ऀͷҧ͍
w ΠϝʔδSFQPͷλάΛࣗಈͰଧͬͯ͘ΕΔɻ w ։ൃ࣌ϑΝΠϧΛࢹͯ͠ɺมߋ͕͋ͬͨΒࣗಈͰσϓ ϩΠ·Ͱͬͯ͘ΕΔ ·ͩ͋Δศརػೳ
w #B[FM w IUUQTCB[FMCVJME w )FMN w IUUQTIFMNTI w LBOJLP
w IUUQTHJUIVCDPN(PPHMF$POUBJOFS5PPMTLBOJLP w LVTUPNJ[F w IUUQTHJUIVCDPNLVCFSOFUFTTJHTLVTUPNJ[F w ෳΠϝʔδͷରԠ NJDSPTFSWJDF ֤छπʔϧରԠ
ࠓճͷ༰ w ,VCFSOFUFTͷྺ࢙ w ,VCFSOFUFTͷಛ w 4LB⒎PMEͷಛ w 4LB⒎PMEͷ͍ํ
w TLB⒎PMEίϚϯυͷΠϯετʔϧ w ඞཁͳΒ LVCFDUM NJOJLVCFͷΠϯετʔϧ w ຊ൪σϓϩΠڥͷ༻ҙ ྫ(,& ͰͬͯΈΑ͏
w TLB⒎PMEHP w ֤ϓϥοτϑΥʔϜ༻όΠφϦΛ͍ͬͯΔͷͰࣗͰ Ϗϧυ͢Δඞཁͳ͍ w .BDͳΒ TLB⒎PMEίϚϯυ curl -Lo
skaffold https://storage.googleapis.com/skaffold/ releases/latest/skaffold-darwin-amd64 && chmod +x skaffold && sudo mv skaffold /usr/local/bin
w NBJOHPΛίϯύΠϧ࣮ߦ͢Δ͚ͩͷαϯϓϧ FYBNQMFTHFUUJOHTUBSUFE
NBJOHP package main import ( "fmt" "time" ) func main()
{ for { fmt.Println("Hello world!") time.Sleep(time.Second * 1) } }
%PDLFSpMF FROM golang:1.10.1-alpine3.7 as builder COPY main.go . RUN go
build -o /app main.go FROM alpine:3.7 CMD ["./app"] COPY --from=builder /app .
TLB⒎PMEZNM apiVersion: skaffold/v1alpha2 kind: Config build: artifacts: - imageName: gcr.io/myproj-koyhoge/skaffold-gcb
deploy: kubectl: manifests: - k8s-* profiles: - name: gcb build: googleCloudBuild: projectId: myproj-koyhoge
LTQPEZNM apiVersion: v1 kind: Pod metadata: name: getting-started spec: containers:
- name: getting-started image: gcr.io/myproj-koyhoge/skaffold-gcb
TLB⒎PMEEFW Ϗϧυ ొ σϓϩΠ
w ϑΝΠϧอଘͱಉ࣌ʹҰ࿈ͷ࡞ۀ͕࠶ͼߦΘΕΔ ͦͷ··ϑΝΠϧมߋ fmt.Println("Hello world!") Λ fmt.Println("Hello phpconfuk!")
w Ҏ্ɺऴྃ ຊ൪σϓϩΠ $ skaffold run
w ඪ४తͳ$*$%ͱόοςΟϯά͠ͳ͍ w ͱ͋Εͯ͢ΛίϯςφͰ·͔ͳ͏ࢼΈ໘ന͍ w ͜͜ͰഓΘΕ͍ͯΔݟɺผͷ$*$%ͷΈͰ׆ ͔ͤΔͩΖ͏ ࢼͯ͠ͷײ
w LTࠓͱͯΞπ͍ w TLB⒎PMEΛ͡Ίɺ͞·͟·ͳपลπʔϧ͕։ൃ͞Εɺ ৽͍͠ࢼΈ͕ߦΘΕ͍ͯΔ w αʔϏεͷ044ج൫ͱͯ͠ͷඪ४ʹͳΓͭͭ͋Δ ·ͱΊ