Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
©2021 Wantedly, Inc. kubefork ࣗઐ༻ͷΫϥελΛॴ༗͍ͯ͠ΔΑ͏ͳ։ൃମݧ CloudNative Days Tokyo 2022 Nov 21, 2022 - Takamichi Omori 1
Slide 2
Slide 2 text
©2022 Wantedly, Inc. *BN 2 Takamichi Omori @onsd_ Engineer at DX Squad Love Kubernetes, Go, etc. Wantedly, Inc.
Slide 3
Slide 3 text
©2022 Wantedly, Inc. %94RVBEͱʁ %FWFMPQFSF9QFSJFODF4RVBE ٕज़ج൫νʔϜͱհ͞ΕΔ͜ͱଟ͍Ͱ͢ ະདྷͷ։ൃମݧΛͭ͘Δ ։ൃऀͷੜ࢈ੑΛ্ͤ͞ΔͨΊʹԿͰ͍ͬͯ͘νʔϜ ৽͍͠.JDSPTFSWJDFͷ։ൃମݧ ෳࡶͳ.JDSPTFSWJDFͰ։ൃ͕؆୯ʹߦ͑ΔΑ͏ͳΈ࡞Γ
Slide 4
Slide 4 text
©2022 Wantedly, Inc. ͢͜ͱ LVCFGPSL ࣗઐ༻ͷΫϥελΛॴ༗͍ͯ͠ΔΑ͏ͳ։ൃମݧ LVCFGPSLͱʁ LVCFGPSLͷΈ LVCFGPSLͷ۩ମతͳ࣮ LVCFGPSLΛࢧ͑ΔDVTUPNDPOUSPMMFS LVCFGPSLͷσϞ LVCFGPSLͷͳΓͨͪ LVCFGPSLͷ͔͍ͭΈͪ
Slide 5
Slide 5 text
©2022 Wantedly, Inc. Kubefork ͱ ࣗઐ༻ͷΫϥελΛ͍࣋ͬͯΔΑ͏ͳମݧ Ұͭͷ։ൃ༻Ϋϥελ͔ΒԾతͳΫϥελΛ࡞ΔΈ Copy on Write ΫϥελΛίϐʔ͢Δͷίετ͕͔͔Δ มߋ͍ͨ͠Օॴ͚ͩมߋ͠ɺ ڞ༗Ͱ͖ΔϦιʔεڞ༗͢Δ ΞΫηε͕͞Ε͍ͯΔͷͰ ଞͷ։ൃऀʹ໎͕͔͔Βͳ͍ ߴ มߋՕॴ͕࠷খݶ ڥʹΞΫηεͰ͖Δ·Ͱ͕ߴ 5
Slide 6
Slide 6 text
©2021 Wantedly, Inc. Photo by Jay Heike on Unsplash LVCFGPSLͷͳΓͨͪ 6
Slide 7
Slide 7 text
©2022 Wantedly, Inc. 7 8BOUFEMZͱϚΠΫϩαʔϏε ϚΠΫϩαʔϏε ΞʔΩςΫνϟ લޙͷίϯϙʔωϯτ ʹLVCFSFOFUFTຊ൪ಋೖ https://docs.wantedly.dev/introduction/technical-overview ʹ&,4Ҡߦྃ
Slide 8
Slide 8 text
©2022 Wantedly, Inc. ϚΠΫϩαʔϏε։ൃͰେͳͭͷ͜ͱ มߋΛૉૣ͘ࢼͤΔ ͷͮ͘Γશൠʹ͓͍ͯେࣄ มߋ͕ྑ͔ͬͨɾѱ͔ͬͨ͜ͱͷϑΟʔυόοΫϧʔϓ ଞਓͷมߋͷӨڹΛड͚ͳ͍ ఆͱҟͳΔϨεϙϯεͷݪҼ୭ʁ ݪҼ͕ࣗҎ֎ʹ͋ͬͨ߹ɺ֬ೝ͕͍͠ ґଘؔΛҙࣝ͢Δඞཁ͕ͳ͍ ͜ͷαʔϏεԿʹґଘ͍ͯ͠Δʁ ։ൃ͢ΔͨΊʹԿʹΞΫηεͰ͖ΔΑ͏ʹ͢Δඞཁ͕͋Δʁ αʔϏεɾػೳ͝ͱʹґଘؔΛ͓֮͑ͯ͘ͷେม
Slide 9
Slide 9 text
©2022 Wantedly, Inc. ΑΓΑ͍։ൃํ๏ େͳ͜ͱΛຬͨ͢։ൃํ๏͋Δʁ wมߋΛૉૣ͘ࢼͤΔ wଞਓͷมߋͷӨڹΛड͚ͳ͍ wґଘؔΛҙࣝ͠ͳ͍ ϩʔΧϧͰ։ൃ͢Δ εςʔδϯάڥʹσϓϩΠ͢Δ 5FMFQSFTFODFΛ͏ ϚΠΫϩαʔϏε։ൃͷख๏Λൺֱ 8BOUFEMZͰߦΘΕ͍ͯͨ։ൃख๏Λൺֱ
Slide 10
Slide 10 text
©2022 Wantedly, Inc. طଘͷख๏ʢ̍ʣ ϩʔΧϧͰ։ൃ͢Δ ˓มߋΛૉૣ͘ࢼͤΔ %PDLFSCVJMEΛͨͳͯ͘Α͍ ˓ଞਓͷมߋͷӨڹΛड͚ͳ͍ खݩͰ։ൃ͍ͯ͠ΔͷͰଞਓͷӨڹड͚ͳ͍ ✕ґଘؔΛҙࣝ͢Δඞཁ͕ͳ͍ αʔϏεؒͷґଘؔΛΔඞཁ͕͋Δ ։ൃڥͷϝϯςφϯείετ͕͔͔Δ 10
Slide 11
Slide 11 text
©2022 Wantedly, Inc. طଘͷख๏ʢ̎ʣ εςʔδϯάڥʹσϓϩΠ͢Δ ˓ґଘؔΛҙࣝ͢Δඞཁ͕ͳ͍ ɹಈ͍͍ͯΔγεςϜͷҰ෦ΛೖΕସ͑Δ͚ͩ ✕มߋΛૉૣ͘ࢼͤΔ ɹ%PDLFSCVJMEΛͭඞཁ͕͋Δ ✕ଞਓͷมߋͷӨڹΛड͚ͳ͍ ɹڞ༻ͷڥͳͷͰɺଞͷ։ൃऀͷӨڹΛड͚Δ 11
Slide 12
Slide 12 text
©2022 Wantedly, Inc. طଘͷख๏ʢ̏ʣ 5FMFQSFTFODF ৄ͘͠IUUQTXXXUFMFQSFTFODFJP ˓มߋΛૉૣ͘ࢼͤΔ ɹEPDLFSCVJMEΛͭඞཁ͕ͳ͍ ˓ґଘؔΛҙࣝ͢Δඞཁ͕ͳ͍ ɹಈ͍͍ͯΔγεςϜͷதͷϦΫΤετ͕खݩʹඈΜͰ͘Δ ✕ଞਓͷมߋͷӨڹΛड͚ͳ͍ ɹڞ༻ͷΫϥελͰ࣮ߦ͢ΔͱଞਓͷϦΫΤετखݩʹདྷͯ͠·͏ $/$'4BOECPY1SPKFDU બͨ͠TFSWJDFͷϦΫΤετΛ ϩʔΧϧʹྲྀ͢͜ͱ͕Ͱ͖Δπʔϧ 12
Slide 13
Slide 13 text
©2022 Wantedly, Inc. Λຬͨ͢։ൃख๏ *TUJPUFMFQSFTFODF *TUJPͷϦΫΤετϧʔςΟϯάΛ׆༻ ಛఆͷϦΫΤετ͚ͩΛखݩʹϧʔςΟϯά ଞͷϦΫΤετڞ༻ͷڥΛ௨Δ LVCFGPSLͷߟ͑ํ͔͜͜Βग़ൃ ˓มߋΛૉૣ͘ࢼͤΔ %PDLFSCVJMEΛͨͳͯ͘Α͍ ˓ଞਓͷมߋͷӨڹΛड͚ͳ͍ खݩͰ։ൃ͍ͯ͠ΔͷͰଞਓͷӨڹड͚ͳ͍ ˓ґଘؔΛҙࣝ͢Δඞཁ͕ͳ͍ ಈ͍͍ͯΔγεςϜͷதͷϦΫΤετ͕खݩʹඈΜͰ͘Δ ߋʹৄͪ͘͜͠ΒɿIUUQTTQFBLFSEFDLDPNNPSVYJTUJPJOUFHSBUFEUFMFQSFTFODF 13
Slide 14
Slide 14 text
©2022 Wantedly, Inc. *TUJPUFMFQSFTFODF͔ΒͷਐԽ HBUFXBZϨΠϠͷ࣮ TPNFEFWXBOUFEMZDPN GPSLFEBTPNFEFWXBOUFEMZDPN (BUFXBZ ࣗͷมߋʹϧʔςΟϯά͢ΔͨΊʹ ಛผͳIFBEFS͕ඞཁͩͬͨ (BUFXBZϨΠϠͷಋೖʹΑΓIFBEFSͳ͠Ͱ ࣗͷมߋʹ౸ୡͰ͖ΔΑ͏ʹ 14 ࣮Ϋϥελ͔Β࡞͞ΕΔԾΫϥελΛࢦ͢ 'PSLFE"͕7JSUVBM$MVTUFSʹ֘ ϔομΛͬͯϧʔςΟϯάΛૢ࡞͢Δମݧ͔ΒɺΫϥελΛίϐʔ͢ΔΑ͏ͳମݧʹ 7JSUVBM$MVTUFS
Slide 15
Slide 15 text
©2022 Wantedly, Inc. LVCFGPSL LVCFGPSLͷ ϦΫΤετϧʔςΟϯάͳͲɺ 7JSUVBM$MVTUFSΛ࣮ݱ͢ΔͨΊʹ ଟ͘ͷϦιʔε͕ඞཁ ͦ͜ͰϦιʔεΛҰׅͯ͠ཧ͢Δ ΧελϜίϯτϩʔϥʔΛ࣮ GPSLϦιʔεΛBQQMZ͢Δ͜ͱͰ ඞཁʹͳΔϦιʔεΛશͯ࡞Ͱ͖Δ Α͏ʹ ͜͜·ͰͰݱࡏͷΈ͕ LVCFGPSLͱݺͿΑ͏ʹ 15
Slide 16
Slide 16 text
©2022 Wantedly, Inc. 5FSNJOPMPHZ 7JSUVBM$MVTUFS ԾతͳLVCFSFOUFTΫϥελ 'PSL*EFOUJ fi FS 'PSL͢Δ 7JSUVBMDMVTUFSΛ۠ผ͢Δࣝผࢠ TIBSFE͔ΒWJSUVBMDMVTUFSΛ ಛఆͷGPSLJEFOUJ fi FSΛͱʹ ΞΫηεͰ͖Δ ࡞͢Δ͜ͱ 4ͭͷϚΠΫϩαʔϏε͔ΒͳΔγεςϜͱɺA,B ͷ fork ͞ΕͨΫϥελ 16
Slide 17
Slide 17 text
©2022 Wantedly, Inc. 5FSNJOPMPHZ 7JSUVBM$MVTUFS ԾతͳLVCFSFOUFTΫϥελ 'PSL*EFOUJ fi FS 'PSL͢Δ 7JSUVBMDMVTUFSΛ۠ผ͢Δࣝผࢠ TIBSFE͔ΒWJSUVBMDMVTUFSΛ ಛఆͷGPSLJEFOUJ fi FSΛͱʹ ΞΫηεͰ͖Δ ࡞͢Δ͜ͱ 4ͭͷϚΠΫϩαʔϏε͔ΒͳΔγεςϜͱɺA,B ͷ fork ͞ΕͨΫϥελ 17
Slide 18
Slide 18 text
©2022 Wantedly, Inc. 5FSNJOPMPHZ 7JSUVBM$MVTUFS ԾతͳLVCFSFOUFTΫϥελ 'PSL*EFOUJ fi FS 'PSL͢Δ 7JSUVBMDMVTUFSΛ۠ผ͢Δࣝผࢠ TIBSFE͔ΒWJSUVBMDMVTUFSΛ ಛఆͷGPSLJEFOUJ fi FSΛͱʹ ΞΫηεͰ͖Δ ࡞͢Δ͜ͱ 4ͭͷϚΠΫϩαʔϏε͔ΒͳΔγεςϜͱɺA,B ͷ fork ͞ΕͨΫϥελ 18
Slide 19
Slide 19 text
©2022 Wantedly, Inc. 5FSNJOPMPHZ 7JSUVBM$MVTUFS ԾతͳLVCFSFOUFTΫϥελ 'PSL*EFOUJ fi FS 'PSL͢Δ 7JSUVBMDMVTUFSΛ۠ผ͢Δࣝผࢠ TIBSFE͔ΒWJSUVBMDMVTUFSΛ ಛఆͷGPSLJEFOUJ fi FSΛͱʹ ΞΫηεͰ͖Δ ࡞͢Δ͜ͱ 4ͭͷϚΠΫϩαʔϏε͔ΒͳΔγεςϜͱɺA,B ͷ fork ͞ΕͨΫϥελ 19
Slide 20
Slide 20 text
©2021 Wantedly, Inc. Photo by Deva Darshan on Unsplash LVCFGPSLͷ͔͍ͭΈͪ 20
Slide 21
Slide 21 text
©2022 Wantedly, Inc. ,VCFGPSLͷ͔͍ͭΈͪ Ϣʔεέʔε ॳఆ͍ͯͨ͠Ϣʔεέʔε wΞϓϦέʔγϣϯ։ൃࢧԉ wखಈςετࢧԉ Ҏ্ͷӡ༻Λܦͯൃݟ͞ΕͨϢʔεέʔε w1VMM3FRVFTU1SFWJFX w'FBUVSF fl BHͷͨΊͷڥੜ 21
Slide 22
Slide 22 text
©2022 Wantedly, Inc. *TUJPͷϦΫΤετϧʔςΟϯάΛ׆༻ ಛఆͷϦΫΤετ͚͕ͩϧʔςΟϯά͞ΕΔ 4FSWJDF %FQMPZNFOUΛ࡞ 4FSWJDFʹUFMFQSFTFODFΛ࣮ߦ͠ Ϋϥελ͔ΒͷϦΫΤετΛखݩʹϧʔςΟϯά ࣾͰMPDBMGPSLͱݺΕ͍ͯΔ ఆ͍ͯͨ͠ϢʔεέʔεɿΞϓϦέʔγϣϯ։ൃࢧԉ 22
Slide 23
Slide 23 text
©2022 Wantedly, Inc. ఆ͍ͯͨ͠Ϣʔεέʔεɿखಈςετࢧԉ 23 *TUJPͷϦΫΤετϧʔςΟϯάΛ׆༻ ಛఆͷϦΫΤετ͚͕ͩϧʔςΟϯά͞ΕΔ 4FSJWJDF %FQMPZNFOUΛ࡞ ͜͜Ͱ࡞͢Δ%FQMPZNFOU͕ࣗมߋͨ͠ *NBHFΛઃఆ͓ͯ͘͠ WJSUVBMDMVTUFS͕࡞Ͱ͖Ε ϒϥβ͔Βมߋ͕ࢼͤΔ खಈςετɾϨϏϡʔͳͲͷ༻్Ͱར༻ ࣾͰSFNPUFGPSLͱݺΕ͍ͯΔ
Slide 24
Slide 24 text
©2022 Wantedly, Inc. ͪͳΈʹɿࣾͷ LVCF LVCFDUMͷϥούʔЋͷίϚϯυ Ϋϥελ͝ͱͷΞΫηεΛӅṭͨ͠Γ 7JSUVBMDMVTUFSͷ࡞UFMFQSFTFODF ΛશࣗಈͰߦ͏ LVCFDUMʹͳ͍ศརػೳ͕ར༻Մೳ LVCFGPSL 24 มߋ͕ೖͬͨ7JSUVBM$MVTUFSͷ࡞Λ ࣗಈͰߦ͏ LVCFGPSLSFNPUF
Slide 25
Slide 25 text
©2022 Wantedly, Inc. ৽͍͠Ϣʔεέʔε: Pull Request Preview 3FWJFXڥͷࣗಈੜ 13࡞࣌ʹWJSUVBMDMVTUFSΛࣗಈੜ ੜ͞Εͨ63-ʹΞΫηε͢ΔͱࢼͤΔ .JDSPTFSWJDFͰ1SFWJFX ֎͔Β౸ୡͰ͖ͳ͍.JDSPTFSWJDF ʹϧʔςΟϯάՄೳ ੜ͞Εͨ63-ʹΞΫηε͢Δ͜ͱͰ Ұ෦͚ͩมߋ͞ΕͨγεςϜΛࢼͤΔ ඇΤϯδχΞʹࢼͯ͠Β͏ͱ͖ศར ڥߏங͕͍Βͳ͍ TBOECPYͷσʔλΛ͔ͭͬͯࢼͤΔ 25
Slide 26
Slide 26 text
©2022 Wantedly, Inc. ৽͍͠Ϣʔεέʔε: Pull Request Preview 3FWJFXڥͷࣗಈੜ 13࡞࣌ʹWJSUVBMDMVTUFSΛࣗಈੜ ੜ͞Εͨ63-ʹΞΫηε͢ΔͱࢼͤΔ .JDSPTFSWJDFͰ1SFWJFXͰ͖Δ ֎͔Β౸ୡͰ͖ͳ͍.JDSPTFSWJDF ʹϧʔςΟϯάՄೳ ੜ͞Εͨ63-ʹΞΫηε͢Δ͜ͱͰ Ұ෦͚ͩมߋ͞ΕͨγεςϜΛࢼͤΔ ඇΤϯδχΞʹࢼͯ͠Β͏ͱ͖ศར ڥߏங͕͍Βͳ͍ TBOECPYͷσʔλΛ͔ͭͬͯࢼͤΔ 26
Slide 27
Slide 27 text
©2022 Wantedly, Inc. Pull Request Preview URL ͷΈ 27 ։ൃऀ͕(JU)VCʹมߋΛQVTI มߋ͝ͱʹ%PDLFSJNBHFΛ࡞ %PDLFSJNBHFͷ४උ͕Ͱ͖ͨΒ 'PSLϦιʔεΛΫϥελʹ"QQMZ 7JSUVBM$MVTUFSͷ४උ͕Ͱ͖ͨΒ 13ʹίϝϯτ ίϝϯτ͞Εͨ63-ʹΞΫηε
Slide 28
Slide 28 text
©2022 Wantedly, Inc. ৽͍͠Ϣʔεέʔε: Feature Flag ͷͨΊͷڥੜ 'FBUVSF'MBH ΞϓϦέʔγϣϯͷڍಈΛมߋ͢ΔͨΊͷج൫ දతͳྫɿ"#UFTU 8BOUFEMZͷج൫)FBEFSͰ੍ޚՄೳ 9GFBUVSF fl BHT\TPNF"#UFTUz"z^ 'PSLJEFOUJ fi FSͱಉ͡Α͏ʹGFBUVSF fl BH͢Δ͜ͱͰ ޙଆͷNJDSPTFSWJDFͷڍಈͰม͑ΒΕΔ 28 )FBEFSΛ੍ͬͨޚ
Slide 29
Slide 29 text
©2022 Wantedly, Inc. ৽͍͠Ϣʔεέʔε: Feature Flag ͷͨΊͷڥੜ 'FBUVSF'MBH(BUFXBZ ಛఆͷGFBUVSF fl BH͕༗ޮʹͳͬͨԾΫϥελ͕࡞Մೳ TPNFEFWXBOUFEMZDPN TPNFGFBUVSFFOBCMFETPNFEFWXBOUFEMZDPN ྫ "#UFTUͷಛఆͷWBSJBOUͰදࣔ ϦϦʔεલͷػೳΛ༗ޮʹ͢Δ 3BJMTͷΞϓϦέʔγϣϯͷBTTFUT ͚ͩखݩͷϦιʔεΛ͏ 29 'FBUVSF fl BHͳΒ৽نͷQPEແ͠Ͱར༻Մೳ
Slide 30
Slide 30 text
©2022 Wantedly, Inc. ͜͜·Ͱͷ·ͱΊ ,VCFGPSL wҰͭͷΫϥελ͔ΒԾΫϥελΛ࡞Ͱ͖Δ͘͠Έ wϢʔεέʔε wΞϓϦέʔγϣϯ։ൃࢧԉ wଞͷ։ൃऀʹ໎Λ͔͚ͣʹUFMFQSFTFODFͰ͖Δ wखಈςετࢧԉ wखݩʹΞϓϦέʔγϣϯͷಈ࡞ڥ͕ͳͯ͘มߋΛ࣮ࡍͷϦΫΤετΛͬͯࢼͤΔ w1VMM3FRVFTU1SFWJFX wͲΜͳαʔϏεͰ৮Γͳ͕ΒࢼͤΔڥͷࣗಈੜ w'FBUVSF'MBHͷͨΊͷڥੜ wσόοάʹศརͳڥɺ"#ςετͷൺֱͷͨΊͷڥͷੜ 30
Slide 31
Slide 31 text
©2021 Wantedly, Inc. Photo by Kaleidico on Unsplash LVCFGPSLͷৄ͍͠Έ 31
Slide 32
Slide 32 text
©2022 Wantedly, Inc. ߏཁૉ Service Mesh *TUJPͷϦΫΤετϧʔςΟϯάΛ׆༻ ಛఆͷϔομ͕͍͍ͯΔϦΫΤετΛ ࢦఆͨ͠TFSWJDFʹϧʔςΟϯά͢Δ 32 Gateway "NCBTTBEPSͷIFBEFS༩ػೳΛ׆༻ ϗετ໊ͱϔομͷରԠ͚Λߦ͏
Slide 33
Slide 33 text
©2022 Wantedly, Inc. ߏཁૉ Service Mesh *TUJPͷϦΫΤετϧʔςΟϯάΛ׆༻ ಛఆͷϔομ͕͍͍ͯΔϦΫΤετΛ ࢦఆͨ͠TFSWJDFʹϧʔςΟϯά͢Δ 33 Gateway "NCBTTBEPSͷIFBEFS༩ػೳΛ׆༻ ϗετ໊ͱϔομͷରԠ͚Λߦ͏
Slide 34
Slide 34 text
©2022 Wantedly, Inc. ߏཁૉ apiVersion: networking.istio.io/v1beta1 kind: VirtualService metadata: labels: fork.k8s.wantedly.com/service: backend name: backend namespace: backend spec: hosts: - backend http: - match: - headers: x-fork-identifier: exact: many-todo-red route: - destination: host: backend-kubefork-many-todo-red - route: - destination: host: backend Service Mesh *TUJPͷϦΫΤετϧʔςΟϯάΛ׆༻ ಛఆͷϔομ͕͍͍ͯΔϦΫΤετΛ ࢦఆͨ͠TFSWJDFʹϧʔςΟϯά͢Δ 34 Gateway "NCBTTBEPSͷIFBEFS༩ػೳΛ׆༻ ϗετ໊ͱϔομͷରԠ͚Λߦ͏
Slide 35
Slide 35 text
©2022 Wantedly, Inc. ߏཁૉ apiVersion: networking.istio.io/v1beta1 kind: VirtualService metadata: labels: fork.k8s.wantedly.com/service: backend name: backend namespace: backend spec: hosts: - backend http: - match: - headers: x-fork-identifier: exact: many-todo-red route: - destination: host: backend-kubefork-many-todo-red - route: - destination: host: backend Service Mesh *TUJPͷϦΫΤετϧʔςΟϯάΛ׆༻ ಛఆͷϔομ͕͍͍ͯΔϦΫΤετΛ ࢦఆͨ͠TFSWJDFʹϧʔςΟϯά͢Δ 35 Gateway "NCBTTBEPSͷIFBEFS༩ػೳΛ׆༻ ϗετ໊ͱϔομͷରԠ͚Λߦ͏
Slide 36
Slide 36 text
©2022 Wantedly, Inc. ߏཁૉ Service Mesh *TUJPͷϦΫΤετϧʔςΟϯάΛ׆༻ ಛఆͷϔομ͕͍͍ͯΔϦΫΤετΛ ࢦఆͨ͠TFSWJDFʹϧʔςΟϯά͢Δ 36 Gateway "NCBTTBEPSͷIFBEFS༩ػೳΛ׆༻ ϗετ໊ͱϔομͷରԠ͚Λߦ͏
Slide 37
Slide 37 text
©2022 Wantedly, Inc. ߏཁૉ apiVersion: getambassador.io/v2 kind: Mapping metadata: labels: fork.k8s.wantedly.com/manager: kubefork-manager name: backend-todo-test-many-todo-red namespace: emissary ownerReferences: spec: allow_upgrade: - websocket ambassador_id: - default add_request_headers: x-fork-identifier: many-todo-red x-forwarded-host: '%REQ(:authority)%' host: many-todo-red.backend.todo.test host_rewrite: backend.backend prefix: / rewrite: "" service: backend.backend timeout_ms: 90000 Service Mesh *TUJPͷϦΫΤετϧʔςΟϯάΛ׆༻ ಛఆͷϔομ͕͍͍ͯΔϦΫΤετΛ ࢦఆͨ͠TFSWJDFʹϧʔςΟϯά͢Δ 37 Gateway "NCBTTBEPSͷIFBEFS༩ػೳΛ׆༻ ϗετ໊ͱϔομͷରԠ͚Λߦ͏
Slide 38
Slide 38 text
©2022 Wantedly, Inc. ߏཁૉ apiVersion: getambassador.io/v2 kind: Mapping metadata: labels: fork.k8s.wantedly.com/manager: kubefork-manager name: backend-todo-test-many-todo-red namespace: emissary ownerReferences: spec: allow_upgrade: - websocket ambassador_id: - default add_request_headers: x-fork-identifier: many-todo-red x-forwarded-host: '%REQ(:authority)%' host: many-todo-red.backend.todo.test host_rewrite: backend.backend prefix: / rewrite: "" service: backend.backend timeout_ms: 90000 Service Mesh *TUJPͷϦΫΤετϧʔςΟϯάΛ׆༻ ಛఆͷϔομ͕͍͍ͯΔϦΫΤετΛ ࢦఆͨ͠TFSWJDFʹϧʔςΟϯά͢Δ 38 Gateway "NCBTTBEPSͷIFBEFS༩ػೳΛ׆༻ ϗετ໊ͱϔομͷରԠ͚Λߦ͏
Slide 39
Slide 39 text
©2022 Wantedly, Inc. 7JSUVBMDMVTUFSͷ࡞ 7JSUVBM$MVTUFSʹඞཁͳϦιʔε w%FQMPZNFOU w4FSWJDF w7JSUVBM4FSWJDF w.BQQJOH 39 'PSLϦιʔε ্هͷϦιʔεΛҰׅͯ͠࡞͢Δ 'PSLϦιʔεΛBQQMZ͢Δͱ 7JSUVBMDMVTUFS͕࡞͞ΕΔମݧ 'PSLϦιʔεLVCFGPSLDPOUSPMMFS͕ఏڙɾཧ͢Δ
Slide 40
Slide 40 text
©2022 Wantedly, Inc. 7JSUVBMDMVTUFSͷ࡞ apiVersion: fork.k8s.wantedly.com/v1beta1 kind: Fork metadata: generation: 1 labels: fork.k8s.wantedly.com/identifier: red name: kubefork-red namespace: option spec: deployments: replicas: 1 selector: matchLabels: app: option template: metadata: labels: app: red role: fork spec: containers: - env: - name: FORK_IDENTIFIER value: red image: onsd/todo-option:other name: todo-option resources: {} identifier: red manager: emissary/kubefork-manager services: selector: matchLabels: app: option 7JSUVBM$MVTUFSʹඞཁͳϦιʔε w%FQMPZNFOU w4FSWJDF w7JSUVBM4FSWJDF w.BQQJOH 40 'PSLϦιʔε ্هͷϦιʔεΛҰׅͯ͠࡞͢Δ 'PSLϦιʔεΛBQQMZ͢Δͱ 7JSUVBMDMVTUFS͕࡞͞ΕΔମݧ 'PSLϦιʔεLVCFGPSLDPOUSPMMFS͕ఏڙɾཧ͢Δ
Slide 41
Slide 41 text
©2022 Wantedly, Inc. 7JSUVBMDMVTUFSͷ࡞ apiVersion: fork.k8s.wantedly.com/v1beta1 kind: Fork metadata: generation: 1 labels: fork.k8s.wantedly.com/identifier: red name: kubefork-red namespace: option spec: deployments: replicas: 1 selector: matchLabels: app: option template: metadata: labels: app: red role: fork spec: containers: - env: - name: FORK_IDENTIFIER value: red image: onsd/todo-option:other name: todo-option resources: {} identifier: red manager: emissary/kubefork-manager services: selector: matchLabels: app: option 7JSUVBM$MVTUFSʹඞཁͳϦιʔε w%FQMPZNFOU w4FSWJDF w7JSUVBM4FSWJDF w.BQQJOH 41 'PSLϦιʔε ্هͷϦιʔεΛҰׅͯ͠࡞͢Δ 'PSLϦιʔεΛBQQMZ͢Δͱ 7JSUVBMDMVTUFS͕࡞͞ΕΔମݧ 'PSLϦιʔεLVCFGPSLDPOUSPMMFS͕ఏڙɾཧ͢Δ
Slide 42
Slide 42 text
©2022 Wantedly, Inc. 7JSUVBMDMVTUFSͷ࡞ apiVersion: fork.k8s.wantedly.com/v1beta1 kind: Fork metadata: generation: 1 labels: fork.k8s.wantedly.com/identifier: red name: kubefork-red namespace: option spec: deployments: replicas: 1 selector: matchLabels: app: option template: metadata: labels: app: red role: fork spec: containers: - env: - name: FORK_IDENTIFIER value: red image: onsd/todo-option:other name: todo-option resources: {} identifier: red manager: emissary/kubefork-manager services: selector: matchLabels: app: option 7JSUVBM$MVTUFSʹඞཁͳϦιʔε w%FQMPZNFOU w4FSWJDF w7JSUVBM4FSWJDF w.BQQJOH 42 'PSLϦιʔε ্هͷϦιʔεΛҰׅͯ͠࡞͢Δ 'PSLϦιʔεΛBQQMZ͢Δͱ 7JSUVBMDMVTUFS͕࡞͞ΕΔମݧ 'PSLϦιʔεLVCFGPSLDPOUSPMMFS͕ఏڙɾཧ͢Δ
Slide 43
Slide 43 text
©2022 Wantedly, Inc. 7JSUVBMDMVTUFSͷ࡞ apiVersion: fork.k8s.wantedly.com/v1beta1 kind: Fork metadata: generation: 1 labels: fork.k8s.wantedly.com/identifier: red name: kubefork-red namespace: option spec: deployments: replicas: 1 selector: matchLabels: app: option template: metadata: labels: app: red role: fork spec: containers: - env: - name: FORK_IDENTIFIER value: red image: onsd/todo-option:other name: todo-option resources: {} identifier: red manager: emissary/kubefork-manager services: selector: matchLabels: app: option 7JSUVBM$MVTUFSʹඞཁͳϦιʔε w%FQMPZNFOU w4FSWJDF w7JSUVBM4FSWJDF w.BQQJOH 43 'PSLϦιʔε ্هͷϦιʔεΛҰׅͯ͠࡞͢Δ 'PSLϦιʔεΛBQQMZ͢Δͱ 7JSUVBMDMVTUFS͕࡞͞ΕΔମݧ 'PSLϦιʔεLVCFGPSLDPOUSPMMFS͕ఏڙɾཧ͢Δ
Slide 44
Slide 44 text
©2022 Wantedly, Inc. kubefork ʹؔ࿈͢ΔϦιʔε 44 ਫ৭Ͱғ·Ε͍ͯΔͷ͕WJSUVBMDMVTUFSͷ࡞ʹඞཁͳϦιʔε
Slide 45
Slide 45 text
©2022 Wantedly, Inc. LVCFGPSLDPOUSPMMFS ͕044ʹͳΓ·ͨ͠ (JU)VCʹͯެ։த 45 https://github.com/wantedly/kubefork-controller
Slide 46
Slide 46 text
©2022 Wantedly, Inc. LVCFGPSLDPOUSPMMFSʹؚ·Ε͍ͯΔͷ $POUPSPMMFSͷ࣮ ,VCFGPSLͷ࣮ݱʹඞཁͳ࣮શͯ LVCFGPSLͱʁͱ͍ͬͨͱ͜Ζ͔Βɺ֤छϦιʔεͷઆ໌·Ͱ LVCFGPSLͷυΩϡϝϯτ 46 'PSLϦιʔεΛੜ͢ΔͨΊͷ$-* LVCFGPSLDUM
Slide 47
Slide 47 text
©2022 Wantedly, Inc. σϞ 47 5PEPදࣔαʔϏε ̏ͭͷαʔϏε͔ΒͳΔ 'SPOUFOE #BDLFOE͔ΒUPEPΛऔಘ #BDLFOE 5PEPͷϦετΛ͍࣋ͬͯΔ ϦΫΤετ͕དྷΔͱɺ0QUJPO͔Β 5PEPͷ৭Λऔಘͯ͠ฦ͢ 0QUJPO 5PEPͷ৭Λฦ͢αʔϏε
Slide 48
Slide 48 text
©2022 Wantedly, Inc. σϞ 48 7JSUVBM$MVTUFS ඞͣ৭Λฦ͢มߋΛPQUJPOͰࢼͨ͢Ίʹ มߋ͕ೖͬͨWJSUVBMDMVTUFSΛ࡞͢Δ GPSLJEFOUJ fi FSSFEʹͨ͠ SFEUPEPUFTUͰΞΫηεՄೳ
Slide 49
Slide 49 text
©2022 Wantedly, Inc. σϞ 49 7JSUVBM$MVTUFS ෳͷมߋ͕ೖͬͨ 7JSUVBM$MVTUFS࡞Մೳ
Slide 50
Slide 50 text
©2022 Wantedly, Inc. LVCFGPSLDPOUSPMMFSͷվળҊ (BUFXBZϨΠϠͷࠩ͠ସ͑ʹରԠ ݱঢ়"NCBTTBEPSͱີ݁߹ )PTU໊͝ͱʹϔομΛ͚Δػೳ͕͋ΕଞͷHBUFXBZͰ͍͍ͣ ݱঢ়ϔομൖΞϓϦέʔγϣϯͰ࣮͢Δඞཁ͕͋Δ ΞϓϦέʔγϣϯͷରԠແ͠Ͱϔομൖ͕࣮ݱͰ͖ͳ͍͔ʁ )FBEFS1SPQBHBUJPOػೳͷఏڙ 50
Slide 51
Slide 51 text
©2022 Wantedly, Inc. ·ͱΊ 51 kubefork ҰͭͷΫϥελ͔ΒԾతͳΫϥελΛ࡞ มߋΛͲΜͲΜࢼ͢͜ͱ͕Ͱ͖ΔڥΛ࡞Δ େࣄͳͷ࣍ͷ̎ͭ wϔομΛͱʹͨ͠ϦΫΤετϧʔςΟϯά wϗετ໊ͱϔομͷରԠ͚ kubefork-controller ΧελϜϦιʔεΛͱʹԾతͳΫϥελΛ࡞ (JU)VCʹͯެ։த
Slide 52
Slide 52 text
©2022 Wantedly, Inc. ͋Γ͕ͱ͏͍͟͝·ͨ͠ 52