Slide 1

Slide 1 text

∁ੴྒ / GMO Pepabo, Inc. 2018-09-28 Kubernetes Meetup #13 ,OBUJWF4FSWJOHೖ໳

Slide 2

Slide 2 text

∁ੴ ྒ / @r_takaishi TAKAISHI Ryo https://repl.info/ Belgian beer Ruby, Go Kubernetes, OpenStack

Slide 3

Slide 3 text

∁ੴ ྒ / @r_takaishi TAKAISHI Ryo •ιϑτ΢ΣΞΤϯδχΞ @ GMOϖύϘ •΢ΣϒαʔϏεͷج൫ߏஙɾӡ༻ •࠷ۙ͸FluentdͷϓϥάΠϯΛॻ͍͍ͯ·͢ •OpenStackΛ࢖ͬͨϓϥΠϕʔτΫϥ΢υӡ༻ •Kubernetes on OpenStack؀ڥͷߏங •஥ؒืूதʂ

Slide 4

Slide 4 text

,OBUJWF

Slide 5

Slide 5 text

,OBUJWF4FSWJOH

Slide 6

Slide 6 text

• Knative ServingͷΞʔΩςΫνϟ΍ࢥ૝ʹ͍ͭͯ • ಛ௃తͳػೳͷ1ͭͰ͋Δθϩɾεέʔϧʹ͍ͭͯ • ୭Λର৅ͱͨ͠ϓϩμΫτͳͷ͔ʁզʑ͸Ͳ͏઀͢Ε͹͍͍ͷ͔ʁ !6 ࠓ೔࿩͢͜ͱ

Slide 7

Slide 7 text

• Knative Eventing • Knative Building • ಺෦࣮૷ !7 ࠓ೔࿩͞ͳ͍͜ͱ

Slide 8

Slide 8 text

݁࿦

Slide 9

Slide 9 text

• Knative Servingͷΰʔϧ͸ɺPaaS/FaaSͷ֓೦ΛؚΉαʔόʔϨεϫʔΫϩʔ υͷͨΊͷAPIͱπʔϧΛఏڙ͢Δ͜ͱ • ൓ԠతʹΞϓϦέʔγϣϯΛىಈɾεέʔϧ͠ɺར༻͕ͳ͚Ε͹ఀࢭ͢ΔΞʔ ΩςΫνϟͰ͋Δ • 2018೥9݄࣌఺Ͱ͸ΞʔΩςΫνϟͱAPIͷΈఏڙ͞Ε͍ͯΔঢ়گɻʢ·ͩެ ࣜͰ͸ͳ͍͕ʣCLIπʔϧ͕ొ৔࢝͠Ί͍ͯΔ • IaaSɺCaaSɺPaaSͱ͍ͬͨج൫ٕज़ͷԆ௕ઢ্ʹ͋ΔϓϩμΫτͰɺKnative Ͱ͸ͳͯ͘΋͍͍͕ߟ͑ํ͸஌͓ͬͯ͘ͱΑ͍ͱࢥ͏ !9 ݁࿦ɿ,OBUJWF4FSWJOHͱ͸Կͳͷ͔

Slide 10

Slide 10 text

,OBUJWF͕໨ࢦ͢ΰʔϧ

Slide 11

Slide 11 text

• Google Cloud Next 2018Ͱൃද͞Εͨʢ2018೥7݄຤ʣ • αʔόʔϨεΛఏڙ͢ΔϓϥοτϑΥʔϜ • Kubernetes্ʹߏங !11 ,OBUJWFʁ

Slide 12

Slide 12 text

• BuildɿίϯςφΠϝʔδΛϏϧυ͢Δ • EventingɿΠϕϯτͷσϦόϦʔΛ؅ཧ͢Δ • ServingɿϦΫΤετۦಈͰίϯςφΛىಈɾεέʔϧ͢Δ !12 ,OBUJWF

Slide 13

Slide 13 text

No content

Slide 14

Slide 14 text

• Knative Servingͷΰʔϧ͸ɺαʔόʔϨεϫʔΫϩʔυͷͨΊͷ APIͱπʔϧΛఏڙ͢Δ͜ͱ • ެࣜͷCLIπʔϧɺGUI͸·ͩͳ͍ͬΆ͍ • cppforlife/knctlɿίϛϡχςΟϦιʔεͰ։ൃ͞Ε͍ͯΔ໛༷ • CLI͚ͩͰσϓϩΠ΍τϥϑΟοΫ෼ׂ͕࣮ݱՄೳʹͳΔʁ !14 ,OBUJWF4FSWJOH͕໨ࢦ͢ΰʔϧ https://github.com/knative/serving/blob/v0.1.1/docs/spec/motivation.md

Slide 15

Slide 15 text

αʔόʔϨεʁ

Slide 16

Slide 16 text

!16 • εςʔτϨεͰ͋Δ͜ͱ • ϓϩηεͷεέʔϧΞ΢τ͕ద༻ՄೳͰ͋Δ͜ͱ • ओʹΞϓϦέʔγϣϯϨϕϧʢL7ɺྫ͑͹HTTPʣͷϦΫΤεττ ϥϑΟοΫʹΑͬͯۦಈ͢Δ͜ͱ αʔόʔϨεɾϫʔΫϩʔυ

Slide 17

Slide 17 text

• ΋ͪΖΜବ໨Ͱ͸ͳ͍ • Kubernetes͸αʔόʔϨεϫʔΫϩʔυΛѻ͑ΔϦιʔεΛఏڙ͠ ͍ͯΔʢDeploymentɺServiceͳͲʣ • ͔͠͠ɺ͜ΕΒͷϦιʔε͸ΞϓϦέʔγϣϯ։ൃऀ͔Βݟͨͱ͖ɺ े෼ʹγϯϓϧͱ͸ݴ͑ͳ͍ !17 ,VCFSOFUFTͰ͸ବ໨ͳͷ͔

Slide 18

Slide 18 text

• Kubernets্ͷΞϓϦέʔγϣϯϓϥοτϑΥʔϜʹ͸ڞ௨఺͕ଟ ͍ • Knative͸ڞ௨఺Λඪ४ԽɾΧελϜϦιʔεԽ͢Δ • ͜ΕʹΑΓΞϓϦέʔγϣϯ։ൃऀ͔ΒݟͨΠϯϑϥΛந৅Խ͢Δ !18 ,VCFSOFUFTͰ͸ବ໨ͳͷ͔

Slide 19

Slide 19 text

ߏ੒ཁૉ

Slide 20

Slide 20 text

• CRD(Custom Resource Definitions)Ͱఆٛ • Revision • Configuration • Route • Service !20 ,OBUJWF4FSWJOH͕ఏڙ͢ΔϦιʔε Route Configuration Revision Service Revision Revision NBOBHFT SPVUFUSB⒏DUP SFDPSEIJTUPSZPG

Slide 21

Slide 21 text

• Revision • ίʔυͱઃఆͷεφοϓγϣοτ • ConfigurationʹΑͬͯ࡞੒ !21 ,OBUJWF4FSWJOH͕ఏڙ͢ΔϦιʔε Route Configuration Revision Service Revision Revision NBOBHFT SPVUFUSB⒏DUP SFDPSEIJTUPSZPG

Slide 22

Slide 22 text

• Configuration • ࠷৽ͷRevisionʹ͍ͭͯͷهड़ • Configurationͷߋ৽ʹΑΓɺ৽͍͠ Revision͕࡞ΒΕΔ !22 ,OBUJWF4FSWJOH͕ఏڙ͢ΔϦιʔε Route Configuration Revision Service Revision Revision NBOBHFT SPVUFUSB⒏DUP SFDPSEIJTUPSZPG

Slide 23

Slide 23 text

• Route • αʔϏε޲͚ΤϯυϙΠϯτΛఏڙ • ΤϯυϙΠϯτͷޙΖʹ͸1ͭҎ্ͷ Revision͕ଘࡏ • ύʔηϯςʔδϕʔεͰτϥϑΟοΫ Λ෼ׂ !23 ,OBUJWF4FSWJOH͕ఏڙ͢ΔϦιʔε Route Configuration Revision Service Revision Revision NBOBHFT SPVUFUSB⒏DUP SFDPSEIJTUPSZPG

Slide 24

Slide 24 text

• Service • RouteͱConfigurationΛ࡞੒͢Δ • جຊతʹServiceΛ࢖͏ͱָ • KubernetesͷDeploymentͱ ReplicaSetͷؔ܎ !24 ,OBUJWF4FSWJOH͕ఏڙ͢ΔϦιʔε Route Configuration Revision Service Revision Revision NBOBHFT SPVUFUSB⒏DUP SFDPSEIJTUPSZPG

Slide 25

Slide 25 text

• Blue Green DeploymentͷσϞ • ৽͍͠όʔδϣϯͷΞϓϦέʔγϣϯʹঃʑʹτϥϑΟοΫΛྲྀ͠ ͍ͯ͘ !25 %FNP

Slide 26

Slide 26 text

εέʔϦϯά

Slide 27

Slide 27 text

• Knative Serving͸ϦΫΤετΛτϦΨʔͱͯ͠ΞϓϦέʔγϣϯΛ ىಈɾεέʔϧΞ΢τ͢Δ • Pod1୆͋ͨΓͷෛՙ͕ৗʹҰఆʹͳΔΑ͏ʹPodͷ୆਺Λ૿ݮ͢Δ • Horizontal Auto Scaling • ϦΫΤετ͕Ұఆظؒͳ͍৔߹ɺPodͷ୆਺Λ0ʹͯ͠Ϧιʔεޮ ཰Λ্͛Δ͜ͱ΋Ͱ͖Δ !27 ,OBUJWFͷεέʔϦϯάͱ͸Կ͔

Slide 28

Slide 28 text

!28 Φʔτεέʔϧͷ࢓૊Έ Istio Route Route Revision Pods Deployment Autoscaler Activator inactive route active route watch first activate metrics resize create/delete

Slide 29

Slide 29 text

!29 ༻ޠ Knative Serving Revision ϢʔβʔͷίʔυͱઃఆͷεφοϓγϣοτΛѻ͏ΧελϜϦιʔε Knative Serving Route RevisionͷIstioͷΠϯάϨεϧʔϧΛ௨ͯ͠ΫϥΠΞϯτʹެ։͢ΔΧελϜϦιʔε Kubernetes Deployment Podͱͯ͠ಈ͘ίϯςφͷϥΠϑαΠΫϧΛ؅ཧ͢ΔKubernetesͷϦιʔε Knative Serving Autoscaler Ϣʔβʔͷίʔυ͕ಈ͘PodͷෛՙΛ؂ࢹ͢ΔͨΊͷDeploymentɻ PodͷෛՙΛҰఆʹอͭΑ͏ʹϢʔβʔίʔυ༻ͷDeploymentͷαΠζΛ૿ݮ͢Δ Knative Serving Activator KnativeͰ͸ϦΫΤετ͕ಧ͍ͨ࣌ɺͦΕΛड͚औΔPod͕ͳ͍Մೳੑ͕͋Δɻ ͦ͏͍͏࣌ʹϦΫΤετΛड͚औΔDeploymentɻPodΛىಈ͠ɺϦΫΤετΛϑΥϫʔυ͢Δ Concurrency ॠؒॠؒͰॲཧ͍ͯ͠ΔϦΫΤετͷ਺

Slide 30

Slide 30 text

!30 1PE͕ىಈ͍ͯ͠ͳ͍৔߹ Istio Route Route Revision Pods Deployment Autoscaler Activator inactive route active route watch first activate metrics PodͷىಈΛ؂ࢹ PodΛىಈ͢Δ create/delete resize

Slide 31

Slide 31 text

!31 1PE͕ىಈ͍ͯ͠Δ৔߹ Istio Route Route Revision Pods Deployment Autoscaler Activator inactive route active route watch first activate metrics Pod͕ىಈ͍ͯ͠Δ৔߹ɺ ϦΫΤετ͸Pod΁ Autoscaler͸Podͷ ϝτϦοΫΛ؂ࢹ create/delete resize

Slide 32

Slide 32 text

!32 1PEͷෛՙ͕ߴ͗͢Δ௿͗͢Δ৔߹ Istio Route Route Revision Pods Deployment Autoscaler Activator inactive route active route watch first activate create/delete metrics resize

Slide 33

Slide 33 text

• Fast Brain • Pod1୆ຖͷಉ࣌ཁٻͷਫ४Λҡ࣋͢Δ • ྫɿPod1୆͕1ඵ͋ͨΓ100ϦΫΤετΛॲཧ͢ΔΑ͏୆਺Λ૿ݮ • Slow Brain • Fast BrainͰ࢖͏ਫ४ΛCPU΍ϝϞϦɺϨΠςϯγͳͲͷ౷ܭʹج͍ͮͯ ఏҊ͢Δ • v0.1.1Ͱ͸ະ࣮૷ʢϋʔυίʔυ͞Ε͍ͯΔʣ !33 "VUPTDBMFS͸ͭͷ೴Λ࣋ͭ

Slide 34

Slide 34 text

ཧղΛਂΊΔ

Slide 35

Slide 35 text

Ϧιʔεͱ͔εέʔϧͷ࢓૊Έͱ͔ ݟͤΒΕ͚ͨͲɺ݁ہͲ͏͍͏΋ͷ ͳͷ

Slide 36

Slide 36 text

• ॏཁͳͷ͸ϦΫΤετͰۦಈ͢Δɺͱ͍͏఺ • ίϯςφͰந৅Խ͢Ε͹ͲͪΒ΋ಉ͡Α͏ʹۦಈͰ͖Δ • ΞϓϦέʔγϣϯͷ৔߹͸ىಈޙϓϩηε͕ಈ͖ଓ͚Δ • ΞΫηε͕ͳ͚Ε͹ϓϩηεΛऴྃ • ϑΝϯΫγϣϯ͸ϦΫΤετͰۦಈɺ࣮ߦޙऴྃ • => FaaS༝དྷͷΠϕϯτۦಈ΋OK !36 ,OBUJWF͸ΞϓϦέʔγϣϯͱϑΝϯΫγϣϯΛ۠ผ͠ͳ͍

Slide 37

Slide 37 text

ϦΫΤετͰϓϩηε͕ىಈ ΞΠυϧঢ়ଶͳΒϓϩηεΛఀࢭ

Slide 38

Slide 38 text

͋Εʜʁ͜ͷ࢓૊Έɺ Ͳ͔͜Ͱݟͨ͜ͱ͕͋ΔΑ͏ͳʜʁ

Slide 39

Slide 39 text

ḪΔ͜ͱ೥લʜ

Slide 40

Slide 40 text

΋͏গ͠ḪΖ͏

Slide 41

Slide 41 text

ḪΔ͜ͱ਺೥લʜ

Slide 42

Slide 42 text

'BTU$(*

Slide 43

Slide 43 text

• CGIɿϦΫΤετຖʹϓϩηεੜ੒ɾഁغΛ࣮ߦ • FastCGIɿϦΫΤετຖʹϓϩηεΛੜ੒ɺ࢖͍ճ͢͜ͱͰੑೳUpɻΞΠυ ϧঢ়ଶ͕ଓ͍ͨ৔߹ϓϩηεΛഁغ • KnativeɿॳճϦΫΤετ࣌ʹPodΛੜ੒ɺFunctionͰͳ͚Ε͹࢖͍ճ͢ɻϦ ΫΤετ͕Ұఆظؒಧ͔ͳ͚Ε͹PodΛऴྃ !43 'BTU$(*

Slide 44

Slide 44 text

ࣅͨ࢓૊Έͩʂ

Slide 45

Slide 45 text

• ϓϩΞΫςΟϒੑ • ΞϓϦέʔγϣϯ͕͋Β͔͡Ίىಈ͓ͯ͠Γɺঢ়ଶͷଈ࣌มߋ͸Ͱ͖ͳ͍͕ߴ଎ͳॲཧ͕ Մೳͳੑ࣭ • ىಈͬ͠ͺͳ͠ͳͷͰϦιʔεޮ཰͸ѱ͍ • ࣄલʹαʔόΛىಈͯ͠ΞΫηεʹඋ͑ΔΞϓϩʔν • ϦΞΫςΟϒੑ • ϦΫΤετʹԠͯ͡ΞϓϦέʔγϣϯΛىಈ͢Δੑ࣭ͷ͜ͱ • ىಈͱఀࢭͷίετ͕͋Δ͕ɺϦιʔεޮ཰͸Α͍ • ΞϓϦέʔγϣϯ͸ݱ࣮తͳ࣌ؒͰىಈͯ͘͠Δ͜ͱ͕લఏ !45 ϓϩΞΫςΟϒੑͱϦΞΫςΟϒੑ

Slide 46

Slide 46 text

• ϓϩΞΫςΟϒੑ • ΞϓϦέʔγϣϯ͕͋Β͔͡Ίىಈ͓ͯ͠Γɺঢ়ଶͷଈ࣌มߋ͸Ͱ͖ͳ͍͕ߴ଎ͳॲཧ͕ Մೳͳੑ࣭ • ىಈͬ͠ͺͳ͠ͳͷͰϦιʔεޮ཰͸ѱ͍ • ࣄલʹαʔόΛىಈͯ͠ΞΫηεʹඋ͑ΔΞϓϩʔν • ϦΞΫςΟϒੑ • ϦΫΤετʹԠͯ͡ΞϓϦέʔγϣϯΛىಈ͢Δੑ࣭ͷ͜ͱ • ΞϓϦέʔγϣϯ͸ݱ࣮తͳ࣌ؒͰىಈͯ͘͠Δ͜ͱ͕લఏ • ىಈͱఀࢭͷίετ͕͋Δ͕ɺϦιʔεޮ཰͸Α͍ !46 ϓϩΞΫςΟϒੑͱϦΞΫςΟϒੑ •CGI΍FastCGIɺFaaS͕֘౰ •FastCGI͸Ϧιʔεޮ཰ͱੑೳͷཱ྆ͷͨΊҰఆظؒىಈ •FaaS΋ϦΞΫςΟϒੑΛ࣋ͭϓϥοτϑΥʔϜͷҰͭ

Slide 47

Slide 47 text

• @matsumotoryʹΑΓఏҊ(2017) !47 'BTU$POUBJOFSͱ͍͏ΞʔΩςΫνϟ

Slide 48

Slide 48 text

• Πϯελϯε௥Ճॲཧ͕௿଎Ͱ͋Δ • ֎෦͔Βͷఆظతͳ؂ࢹΛ༻͍ͨݕ஌ͱεέʔϧͩͱཻ౓͕ૈ͍ • VMͷ৔߹ɺىಈ͕ಥൃΞΫηεʹؒʹ߹Θͳ͍έʔε͕͋Δ • Ϧιʔεͷར༻ޮ཰ͷ௿͞ • جຊతʹΠϯελϯε͕ىಈɺϦιʔεΛ઎༗͠ଓ͚Δ !48 'BTU$POUBJOFS͸ͲͷΑ͏ͳ໰୊ʹର͢ΔఏҊ͔

Slide 49

Slide 49 text

No content

Slide 50

Slide 50 text

• FastContainer͸ϗεςΟϯάαʔϏεͱ͍͏ྲྀΕͷ্ʹੜ·Εͨߟ ͑ํ • Knative͸Kubernetes΍Cloud Nativeͱ͍͏ྲྀΕͷ্ʹੜ·Εͨϓ ϩμΫτ • গ͠ҧ͏จ຺͔Βɺಉ͡Α͏ͳ΋ͷ͕ొ৔͖͍ͯͯ͠Δ • ϦΞΫςΟϒͳϓϥοτϑΥʔϜ͕ࠓޙ૿͑Δʁ !50 ,OBUJWFͱࣅͨΞʔΩςΫνϟ͸ଞʹ΋ଘࡏ͢Δ

Slide 51

Slide 51 text

• Knative͸൓ԠతʢϦΞΫςΟϒʣʹΞϓϦέʔγϣϯ΍ϑΝϯΫγϣϯΛ ىಈ͠ɺෛՙʹԠͯࣗ͡ಈ૿ݮ͢Δ • ΞϓϦέʔγϣϯɺϑΝϯΫγϣϯΛ໰ΘͣϦΞΫςΟϒͳ࢓૊Έ͕ࠓޙ૿ ͑ͯ͘ΔͷͰ͸ͳ͍͔ʢAmazon Aurora Serverlessʣ • CGI࣌୅͸HTTPϦΫΤετ͚͕ͩͩͬͨɺݱ୅͸༷ʑͳΠϕϯτʹରͯ͠൓ ԠతʹॲཧΛߦ͍ͬͯ͘ʢEventingͷൣғͳͷͰׂѪʣ !51 ΞʔΩςΫνϟ·ͱΊ

Slide 52

Slide 52 text

ϖϧιφ

Slide 53

Slide 53 text

• ੡඼΍αʔϏεΛσβΠϯ͢Δࡍɺλʔήοτͱͯ͠૝ఆ͢ΔՍۭ ͷϢʔβʔ૾ͷ͜ͱ • KnativeͷλʔήοτͱͳΔϢʔβʔ͸Ͳ͏͍͏ਓ͔ʁͲ͏͍͏໨ త΍ϞνϕʔγϣϯΛ͍࣋ͬͯΔͷ͔ • ͜͏͍͏͜ͱΛܾΊ͓ͯ͘͜ͱͰɺKnativeͷϓϩμΫτͱͯ͠ͷํ ޲ੑ͕ϒϨͳ͍Α͏ʹ͢Δ !53 ϖϧιφʁ

Slide 54

Slide 54 text

• ར༻ऀͱͯ͠͸DeveloperͱOperatorͷ2छྨʹΘ͔Ε͍ͯΔ • Developer • Operator !54 ,OBUJWF4FSWJOHͷར༻ऀ͸Ͳ͏͍͏ϖϧιφ͔

Slide 55

Slide 55 text

• ΠϯϑϥΛҙࣝͤͣʹεςʔτϨεͳΞϓϦέʔγϣϯΛ։ൃɾ࣮ ߦ͢ΔΤϯδχΞ • HobbyistɺBackend SWEɺFull stack SWEɺSREͳͲ • ϢʔβʔετʔϦʔྫ • ෳ਺ͷίʔυΛσϓϩΠ • มߋͷϩʔϧόοΫ • ΞϓϦέʔγϣϯͷ؂ࢹ !55 %FWFMPQFS

Slide 56

Slide 56 text

• Knative ServingͱKubernetesͷಋೖɾ؅ཧ΍૊৫ϙϦγʔɺηΩϡ ϦςΟύονͷద༻ʹϑΥʔΧε • HobbyistɺCluster administratorɺSecurity EngineerͳͲ • ϢʔβʔετʔϦʔ • Knative ServingΫϥελʔΛ࡞੒͢Δ • Ϧιʔεར༻ʹ੍͍ͭͯޚͨ͠Γ՝ۚ͢Δ • ΞϓϦέʔγϣϯͷ؂ࠪ΍ύονద༻ !56 0QFSBUPS

Slide 57

Slide 57 text

• ยํͷࢹ఺͕͚͍ܽͯΔͱɺยํʹෛՙ͕͔͔Δ • ΞϓϦέʔγϣϯ։ൃऀ͸շదʹ։ൃʹઐ೦Ͱ͖Δ • ϓϥοτϑΥʔϜͷӡ༻ଆ͸ϓϥοτϑΥʔϜʹઐ೦Ͱ͖Δ !57 ྆ํͷࢹ఺Λҙ͍ࣝͯ͠Δͷ͸҆৺ײ͕͋Δ

Slide 58

Slide 58 text

·ͱΊ

Slide 59

Slide 59 text

• Knative Servingͷΰʔϧ͸ɺPaaS/FaaSͷ֓೦ΛؚΉαʔόʔϨε ϫʔΫϩʔυͷͨΊͷAPIͱπʔϧΛఏڙ͢Δ͜ͱ • 2018೥9݄࣌఺Ͱ͸ΞʔΩςΫνϟͱAPIͷΈఏڙ͞Ε͍ͯΔঢ় گɻʢ·ͩެࣜͰ͸ͳ͍͕ʣCLIπʔϧ͕ొ৔࢝͠Ί͍ͯΔ • IaaSɺCaaSɺPaaSͱ͍ͬͨج൫ٕज़ͷԆ௕ઢ্ʹ͋ΔϓϩμΫτ ͰɺKnativeͰ͸ͳͯ͘΋͍͍͕ߟ͑ํ͸஌͓ͬͯ͘ͱΑ͍ͱࢥ͏ !59 ·ͱΊ

Slide 60

Slide 60 text

We are hiring! Senior Software Engineer Software Engineer (Site Reliability) Senior Software Engineer (Site Reliability)