Slide 1

Slide 1 text

©2018 Wantedly, Inc. Wantedly Visit on Kubernetes Wantedly ͷ͢΂ͯͷαʔϏεΛ Kubernetes ΛҠߦͤͨ͞ཧ༝ͱۤ࿑ SRE Lounge #5 26.Sep.2018 - Shimpei Otsubo @potsbo

Slide 2

Slide 2 text

©2018 Wantedly, Inc. ͸ͨΒ͘Λ໘ന͘ ༗໊اۀ΍ϕϯνϟʔɺελʔτΞοϓاۀɺؾʹ ͳΔΦϑΟεʹ࿩Λฉ͖ʹ͍͜͏ɻ
 ΩϥͬͱޫΔγΰτ΍ϓϩδΣΫτɺձࣾΛݟ͚ͭ ͯΤϯτϦʔ͠·͠ΐ͏ɻ஌Γ߹͍ͷͭͳ͕Γ͕෼ ͔ͬͯ҆৺Ͱ͢ɻ
 ϓϩϑΟʔϧΛॆ࣮ͤ͞Δ͜ͱͰɺ࠾༻୲౰ऀ͔Β ௚઀ΦϑΟε๚໰ͷট଴͕དྷΔ͔΋͠Ε·ͤΜɻ

Slide 3

Slide 3 text

©2018 Wantedly, Inc. ड͚औ໊ͬͨࢗશͯΛɺճͷࡱӨͰ ಉ࣌ʹಡΈࠐΈɻ
 ಡΈࠐΜ໊ͩࢗ͸ਓ޻஌ೳ͕ଈ࣌σʔ λԽ͠ɺ࿈བྷாʹ௥Ճ͞Ε·͢ɻ ݡ໊ࢗ͘؅ཧ

Slide 4

Slide 4 text

©2018 Wantedly, Inc. 4IJNQFJ0UTVCP!QPUTCP Infrastructure Team, Wantedly, Inc. 2018 New Grads Kubernetes Dev Tools CI / CD AuthN / Z Productivity Dvorak

Slide 5

Slide 5 text

©2018 Wantedly, Inc.

Slide 6

Slide 6 text

©2018 Wantedly, Inc. ڞ௨σʔλج൫ ΠϯϑϥνʔϜ͕࠷ۙ΍͍ͬͯΔ͜ͱ αʔϏεϝογϡ෼ࢄτϨʔγϯά ΤϯδχΞͷੜ࢈ੑ 43&͚ͩͰ͸ͳ͍

Slide 7

Slide 7 text

©2018 Wantedly, Inc. ڞ௨σʔλج൫ ΠϯϑϥνʔϜ͕࠷ۙ΍͍ͬͯΔ͜ͱ αʔϏεϝογϡ෼ࢄτϨʔγϯά ΤϯδχΞͷੜ࢈ੑ 43&͚ͩͰ͸ͳ͍ ࣗ෼ͷڵຯ

Slide 8

Slide 8 text

©2018 Wantedly, Inc. ڧ͍ਓ ೖࣾि໨ ࣗ෼ ʮࣾ಺ͷੜ࢈ੑ͸๻্͕͛·͢ʂʂʯ ʮ͓લੜ࢈ੑͬͯԿ͔Θ͔ͬͯΜͷ͔ʁʯ

Slide 9

Slide 9 text

©2018 Wantedly, Inc. ྔ ୯Ґ࣌ؒ͋ͨΓʹҰਓͷΤϯδχΞ͕࡞ΕΔՁ஋ͷ ࣗ෼ͷճ౴

Slide 10

Slide 10 text

©2018 Wantedly, Inc. ࣭ ୯Ґ࣌ؒ͋ͨΓʹҰਓͷΤϯδχΞ͕࡞ΕΔՁ஋ͷ ྔ ͱ ڧ͍ਓͷճ౴

Slide 11

Slide 11 text

©2018 Wantedly, Inc. ड͚औ໊ͬͨࢗશͯΛɺճͷࡱӨͰ ಉ࣌ʹಡΈࠐΈɻ
 ಡΈࠐΜ໊ͩࢗ͸ਓ޻஌ೳ͕ଈ࣌σʔ λԽ͠ɺ࿈བྷாʹ௥Ճ͞Ε·͢ɻ ݡ໊ࢗ͘؅ཧ ,VCFSOFUFT͕ͳ͚Ε͹8BOUFEMZ1FPQMF͸ͳ͔ͬͨ ͦ΋ͦ΋࡞ΕΔͱ͍͏ൃ૝ʹͳΒͳ͔ͬͨ

Slide 12

Slide 12 text

©2018 Wantedly, Inc.

Slide 13

Slide 13 text

©2018 Wantedly, Inc. ͸ͨΒ͘Λ໘ന͘ ༗໊اۀ΍ϕϯνϟʔɺελʔτΞοϓاۀɺؾʹ ͳΔΦϑΟεʹ࿩Λฉ͖ʹ͍͜͏ɻ
 ΩϥͬͱޫΔγΰτ΍ϓϩδΣΫτɺձࣾΛݟ͚ͭ ͯΤϯτϦʔ͠·͠ΐ͏ɻ஌Γ߹͍ͷͭͳ͕Γ͕෼ ͔ͬͯ҆৺Ͱ͢ɻ
 ϓϩϑΟʔϧΛॆ࣮ͤ͞Δ͜ͱͰɺ࠾༻୲౰ऀ͔Β ௚઀ΦϑΟε๚໰ͷট଴͕དྷΔ͔΋͠Ε·ͤΜɻ 8BOUFEMZ7JTJU΋,VCFSOFUFTʹࡌͤΔͱ։ൃͷ্࣭͕͕Δ͔΋ʁ ͦ΋ͦ΋࡞ΕΔͱ͍͏ൃ૝ʹͳΒͳ͔ͬͨ΋ͷ͕࡞ΕΔ͔΋ʁ

Slide 14

Slide 14 text

©2018 Wantedly, Inc. ׂͱϞϊϦγοΫ ϚΠΫϩαʔϏε શ෦ Ұ෦ ೥໨ ೥໨ ͜Ε·Ͱ

Slide 15

Slide 15 text

©2018 Wantedly, Inc. ׂͱϞϊϦγοΫ ϚΠΫϩαʔϏε શ෦ ೥໨ ೥໨ શ෦ ͜Ε͔Β

Slide 16

Slide 16 text

©2018 Wantedly, Inc. ͢΂ͯͷαʔϏε͕ ݸͷେখ༷ʑͳ microservice

Slide 17

Slide 17 text

©2018 Wantedly, Inc. ݸͷେখ༷ʑͳ microservice ΄΅ ௒γϯϓϧͳ΍͕ͭ)FSPLVʹ͍ͨΓ Ҡߦ͍ͨ͠΍ͭ͸શ෦Ҡߦ͖ͬͨ͠ མͪͯࠔΔ΍ͭ ͢΂ͯͷαʔϏε͕

Slide 18

Slide 18 text

©2018 Wantedly, Inc. on KubernetesԽ࠷ޙͷࡆ

Slide 19

Slide 19 text

©2018 Wantedly, Inc. Կނ೉͔ͬͨ͠ʁ ͦΕͰ΋΍ͬͨཧ༝͸ʁ ҠߦલޙͷϑϩʔͦΕͧΕ ੾ସ࡞ۀ ·ͱΊ Ҡߦ࡞ۀ

Slide 20

Slide 20 text

©2018 Wantedly, Inc. Կނ೉͔ͬͨ͠ʁ

Slide 21

Slide 21 text

©2018 Wantedly, Inc. ن໛͕େ͖͗ͯ͢૝ఆ֎ ՝୊ Өڹൣғ͕޿͗͢Δ

Slide 22

Slide 22 text

©2018 Wantedly, Inc. Created github.com/wantedly/wantedly Commits Docker Image Repo ՝୊ Sep 6, 2011 147,687 517.76MB 4GB ن໛͕େ͖͗ͯ͢૝ఆ֎ %PDLFSCVJMEʹ਺෼Ҏ্͔͔Δ͜ͱΛ૝ఆͯ͠ͳ͍ ࣾ಺ͷ,VCFSOFUFTͷӡ༻ϑϩʔʹWJTJU͕ͦͷ··͸৐Εͳ͍ සൟʹߋ৽͞ΕΔXFCαʔόʔ͸લఏʹ͍ͯ͠ͳ͍

Slide 23

Slide 23 text

©2018 Wantedly, Inc. Ք͙͓ۚ github.com/wantedly/wantedly ґଘ͢ΔαʔϏε ՝୊ ͨ͘͞Μ Өڹൣғ͕޿͗͢Δ 6TFSσʔλ͸7JTJUͷ΋ͷΛ1FPQMFͰ΋ྲྀ༻͍ͯ͠Δ 7JTJU͕མͪΔͱ1FPQMF΋མͪΔ ͪΐͬͱ஗͘ͳΔ͚ͩͰച্ʹӨڹ ͨ͘͞Μ ࠷ॳظ͔Β͋ΔαʔϏεͳͷͰׂͱ੹຿͕େ͖͍

Slide 24

Slide 24 text

©2018 Wantedly, Inc. Ϟνϕʔγϣϯ ΠϯϑϥͷҰຊԽ 7JTJUΠϯϑϥͷෛ࠴Խ

Slide 25

Slide 25 text

©2018 Wantedly, Inc. ҟͳΔ̎ͭͷΠϯϑϥΛ؅ཧ͢Δͷ͕ίετ "VUPTDBMF͍ͨ͠ *TUJP͍Ε͍ͨ 3#"$͍ͨ͠ ৽͍͜͠ͱΛ͍ͨ࣌͠ Πϯγσϯτ͕ىͬͨ࣌͜ 8PSLFSΛࢭΊ͍ͨʂ 8FCΛεέʔϧ͍ͤͨ͞ʂ Ϟνϕ ΠϯϑϥͷҰຊԽ ՕॴͰಉ͜͡ͱΛҧ͏ํ๏Ͱʜ ঢ়گʹ߹Θͤͯਖ਼͍͠ํ๏Λબ୒ʜ

Slide 26

Slide 26 text

©2018 Wantedly, Inc. ݟΕΔਓ͕গͳ͘ͳ͖ͬͯͨ ͍ΖΜͳ΋ͷΛॳظ͔Β࢖͍ͬͯΔ ͪΐͬͱ৽͍͜͠ͱΛ΍Δ͚ͩͰҰۤ࿑ Ϟνϕ 7JTJUΠϯϑϥͷෛ࠴Խ ౰࣌͸ඪ४Ͱ͸Ͱ͖ͳ͔ͬͨ͜ͱΛϋοΫ͍ͯͨ͠ ࠓͰ͸ࣗ෼ͰؤுΒͳ͍͍ͯ͘͜ͱ΋ଟʑ͋Δ มԽʹڧ͘ͳ͍ʜ %PDLFS͸Ҏલ͔ΒLT͸೥Ҏ্લ͔Β

Slide 27

Slide 27 text

©2018 Wantedly, Inc. Ϟνϕʔγϣϯ ΠϯϑϥͷҰຊԽ 7JTJUΠϯϑϥͷෛ࠴Խ ن໛͕େ͖͗ͯ͢૝ఆ֎ ՝୊ Өڹൣғ͕޿͗͢Δ

Slide 28

Slide 28 text

©2018 Wantedly, Inc. ଔઌഐͷνϟϨϯδʂ ΠϯϑϥνʔϜ৽ଔ͕ຖ೥νϟϨϯδ ଔઌഐͷνϟϨϯδʂ ࣌ظঘૣ ࣌ظঘૣ ଔͷԶͷνϟϨϯδʂ ࠓͳΒߦ͚Δʂ

Slide 29

Slide 29 text

©2018 Wantedly, Inc. Kubernetes Ҡߦ͸Կ౓΋௅ઓ͖ͯͨ͠ େ͖ͳোน͕গͳ͘Ϟνϕ΋͋Δࠓ͔͠ͳ͍ʂ ͍·ͷLTʹ͸YY͕ͳ͍ͷͰࠓ͸அ೦ʜ ͦΕ͕࣏ͬͨࠒʹ͸ผͷ໰୊͕ʜ

Slide 30

Slide 30 text

©2018 Wantedly, Inc. ҠߦલޙͷEFQMPZϑϩʔ

Slide 31

Slide 31 text

©2018 Wantedly, Inc. ࣾ಺ͷ,VCFSOFUFTͷϑϩʔ શ෦Ϛωʔδυ set image check pull deploy push push hook build build

Slide 32

Slide 32 text

©2018 Wantedly, Inc. tag ͸ commit hash ͱ latest ͷΈ GitHub ͷ commit status Ͱ image ͕ ready ͔Θ͔Δ ΄΅೚ҙͷ commit ༻ͷ image ͕ଘࡏ push push hook build build ࣾ಺ͷ,VCFSOFUFTͷϑϩʔ શ෦Ϛωʔδυ

Slide 33

Slide 33 text

©2018 Wantedly, Inc. `kube prod deploy master` Ͱ deploy Ͱ͖Δ ಺෦Ͱ͸ kubectl set image ؀ڥ͝ͱͷࠩҟ͸؀ڥม਺ͷΈͰ؅ཧ set image check pull deploy ࣾ಺ͷ,VCFSOFUFTͷϑϩʔ શ෦Ϛωʔδυ

Slide 34

Slide 34 text

©2018 Wantedly, Inc. શ෦AWS build hook push hook intermediate ࣾ಺ͷ,VCFSOFUFTͷϑϩʔ ssh deploy hook restart build push pull prod pull ೉͍͠…

Slide 35

Slide 35 text

©2018 Wantedly, Inc. શ෦AWS ࣾ಺ͷ,VCFSOFUFTͷϑϩʔ ೉͍͠… cache ͳ͠Ͱਅ໘໨ʹ docker build ͢Δͱ1࣌ؒ FROM wantedly/wantedly:intermediate tag ͸ prod / qa / intermediate ࡞੒౰࣌͸ແݶʹ image Λஔ͚Δ registry ͕ͳ͔ͬͨ Docker run Ͱಈ͔͔ͨͬͨ͠ͷͰ .env ΋ image ͷͳ͔ build hook push hook intermediate

Slide 36

Slide 36 text

©2018 Wantedly, Inc. શ෦AWS ࣾ಺ͷ,VCFSOFUFTͷϑϩʔ ೉͍͠… Deploy ࣌ʹ build ઐ༻αʔόʔͰ build Deploy ͸ pull and restart Blue / green ssh deploy hook restart build push pull prod pull

Slide 37

Slide 37 text

©2018 Wantedly, Inc. CVJME 7JTJU #VJME%FQMPZϑϩʔࠩ෼ UBH ؀ڥม਺ 1FPQMF ઐ༻Πϯελϯε 5SBWJT ؀ڥʹରԠ $PNNJUIBTIʹରԠ JNBHFͷத LTͷTFDSFUT EFQMPZ CMVFHSFFO SPMMJOH શ෦"84 ΄΅Ϛωʔδυ Πϯϑϥ 1FPQMFଆʹऩଋ͍ͤͨ͞

Slide 38

Slide 38 text

©2018 Wantedly, Inc. Ҡߦ࡞ۀ

Slide 39

Slide 39 text

©2018 Wantedly, Inc. NBTUFSQVTI͔ΒEFQMPZ׬ྃ·Ͱ෼ ཁ݅ 5SBWJTͰCVJME͍ͨ͠

Slide 40

Slide 40 text

©2018 Wantedly, Inc. Ͱ͖ΔݶΓͷ͜ͱΛ build ҎલʹऴΘΒͤΔΑ͏ʹ ൿಗ৘ใΛҰ੾ೖΕͳ͍EPDLFSJNBHFʹมߋ $*ͰCVJME͢ΔͨΊʹ *OUFSNFEJBUFΛ࡮৽ͯ͠શ؀ڥ౷ҰͷJNBHF ΄ͱΜͲͷ͕࣌ؒ asset sync -> gem ʹ patch ͦͷଞॾʑ…

Slide 41

Slide 41 text

©2018 Wantedly, Inc. 1VTI͔Β10෼Ͱbuild ׬ྃ ෼ͰऴΘΒ͍͕ͤͨҰ୴͸े෼Ͱ͋Δͱ൑அ Ͱ΍ͬͯ΋

Slide 42

Slide 42 text

©2018 Wantedly, Inc. ෼ͰऴΘΒ͍͕ͤͨҰ୴͸े෼Ͱ͋Δͱ൑அ ΋ͬͱؤுΔํ๏ $JSDMF$*ʹҠߦ͢Δ 'SPOUFOEΛผϨϙδτϦʹ͢Δ Ϋϥελ಺ͰCVJME͢Δ -BZFSDBDIF͕࢖͑ͯૣ͍͸ͣ Ͱ΍ͬͯ΋ 1VTI͔Β10෼Ͱbuild ׬ྃ

Slide 43

Slide 43 text

©2018 Wantedly, Inc. %FQMPZ3PMMCBDL଎౓Λམͱͨ͘͠ͳ͍

Slide 44

Slide 44 text

©2018 Wantedly, Inc. 3PMMCBDLͷ଎౓͕མͪΔͷ͸ఘΊΔ #MVFHSFFOͱಉ͡଎౓͸CMVFHSFFO͡Όͳ͍ͱແཧ Ͳ͏ͤSPMMCBDL͢Δ͔ͷ൑அࣗମʹ෼࢖͍ͬͯΔͷͰ͘͢͝େࣄͰ͸ͳ͍ʁ

Slide 45

Slide 45 text

©2018 Wantedly, Inc. %FQMPZ3PMMCBDLΛԿ౓΋ߦͬͯ଎౓ܭଌ #MVFHSFFOΛ΍ΊΔͨΊʹ ΞϓϦέʔγϣϯνʔϜͱΑ͘σΟεΧογϣϯΛͨ͠ ݁ہίϛϡχέʔγϣϯ͕େࣄ Կ͕Ͱ͖ͯԿ͕Ͱ͖ͳ͍ͷ͔Λ໌֬ʹ

Slide 46

Slide 46 text

©2018 Wantedly, Inc. ͋͞Ҡߦͩʂ

Slide 47

Slide 47 text

©2018 Wantedly, Inc. ͋͞Ҡߦͩʂͷલʹ

Slide 48

Slide 48 text

©2018 Wantedly, Inc. ։ൃݕূ؀ڥ͚ͩҠߦͨ͠ Ҡߦ࡞ۀࢼݧ ৽͍͠ΦϖϨʔγϣϯͷ໰୊఺Λચ͍ग़͢

Slide 49

Slide 49 text

©2018 Wantedly, Inc. ͋͞Ҡߦͩʂ ͜ΜͲͦ͜

Slide 50

Slide 50 text

©2018 Wantedly, Inc. 1SPEΛϑϦʔζͯ྆͠ํʹEFQMPZ چ"-# ৽"-# JOUFSOBM DNS

Slide 51

Slide 51 text

©2018 Wantedly, Inc. چ"-# ৽"-# JOUFSOBM DNS Ұ෦τϥϑΟοΫΛOHJOY͔Βྲྀ͢ ༧Ί༻ҙ͓͍ͯͨ͠ύλʔϯʹҰॠͰมߋͰ͖ΔΑ͏ʹ͓͍ͯͨ͠ BCPSU͕༰қ

Slide 52

Slide 52 text

©2018 Wantedly, Inc. શτϥϑΟοΫΛLTʹྲྀ͢ چ"-# ৽"-# JOUFSOBM DNS

Slide 53

Slide 53 text

©2018 Wantedly, Inc. Ұ୴BCPSUͨ͠ چ"-# ৽"-# JOUFSOBM DNS ͜ͷ࣌গ͠ࣄނΛى͕ͨ͜͠ɺҰॠͰBCPSUͰ͖ΔQBUIΛ༻ҙ͓͍ͯͨ͠ͷ͸ྑ͔ͬͨ

Slide 54

Slide 54 text

©2018 Wantedly, Inc. ࢓੾Γ௚͠ چ"-# ৽"-# JOUFSOBM DNS

Slide 55

Slide 55 text

©2018 Wantedly, Inc. %/4੾Γସ͑ چ"-# ৽"-# JOUFSOBM DNS

Slide 56

Slide 56 text

©2018 Wantedly, Inc. چ"-# ৽"-# JOUFSOBM DNS ׬ྃʂʂʂ

Slide 57

Slide 57 text

©2018 Wantedly, Inc. DNS ׬ྃʂʂʂ ৽"-#

Slide 58

Slide 58 text

©2018 Wantedly, Inc. %/4੾Γସ͑ ৽ALB͕ड͚ͨϦΫΤετͷׂ߹ DNS੾ସ

Slide 59

Slide 59 text

©2018 Wantedly, Inc. %/4੾Γସ͑ ৽ALB͕ड͚ͨϦΫΤετͷׂ߹ DNS੾ସ

Slide 60

Slide 60 text

©2018 Wantedly, Inc. ίϚϯυ࣮ߦ͕ૣ͘ͳͬͨ %FQMPZ͕ૣ͘ͳͬͨ ݁Ռ DBෛՙ͕ݮͬͨ Autoscale͕Ͱ͖ΔΑ͏ʹͳͬͨ ϫʔετ෼ Ұൠతʹ͸෼ఔ౓ CMVFHSFFOͰͳ͘ͳͬͨͨΊ

Slide 61

Slide 61 text

©2018 Wantedly, Inc. ϑϩʔ͕͋ΔͱҠߦ͠΍͍͢ ֶΜͩ͜ͱ ϑΥʔϧόοΫઌ͸৻ॏʹ Ϛωʔδυ͸ָ ࢼݧΛͯ͠΋ࣄނ͸ى͜Δ ఘΊΔ͜ͱ΋େࣄ 1PTUNPSUFNେࣄ ࣄނΛىͨ͜͠ຊਓ΋ཱͪ௚ΕΔ

Slide 62

Slide 62 text

©2018 Wantedly, Inc. We’re Hiring .JDSPTFSWJDFT.POEBZ HJUIVCDPNXBOUFEMZNJDSPTFSWJDFT@NPOEBZ