$30 off During Our Annual Pro Sale. View Details »
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.4k
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
92
君はPostScriptなウィンドウシステム 「NeWS」をご存知か?/sunnews
koyhoge
0
940
全日本PHPカンファレンス2024スタンプラリーについて/stamprally-php2024
koyhoge
0
180
日本PHPカンファレンス2024スタンプラリーとその実装/phpcon-stamprally
koyhoge
1
1.8k
日本の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.6k
CloudFormation と FaaS のはざま - Kubernetes の設計思想を探る -/cf-faas-k8s
koyhoge
0
1.5k
Other Decks in Programming
See All in Programming
ZJIT: The Ruby 4 JIT Compiler / Ruby Release 30th Anniversary Party
k0kubun
1
270
Vibe codingでおすすめの言語と開発手法
uyuki234
0
120
バックエンドエンジニアによる Amebaブログ K8s 基盤への CronJobの導入・運用経験
sunabig
0
170
AIコーディングエージェント(skywork)
kondai24
0
200
Rubyで鍛える仕組み化プロヂュース力
muryoimpl
0
160
AtCoder Conference 2025「LLM時代のAHC」
imjk
2
580
AI 駆動開発ライフサイクル(AI-DLC):ソフトウェアエンジニアリングの再構築 / AI-DLC Introduction
kanamasa
11
3.8k
gunshi
kazupon
1
120
クラウドに依存しないS3を使った開発術
simesaba80
0
160
ゆくKotlin くるRust
exoego
1
160
0→1 フロントエンド開発 Tips🚀 #レバテックMeetup
bengo4com
0
370
脳の「省エネモード」をデバッグする ~System 1(直感)と System 2(論理)の切り替え~
panda728
PRO
0
120
Featured
See All Featured
From Legacy to Launchpad: Building Startup-Ready Communities
dugsong
0
110
Reflections from 52 weeks, 52 projects
jeffersonlam
355
21k
Optimizing for Happiness
mojombo
379
70k
AI Search: Where Are We & What Can We Do About It?
aleyda
0
6.7k
Fashionably flexible responsive web design (full day workshop)
malarkey
407
66k
A Tale of Four Properties
chriscoyier
162
23k
What's in a price? How to price your products and services
michaelherold
246
13k
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
400
Build your cross-platform service in a week with App Engine
jlugia
234
18k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
231
22k
AI Search: Implications for SEO and How to Move Forward - #ShenzhenSEOConference
aleyda
1
1k
Testing 201, or: Great Expectations
jmmastey
46
7.8k
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ج൫ͱͯ͠ͷඪ४ʹͳΓͭͭ͋Δ ·ͱΊ