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
DockerとKubernetesでアプリケーション開発にコンテナをフル活用!
Search
stormcat24
November 08, 2018
Programming
0
330
DockerとKubernetesでアプリケーション開発にコンテナをフル活用!
11/7開催:DockerとKubernetesでアプリケーション開発にコンテナをフル活用!
http://www.itstaffing.jp/engineer/entry/20181022_2_1
stormcat24
November 08, 2018
Tweet
Share
More Decks by stormcat24
See All by stormcat24
素早く賢く失敗するDeveloper Productivityの実現を目指して
stormcat24
4
4.9k
KubernetesのマニフェストをそれなりにCIしたい
stormcat24
4
1.4k
令和時代のSaaS開発
stormcat24
1
280
History in 5 years of CircleCI and CyberAgent
stormcat24
3
860
Kubernetes Handson Osaka
stormcat24
5
580
Kubernetes Handson
stormcat24
5
4.3k
Base Image Journey 2018
stormcat24
29
140k
kotlin-fest
stormcat24
13
18k
Kotlin/Native
stormcat24
0
1k
Other Decks in Programming
See All in Programming
単体テストの始め方/作り方
toms74209200
0
360
Enterprise Web App. Development (2): Version Control Tool Training Ver. 5.1
knakagawa
1
110
"使いづらい" をリバースエンジニアリングする UI の読み解き方
rebase_engineering
0
130
ワンバイナリWebサービスのススメ
mackee
10
7.6k
Perlで痩せる
yuukis
1
670
#QiitaBash TDDでAIに設計イメージを伝える
ryosukedtomita
2
1.7k
GoのWebAssembly活用パターン紹介
syumai
2
970
Effect の双対、Coeffect
yukikurage
4
560
Perplexity Slack Botを作ってAI活用を進めた話 / AI Engineering Summit プレイベント
n3xem
0
460
Efficiency and Rock 'n’ Roll (Really!)
hollycummins
0
670
漸進。
ssssota
0
1.6k
事業戦略を理解してソフトウェアを設計する
masuda220
PRO
18
5.5k
Featured
See All Featured
The Illustrated Children's Guide to Kubernetes
chrisshort
48
50k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
Product Roadmaps are Hard
iamctodd
PRO
53
11k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
What’s in a name? Adding method to the madness
productmarketing
PRO
22
3.5k
Adopting Sorbet at Scale
ufuk
77
9.4k
Stop Working from a Prison Cell
hatefulcrawdad
269
20k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
233
17k
Optimising Largest Contentful Paint
csswizardry
37
3.3k
Producing Creativity
orderedlist
PRO
346
40k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
130
19k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
30
2.4k
Transcript
%PDLFSͱ,VCFSOFUFTͰ ΞϓϦέʔγϣϯ։ൃʹ ίϯςφΛϑϧ׆༻ʂɹ "LJOPSJ:BNBEB!TUPSNDBU
1SPGJMF ‣ "LJOPSJ:BNBEB ‣ $ZCFS"HFOU *OD ‣ '3&4)-*7&UFDIMFBE ‣ IUUQTCMPHTUPSNDBUJP
stormcat24
%PDLFS,VCFSOFUFT ࣮ફίϯςφ։ൃೖ ʢٕज़ධࣾʣ
ίϯςφࣝθϩ͔ΒͰɺ ຊ൪ڥͰίϯςφΛ͑Δ·Ͱʹ ҰؾʹεΩϧҾ্͖͛ΔຊͰ͢
)FBEMJOF ‣ %PDLFSͱʁίϯςφͱʁ ‣ %PDLFSΛମݧ͢Δ ‣ %PDLFSϑϨϯυϦͳΠϝʔδΛͭ͘Δ ‣ ίϯςφΦʔέετϨʔγϣϯͱʁ ‣
,VCFSOFUFTͰͷ࣮ફతͳΞϓϦέʔγϣϯ։ൃ ‣ ύϒϦοΫΫϥυͰͷίϯςφӡ༻ ‣ ίϯςφͷӡ༻Λࢧ͑Δπʔϧ
%PDLFSͱʁ ίϯςφͱʁ
%PDLFSίϯςφʹͲͷΑ͏ͳ ҹΛ͍࣋ͬͯ·͔͢ʁ
%PDLFSʁίϯςφʁ Ծڥʁ Πϯϑϥ ٕज़ʁ ܰྔʁ ͍ॴʁ ։ൃڥ ͚ʁ
%PDLFSͱ ‣ ίϯςφܕԾٕज़Λ࣮ݱ͢ΔͨΊͷৗறΞϓϦέʔγϣϯͱ ίϚϯυϥΠϯπʔϧ͔ΒΔϓϩμΫτ ‣ Πϯϑϥٕज़ͱ͍͏ΑΓɺΞϓϦέʔγϣϯͷσϓϩΠʹಛ Խٕͨ͠ज़ ‣ ɺ4PMPNPO)ZLFT͕044ͱͯ͠ެ։ ‣
Ҏޙɺ%PDLFSࣾίϛϡχςΟΛத৺ʹ༷ʑͳπʔϧΤίγ εςϜ͕։ൃɺίϯςφٕज़ͷΦʔϓϯԽ͕ਐΊΒΕ͍ͯΔ
දతͳԾԽٕज़ ϗετ04ܕ ԾԽٕज़ ίϯςφܕ ԾԽٕज़
ԾԽٕज़ͷҧ͍
ϗετܕԾԽٕज़ͷಛ ‣ ϗετܕԾԽͰɺԾԽιϑτΣΞΛར༻͠ɺϋʔυΣ ΞΛ$16ԋࢉʹΑͬͯ࠶ݱ͠ɺήετ04Λ࡞Γग़͢ ‣ Ծ04ͷ࠶ݱ͕ߴ͍ɺىಈॲཧͷΦʔόʔϔου͕େ͖ ͘ͳΔ ‣ 7.XBSF1MBZFS 0SBDMF7JSUVBM#PY
ίϯςφܕԾԽٕज़ͷಛ ‣ ϗετܕͱҧ͍ɺίϯςφϗετ04ͷΧʔωϧϦιʔεΛ ڞ༗ͯ͠ར༻ ‣ ιϑτΣΞແ͠Ͱɺ04ͷϦιʔεΛཧతʹԾ04ʢίϯς φʣͱִͯ͢͠Δ ‣ ίϯςφܕͰɺԾ0404ͷશͯͷػೳΛ࠶ݱ͢ΔΘ͚Ͱ ͳ͍ͨΊɺͦͷϗετܕΑΓΦʔόʔϔου͕খ͍͞
‣ %PDLFSҎલ-9$ -JOVY$POUBJOFST ͕༗໊
%PDLFSͷԾԽΞʔΩςΫνϟͷมભ
%PDLFSΛԿʹ͏ʁ
%PDLFSΞϓϦέʔγϣϯͷ σϓϩΠʹಛԽٕͨ͠ज़
ΞϓϦέʔγϣϯͷσϓϩΠʹಛԽͨ͠ಛ ‣ ϗετʹࠨӈ͞Εͳ͍࣮ߦڥɺڥࠩҟ͔Βͷ٫ ‣ %PDLFSGJMFͰͷίϯςφߏɾΞϓϦέʔγϣϯஔఆٛ ‣ Πϝʔδͷόʔδϣϯཧ ‣ ࠩϏϧυ͕ՄೳͳϨΠϠʔߏΛ࣋ͭΠϝʔδϑΥʔϚοτ ‣
%PDLFSϨδετϦʢΠϝʔδͷอαʔόʣ ‣ ϓϩάϥϚϒϧͳ֤छ"1* ˞-9$ܰྔ͕ͩɺ͜ͷ؍͕͚͍ܽͯΔ
༏ΕͨϙʔλϏϦςΟ MPDBM EFWFMPQNFOU TUBHJOH QSPEVDUJPO %PDLFS͕Πϯετʔϧ͞Ε͍ͯΕɺ ಉ͡Πϝʔδ͔Β࡞ΒΕΔίϯςφΛଞͷϗετͰ༰қʹ࣮ߦͰ͖Δ
ϙʔλϏϦςΟ͕ͨΒͨ͠ͷ ‣ ίϯςφʹΑͬͯɺήετ04ͱΞϓϦέʔγϣϯΛηοτͰΠ ϝʔδͱͯ͠ύοέʔδϯάͰ͖Δ ‣ %PDLFSίϯςφʹΑΔڥͷ࠶ݱੑ ‣ ΠϯϑϥͷଘࡏΛʢ͋·ΓʣؾʹͤͣʹσϓϩΠͰ͖Δ %PDLFSΛϑϧ׆༻ͨ͠։ൃͷྲྀߦ
%PDLFSΛମݧ͢Δ
ڥߏங
ϩʔΧϧͰͷ%PDLFSڥߏங ‣ %PDLFS%FTLUPQ ‣ IUUQTXXXEPDLFSDPNQSPEVDUTEPDLFSEFTLUPQ
ϩʔΧϧͰͷ%PDLFSڥߏங
ϩʔΧϧͰͷ%PDLFSڥߏங EPDLFSWFSTJPO $MJFOU 7FSTJPODF "1*WFSTJPO (PWFSTJPOHP (JUDPNNJU⒎B #VJMU8FE+VM 04"SDIEBSXJOBNE &YQFSJNFOUBMGBMTF
4FSWFS &OHJOF 7FSTJPODF "1*WFSTJPO NJOJNVNWFSTJPO (PWFSTJPOHP (JUDPNNJU⒎B #VJMU8FE+VM 04"SDIMJOVYBNE
%PDLFSΠϝʔδΛऔಘ͠ɺ %PDLFSίϯςφΛ࣮ߦ͢Δ
Πϝʔδͱίϯςφͷҧ͍ ‣ %PDLFSΠϝʔδ ‣ %PDLFSίϯςφΛߏ͢ΔϑΝΠϧγεςϜɺ࣮ߦ͢ΔΞ ϓϦέʔγϣϯઃఆΛ·ͱΊͨͷ ‣ ίϯςφΛ࡞͢ΔͨΊʹར༻͞ΕΔςϯϓϨʔτͱͳΔ ‣ %PDLFSίϯςφ
‣ %PDLFSΠϝʔδΛجʹ࡞͞Εɺ۩ݱԽ͞ΕͨϑΝΠϧγε ςϜͱΞϓϦέʔγϣϯ͕࣮ߦ͞Ε͍ͯΔঢ়ଶ
Πϝʔδͱίϯςφͷҧ͍
FDIPίϯςφΛ࣮ߦ͢Δ ‣ HJIZPEPDLFSFDIPMBUFTUͱ͍͏Πϝʔδ͔ΒίϯςφΛ࣮ߦ ‣ ͜ͷΠϝʔδ%PDLFS)VCʹอ࣋͞Ε͍ͯΔ ‣ (&5ϦΫΤετΛ͛Δͱʮ)FMMP%PDLFSʯΛฦ͢ Demo-1
FDIPίϯςφΛ࣮ߦ͢Δ Demo-1 %PDLFSΠϝʔδͷμϯϩʔυ EPDLFSJNBHFQVMMHJIZPEPDLFSFDIPMBUFTU %PDLFSίϯςφͷ࣮ߦ EPDLFSDPOUBJOFSSVOJUQHJIZPEPDLFSFDIPMBUFTU ϗετOS echoίϯςφ Port 8080
Port 9000 ϙʔτϑΥϫʔυ HTTP GET
FDIPίϯςφΛ࣮ߦ͢Δ Demo-1 ϑΥΞάϥϯυͰͷ࣮ߦ EPDLFSDPOUBJOFSSVOJUQHJIZPEPDLFSFDIPMBUFTU TUBSUTFSWFS SFDFJWFESFRVFTU όοΫάϥϯυͰͷ࣮ߦ EPDLFSDPOUBJOFSSVOEQHJIZPEPDLFSFDIPMBUFTU GEGGBBFCEʜ "1*8FCΞϓϦέʔγϣϯͰɺόοΫάϥϯυͰ࣮ߦ͢Δ
%PDLFSΠϝʔδΛϏϧυ͢Δ
%PDLFSGJMF ‣ '30.ϕʔεͱ͢ΔΠϝʔδΛܾఆ͢Δ ‣ $01:ϗετ͔ΒίϯςφʹϑΝΠϧΛίϐʔ͢Δ ‣ 36/ίϯςφͰҙͷॲཧΛ࣮ߦ͢Δ ‣ $.%Πϝʔδ͔ΒίϯςφΛ࡞͢ΔࡍʹɺίϯςφͰ࣮ߦ ͢ΔϝΠϯϓϩηεΛઃఆ͢Δ
%PDLFSΠϝʔδΛϏϧυ͢Δ Demo-2 USFF ᵓᴷᴷ%PDLFSpMF ᵋᴷᴷIFMMPXPSME EJSFDUPSJFT pMFT IFMMPXPSMEεΫϦϓτΛίϯςφͰ࣮ߦ͢ΔͨΊͷΠϝʔδΛͭ͘Δ
%PDLFSΠϝʔδΛϏϧυ͢Δ Demo-2 '30.VCVOUV $01:IFMMPXPSMEVTSMPDBMCJO 36/DINPE YVTSMPDBMCJOIFMMPXPSME $.%<IFMMPXPSME>
%PDLFSΠϝʔδΛϏϧυ͢Δ Demo-2 IFMMPXPSMEMBUFTUͱ͍͏໊લͰΠϝʔδΛϏϧυ EPDLFSJNBHFCVJMEUIFMMPXPSMEMBUFTU 3FNPWJOHJOUFSNFEJBUFDPOUBJOFSDEBB DGBF 4VDDFTTGVMMZCVJMUDGBF 4VDDFTTGVMMZUBHHFEIFMMPXPSMEMBUFTU ࡞ͨ͠ΠϝʔδΛ֬ೝ
EPDLFSJNBHFMTcHSFQIFMMPXPSME IFMMPXPSMEMBUFTUDGBFNJOVUFTBHP.#
Πϝʔδ͔ΒίϯςφΛ࣮ߦ Demo-2 ࡞ͨ͠Πϝʔδ͔ΒίϯςφΛ࣮ߦ EPDLFSDPOUBJOFSSVOIFMMPXPSMEMBUFTU )FMMP 8PSME IFMMPXPSMEεΫϦϓτ͕ίϯςφͰ࣮ߦ εΫϦϓτ͕ऴྃ͢Δͱίϯςφऴྃ͢Δ
%PDLFSϑϨϯυϦͳ ΠϝʔδΛͭ͘Δ
˞͓͞Β͍ %PDLFS༏ΕͨϙʔλϏϦςΟΛ࣋ͭ
ίϯςφෳ͍͕͢͠ɾɾɾ EFWFMPQNFOU TUBHJOH QSPEVDUJPO ࣮ࡍʹΞϓϦέʔγϣϯͷڍಈ σϓϩΠ͢ΔڥʹΑ੍ͬͯޚ͢Δඞཁ͕͋Δ FHσʔλϕʔεͷଓઌ FHΞϓϦέʔγϣϯ͕ར༻͢Δ"1*ͷϗετ
ίϯςφͷڍಈΛઃఆͰ੍ޚ͢Δ
ઃఆΛίϯςφʹ͢ํ๏ ‣ ࣮ߦ࣌ͷҾ ‣ ઃఆ͕ଟ͍߹ɺऔΓճ͠ʹ͍͘ ‣ ΞϓϦέʔγϣϯͷڥผઃఆϑΝΠϧ ‣ EFWFMPQ TUBHJOH
QSPEVDUJPOผͷઃఆϑΝΠϧΛؚΊΔ ‣ ڥ͕૿͑Δ߹ɺΞϓϦέʔγϣϯʴΠϝʔδͷϏϧυ͕ඞཁ ‣ ڥม ‣ ࠷Ԧಓͷख๏
ڥม੍ޚͷྑ͞ ‣ ڥผઃఆϑΝΠϧͱҧ͍ɺڥՃͷ߹ʹઃఆϑΝΠϧΛ Ճͯ͠Ϗϧυ͢Δඞཁ͕ແ͍ ‣ ڥม୯ҐͰ੍ޚͰ͖ΔͷͰখճΓ͕ޮ͘ ‣ FH%#ͷίωΫγϣϯϓʔϧαΠζ͚ͩΛมߋ͢Δ ‣ τϥΠΞϯυΤϥʔͷ͢͠͞
ڥมΛ׆༻͢Δ %PDLFSϑϨϯυϦͳ Πϝʔδ࡞ʹܨ͕Δ
FH4QSJOHͷQSPQFSUJFTϑΝΠϧ ECESJWFS$MBTT\%#@%3*7&3@$-"44DPNNZTRMKECD%SJWFS^ ECKECD6SM\%#@+%#$@63-^ ECVTFS\%#@64&3^ ECQBTTXPSE\%#@1"44803%^ ECJOJUJBM4J[F\%#@*/*5*"-@4*;&^ ECNBY"DUJWF\%#@."9@"$5*7&^ ECNBY*EMF\%#@."9@*%-&^ ECNJO*EMF\%#@.*/@*%-&^ ΞϓϦέʔγϣϯڥมΛऔΕΔ࡞Γʹ͢Δ͜ͱ͕ॏཁʂ
ίϯςφΦʔέετϨʔγϣϯ ͱʁ
ίϯςφͰγεςϜΛߏங͢Δ ଟ͘ͷίϯςφΛσϓϩΠͰ͖Δ ଟ͘ͷ%PDLFSϗετ͕ඞཁ
ίϯςφͷஔ͍͠ ‣ ͲͷछྨͷίϯςφΛͲͷΑ͏ʹஔ͢Δ͔ʁ ‣ ϗετͷϚγϯϦιʔεΛޮతʹ͏ஔͲ͏ͳΔ͔ʁ ‣ ίϯςφͷΞΫηεܦ࿏ΛͲ͏ܾΊΔ͔ʁ ‣ εέʔϧΞτΠϯΛͲͷΑ͏ʹߦ͏͔ʁ %PDLFS)PTU
%PDLFS)PTU %PDLFS)PTU %PDLFS)PTU # & " % # & $ % & " $ %
ਓ͕ؒߟ͑Δ͜ͱ͡Όͳ͍
ෳͷϗετΛލ͗ ෳछͷίϯςφΛໃ६ͷແ͍ܗͰ αʔόϦιʔεΛߟྀ͠ޮతʹஔ͢Δ ίϯςφΦʔέετϨʔγϣϯٕज़
දతͳίϯςφΦʔέετϨʔγϣϯٕज़ ‣ %PDLFS$PNQPTF ‣ %PDLFS4XBSN4UBDL ‣ ,VCFSOFUFT ‣ "QBDIF.FTPT ‣
"NB[PO&$$POUBJOFS4FSWJDFT &$4
σϑΝΫτελϯμʔυ ,VCFSOFUFT
,VCFSOFUFTͰͷ ࣮ફతͳΞϓϦέʔγϣϯ։ൃ
,VCFSOFUFTͱʁ ‣ ΫόωςΟεɺΫʔϕϧωΟςΟεͱಡΉ ‣ ུশLVCFLT ‣ (PPHMFࣾͷίϯςφج൫͔Βੜ ‣ 044ͷίϯςφΦʔέετϨʔγϣϯγεςϜ ‣
༷ʑͳϓϥοτϑΥʔϜʹରԠͰߴػೳ ‣ ίϯςφͷஔɺϧʔςΟϯάͷܾఆΛ͍͍ײ͡ʹͬͯ ͘ΕΔ
ϩʔΧϧڥߏங %PDLFS%FTLUPQͷ,VCFSOFUFT౷߹Λ༗ޮʹ͢Δ
LVCFDUM ‣ ,VCFSOFUFTΫϥελͷϦιʔεΛૢ࡞ɾӾཡ͢ΔͨΊͷίϚϯ υϥΠϯπʔϧ ‣ %PDLFS%FTLUPQͷ,VCFSOFUFT౷߹Λ༗ޮʹ͢ΔͱɺࣗಈͰΠ ϯετʔϧ͞ΕΔ
,VCFSOFUFTͷϦιʔε
Ϧιʔεͱʁ ‣ ,VCFSOFUFTʹ͓͍ͯɺΞϓϦέʔγϣϯͷσϓϩΠΛ࣮ݱ͢Δ ͨΊʹඞཁͳ෦ͷΑ͏ͳͷ ‣ ࣮ߦ͞ΕΔΞϓϦέʔγϣϯ༷ʑͳϦιʔεͱڠௐ͢Δ͜ͱ ͰɺγεςϜͱͯ͠ಈ࡞͢Δ
%FQMPZNFOU /BNFTQBDF 4FSWJDF *OHSFTT $POGJH.BQ %BFNPO4FU 4UBUFGVM4FU +PC 1PE 3FQMJDB4FU
+PC $SPO+PC ,VCFSOFUFTͷϦιʔεͨͪ
%FQMPZNFOU /BNFTQBDF 4FSWJDF *OHSFTT $POGJH.BQ %BFNPO4FU 4UBUFGVM4FU +PC 1PE 3FQMJDB4FU
+PC $SPO+PC ,VCFSOFUFTͷϦιʔεͨͪ ࠓ͜ͷͭΛհ͠·͢
1PE
1PE ‣ ίϯςφͷू߹ମͷ୯ҐͰɺগͳ͘ͱͭͷίϯςφΛ࣋ͭ ‣ ίϯςφಉ͕࢜ີ݁߹Ͱ͋Δํ͕߹͕ྑ͍߹ɺ1PEͱͯ͠ ෳछίϯςφΛ·ͱΊͯσϓϩΠ͢Δ ‣ ,VCFSOFUFTͰίϯςφ୯ҐͰͳ͘ɺ1PE୯ҐͰσϓϩΠ͞ ΕΔ
1PE
1PEͷஔΠϝʔδ
/PEFލ͗/( 1PEͰάϧʔϐϯά͞Εͨίϯςφ ಉ͡/PEFʹஔ͞ΕΔ
1PEΛσϓϩΠ͢Δ Demo-3 apiVersion: v1 kind: Pod metadata: name: simple-echo spec:
containers: - name: nginx image: gihyodocker/nginx-proxy:latest env: - name: BACKEND_HOST value: localhost:8080 ports: - containerPort: 80 - name: echo image: gihyodocker/echo:latest ports: - containerPort: 8080 /HJOYͱFDIPΞϓϦέʔγϣϯͰߏ͞ΕΔ1PEΛσϓϩΠ͢Δ
ଞͷίϯςφͲ͏ࢀর͢Δ͔ʁ Demo-3 1PE͕ࣗͭͷԾϚγϯͷΑ͏ͳͷ FDIPίϯςφͷϙʔτɺ OHJOY͔ΒMPDBMIPTUͱݟ͑Δ
1PEΛσϓϩΠ͢Δ Demo-3 ϚχϑΣετϑΝΠϧΛɺ,VCFSOFUFTΫϥελʹద༻͢Δ LVCFDUMBQQMZGTJNQMFQPEZBNM ࡞ͨ͠1PEΛ֬ೝ͢Δ LVCFDUMHFUQPE ࡞ͨ͠1PEͷϩάΛ֬ೝ͢Δ LVCFDUMMPHTGTJNQMFFDIPDFDIP ࡞ͨ͠1PEͷίϯςφͷதʹೖΔɹ LVCFDUMFYFDJUTJNQMFFDIPTIDOHJOY
%FQMPZNFOU
%FQMPZNFOU ‣ 1PEͭͷϚχϑΣετϑΝΠϧʹ͖͔ͭͭ͠࡞Ͱ͖ͳ͍ ‣ ࣮ӡ༻Ͱɺಉ͡1PEΛେྔʹෳ͢Δ͜ͱͰՄ༻ੑΛߴΊΔ ‣ 3FQMJDB4FUͰ1PEͷෳ͕Ͱ͖Δ͕ɺ%FQMPZNFOU3FQMJDB4FU ΛੈཧͰ͖ΔͨΊɺϩʔϧόοΫՄೳ ‣ جຊతʹɺ1PE3FQMJDB4FUͷϚχϑΣετͰͳ͘
%FQMPZNFOUͷϚχϑΣετϑΝΠϧΛ࡞͢Δͱߟ͑ͯ0,
%FQMPZNFOUͱͷؔ࿈
%FQMPZNFOUͷ࡞ Demo-4 apiVersion: apps/v1 kind: Deployment metadata: name: echo labels:
app: echo spec: replicas: 3 selector: matchLabels: app: echo template: metadata: labels: app: echo spec: containers: - name: nginx image: gihyodocker/nginx:latest env: - name: BACKEND_HOST value: localhost:8080 ports: - containerPort: 80 - name: echo image: gihyodocker/echo:latest ports: - containerPort: 8080 ˡUFNQMBUFҎԼɺઌఔͷ1PEఆٛͱಉ͡
%FQMPZNFOUΛ࡞͢Δ Demo-4 ϚχϑΣετϑΝΠϧΛɺ,VCFSOFUFTΫϥελʹద༻͢Δ LVCFDUMBQQMZGTJNQMFEFQMPZNFOUZBNM ࡞ͨ͠%FQMPZNFOUΛ֬ೝ͢Δ LVCFDUMHFUEFQMPZNFOUTFMFDUPSBQQFDIP 1PE͕ෳੜ͞Ε͍ͯΔ͔Λ֬ೝ͢Δ LVCFDUMHFUQPETFMFDUPSBQQFDIP
4FSWJDF
4FSWJDF ‣ 1PEͷू߹ʹର͢ΔϧʔςΟϯάαʔϏεσΟεΧόϦػೳ Λఏڙ͢ΔϦιʔε ‣ ಉ͡छྨͷෳ1PEʹର͠ɺτϥϑΟοΫΛྲྀͨ͢Ίͷϩʔυ όϥϯαʔͱͯ͠ͷػೳ࣋ͭ ‣ 4FSWJDF͔ΒͷτϥϑΟοΫͷసૹɺઃఆ͞ΕͨTFMFDUPSTͷ ϥϕϧͷʹΑܾͬͯఆ͞ΕΔ
‣ ,VCFSOFUFTΫϥελ෦Ͱɺ4FSWJDFͷ໊લͰ4FSWJDFʹ໊લ ղܾͰ͖Δ
4FSWJDFʹΑΔ1PEͷݟ͚ͭํ
4FSWJDFͷϚχϑΣετ Demo-5 apiVersion: v1 kind: Service metadata: name: echo spec:
selector: app: echo release: summer ports: - name: http port: 80 ˡTFMFDUPSͰఆٛͨ͠ϥϕϧʹ Ϛον͢Δ1PEʹτϥϑΟοΫΛྲྀ͢
4FSWJDFΛ࡞͢Δ Demo-5 ϚχϑΣετϑΝΠϧΛɺ,VCFSOFUFTΫϥελʹద༻͢Δ LVCFDUMBQQMZGTJNQMFTFSWJDFZBNM ࡞ͨ͠4FSWJDFΛ֬ೝ͢Δ LVCFDUMHFUTWDFDIP σόοά༻ͷ1PEΛ࡞Γɺ͔ͦ͜Β࡞ͨ͠4FSWJDFʹରͯ͠)551ϦΫΤετ LVCFDUMSVOJSNUUZEFCVHJNBHFHJIZPEPDLFSGVOEBNFOUBM SFTUBSU/FWFSCBTIJM
*OHSFTT
*OHSFTT ‣ 4FSWJDFΫϥελ෦͔Β͔͠ΞΫηεͰ͖ͳ͍ ‣ 4FSWJDFΫϥελ֎෦ެ։͢ΔͨΊͷϦιʔε͕*OHSFTT ‣ 8FCΞϓϦέʔγϣϯ"1*ΞϓϦέʔγϣϯΛΠϯλʔωο τʹެ։͢Δ߹ඞཁ
*OHSFTTͷϚχϑΣετ Demo-6 apiVersion: extensions/v1beta1 kind: Ingress metadata: name: echo spec:
rules: - host: echo.gihyo.local http: paths: - path: / backend: serviceName: echo servicePort: 80 ˡެ։͢Δ4FSWJDF ˡެ։͢ΔυϝΠϯ ʢ7JSUVBM)PTUʣ
*OHSFTTΛ࡞͢Δ Demo-6 ϚχϑΣετϑΝΠϧΛɺ,VCFSOFUFTΫϥελʹద༻͢Δ LVCFDUMBQQMZGTJNQMFJOHSFTTZBNM ࡞ͨ͠*OHSFTTΛ֬ೝ͢Δ LVCFDUMHFUJOHSFTT Ϋϥελ֎ʢϩʔΧϧʣ͔Βɺެ։͍ͯ͠Δ*OHSFTTʹରͯ͠ϦΫΤετΛૹΔɹ DVSMIUUQMPDBMIPTU))PTUFDIPHJIZPMPDBM`
͜͜·Ͱ͕Ұ௨ΓͷྲྀΕ ‣ 4FSWJDF*OHSFTTҰ࡞ͬͯ͠·͑ɺมߋ͕ͳ͍ݶΓͦͷ ·· ‣ ܁Γฦ͠σϓϩΠ͢Δ߹ɺ%FQMPZNFOUʹߋ৽Λ͔͚ɺ৽͠ ͍ੈͷ3FQMJDB4FUͱ1PE͕࡞ΒΕΔ ‣ *OHSFTT4FSWJDF%FQMPZNFOUͷϚχϑΣετΛύοέʔδϯ ά͠ɺҰׅͰσϓϩΠ͢Δ)FMNͱ͍͏πʔϧ͋Δ
ࢀߟɿΑΓ࣮ફతͳߏ
ύϒϦοΫΫϥυͰͷ ίϯςφӡ༻
,VCFSOFUFTΛθϩ͔Βߏங͠ ӡ༻͢ΔͷͱͯେมͰ͢
.BTUFS/PEF,VCFSOFUFTΫϥελશମͷ੍ޚ"1*Λఏڙ͢Δαʔό /PEF։ൃऀ͕σϓϩΠ͢Δ1PEͷϦιʔε͕ஔ͞ΕΔαʔό
ӡ༻ʹඞཁͳ࡞ۀΞϨίϨ ‣ ,VCFSOFUFTΫϥελͷߏங࡞ۀ ‣ LVCFTQSBZ LPQTͷπʔϧ͕͋Δ͕ɺͦΕͰ؆୯Ͱͳ͍ ‣ Ϛελʔϊʔυͷཧ͕ඞཁ ‣ ,VCFSOFUFTΫϥελͷόʔδϣϯΞοϓ࡞ۀ
‣ *OHSFTT$POUSPMMFS"VUPTDBMJOHɺӡ༻ʹඞཁͳΈΛηο τΞοϓ͢Δඞཁ͕͋Δ ‣ ϞχλϦϯάࣗલͰηοτΞοϓ
,VCFSOFUFT ϚωʔδυαʔϏεΛ͓͏
දతͳϚωʔδυαʔϏε ‣ (PPHMF,VCFSOFUFT&OHJOF (,& ‣ "NB[PO&MBTUJD$POUBJOFS4FSWJDFGPS,VCFSOFUFT &,4 ‣
౦ژϦʔδϣϯ·ͩະରԠ ‣ LTͰͳ͍ίϯςφϚωʔδυαʔϏε &$4 ͋Δ ‣ "[VSF,VCFSOFUFT4FSWJDF ",4
ϚωʔδυαʔϏεͷྑ͍ͱ͜Ζ ‣ ,VCFSOFUFTΫϥελߏங͕ࣗಈ ‣ Ϛελʔϊʔυͷཧ͕ෆཁ ‣ ΫϥελͷόʔδϣϯΞοϓ͓·͔ͤ ‣ ϓϥοτϑΥʔϜผͷαʔϏεͱɺੑͷߴ͍࿈ܞ͕Ͱ͖Δ ‣
*OHSFTTϩʔυόϥϯαʔͱͷ࿈ܞɹ ‣ "VUPTDBMJOHͰͷϊʔυ૿ݮʹͪΖΜରԠ ‣ ϩάͷӾཡϞχλϦϯάʹରԠ ‣ ։ൃऀʹͱͬͯຊ࣭తͰͳ͍࡞ۀϚωʔδυ͕ߦ
(,&Ͱͷཧը໘
Ϛωʔδυͷબ(,&͕ݱ࣮త ‣ LT։ൃΛओಋ͢Δ(PPHMFʹΑΔϚωʔδυαʔϏεͰ͋Δ ‣ ",4&,4(,&ʹൺɺΕΛऔ͍ͬͯΔ෦͕ଟ͍ ‣ ػೳ໘ཧը໘ͷૢ࡞ੑɹ ‣ ಛघͳཧ༝͕ͳ͍ݶΓɺ(,&Λબ͢Δ͜ͱΛ͓͢͢Ί͠·͢
ίϯςφӡ༻Λࢧ͑Δπʔϧ
ίϯςφӡ༻Λࢧ͑Δπʔϧ ‣ &MBTUJDTFBSDI ,JCBOB ‣ TUBDLESJWFS ‣ TUFSO
&MBTUJDTFBSDI ,JCBOB ‣ &MBTUJDTFBSDI ‣ શจݕࡧΤϯδϯ ‣ ίϯςφͷϩάΛอଘ͢ΔͨΊʹར༻ ‣ ,JCBOB
‣ ϩάσʔλՄࢹԽπʔϧ ‣ &MBTUJDTFBSDIʹอ࣋͞ΕͨϩάσʔλΛӾཡͰ͖Δ
ϩάऩूͷΈ
LJCBOBͰϩάӾཡ
TUBDLESJWFSͰͷϩά֬ೝ
TUFSO ‣ ίϚϯυϥΠϯͰɺ,VCFSOFUFTͷ1PE͕ग़ྗ͢ΔϩάΛUBJM͢ ΔͨΊͷπʔϧ ‣ IUUQTHJUIVCDPNXFSDLFSTUFSO ‣ ࢦఆͨ͠ϥϕϧʹώοτ͢Δ1PEͷϩάʹߜΓࠐΊΔ
·ͱΊ
·ͱΊ ‣ %PDLFSܾͯ͠ΠϯϑϥدΓͷٕज़Ͱͳ͘ɺΞϓϦέʔγϣ ϯͷσϓϩΠʹಛԽٕͨ͠ज़ ‣ ϙʔλϏϦςΟʹຬͪͨɺ%PDLFSϑϨϯυϦͳΠϝʔδΛͭ͘ Δ͜ͱʹՁ͕͋Δ ‣ ༷ʑͳ,VCFSOFUFTϦιʔεΛΈ߹ΘͤͯɺΞϓϦέʔγϣϯ ΛσϓϩΠ͢Δ
‣ ϚωʔδυαʔϏεʹཔΖ͏ʂʢಛʹཧ༝͕ͳ͚Ε(,&ʣ ‣ ίϯςφ։ൃΛࢧԉ͢Δɺ༷ʑͳπʔϧ͕ॆ࣮͍ͯ͠·͢
5IBOLT✋