Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Kubectl Apply 2019: 闇の魔術に対する防衛術 / Kubectl Apply 2019: Defence Against the Dark Arts

Kubectl Apply 2019: 闇の魔術に対する防衛術 / Kubectl Apply 2019: Defence Against the Dark Arts

A talk at Kubernetes Meetup Tokyo #20 @ Google Japan Office

Kohei Ota

June 18, 2019
Tweet

More Decks by Kohei Ota

Other Decks in Technology

Transcript

  1. ,VCFDUM"QQMZ
    %FGFOTF"HBJOTUUIF%BSL"SUT
    !@JOEVDUPS@
    ,VCFSOFUFT.FFUVQ5PLZP

    View Slide

  2. ,VCFDUM"QQMZ
    ҋͷຐज़ʹର͢Δ๷Ӵज़
    !@JOEVDUPS@
    ,VCFSOFUFT.FFUVQ5PLZP

    View Slide

  3. ,VCFDUM"QQMZ
    ҋͷຐज़ʹର͢Δ๷Ӵज़
    !@JOEVDUPS@
    ,VCFSOFUFT.FFUVQ5PLZP

    View Slide

  4. ࣗݾ঺հ
    w 5XJUUFS!@JOEVDUPS@
    w (JU)VC!JOEVDUPS
    w .-0QT&OHJOFFS!;0;05FDI
    w 'BWPSJUFIPVTF)V⒐FQV⒎

    View Slide

  5. ηογϣϯͷΞδΣϯμ
    w ,VCF$PO&6ݸਓతؾʹͳͬͨৼΓฦΓ NJO

    w ຊ୊ͷ3FDBQ NJO

    w ֶͼΛӡ༻ʹಋೖ͢Δʹ͸ NJO

    w ·ͱΊ

    View Slide

  6. ,VCF$PO&6
    w ৔ॴεϖΠϯ όϧηϩφ
    w ࢀՃऀ਺ਓҎ্
    w γΞτϧਓ ͷ଴ͪϦετ

    w ίϖϯϋʔήϯਓ

    View Slide

  7. ,VCF$PO&6

    View Slide

  8. View Slide

  9. View Slide

  10. View Slide

  11. View Slide

  12. View Slide

  13. View Slide

  14. View Slide

  15. ,VCFDUM"QQMZ
    ҋͷຐज़ʹର͢Δ๷Ӵज़

    View Slide

  16. ҋͷຐज़ʁ

    View Slide

  17. ҋͷຐज़ʁ

    View Slide

  18. ຊ୊ͷલʹͭ֬ೝ

    View Slide

  19. ,VCFDUMBQQMZͷཪଆͰ͸
    Կ͕ى͍ͬͯ͜Δͷ͔

    View Slide

  20. ,VCFSOFUFTΞʔΩςΫνϟͷ
    ͓͞Β͍

    View Slide

  21. View Slide

  22. w ͢΂ͯͷϦΫΤετ͸"1*4FSWFSΛܦ༝
    w FUDE͕4JOHMF4PVSDFPG5SVUI
    w $POUSPMMFS.BOBHFS͔Βݺͼग़͞Εͨ$POUSPMMFS͕࣮ࡍͷ
    ॲཧʢϦιʔεͷ࡞੒΍࡟আʣΛߦ͏

    View Slide

  23. IUUQTHJUIVCDPNKBNJFIBOOBGPSE
    XIBUIBQQFOTXIFOLT

    View Slide

  24. IUUQTTQFBLFSEFDLDPNEBJLVSPTBXB
    LVCFSOFUFTTPVSDFDPEFSFBEJOH

    View Slide

  25. ͜Ε·Ͱͷ,VCFDUMBQQMZͷಈ࡞
    w "QQMZ3FTPVSDF$POpHΛ༻͍ͨʮએݴతͬΆ͍ʯϦιʔε؅ཧ
    w "QQMZͰ౉͞Εͨ$POpHΛύʔε
    w ,VCFSOFUFT্ʹ࣮ࡏ͢ΔϦιʔεΛಡΈऔΓ
    w $SFBUFɺ1BUDIɺ%FMFUFͳͲͷ໋ྩతͳ"1*ϦΫΤετΛߏங

    View Slide

  26. View Slide

  27. એݴతͳΠϯϑϥ؅ཧ
    WT
    ໋ྩతͳ"1*ͷݺͼग़͠ͱ͍͏࣮ଶ

    View Slide

  28. View Slide

  29. View Slide

  30. IUUQTRJJUBDPNULVTVNJ
    JUFNTCGDFGC

    View Slide

  31. ઃఆ߲໨ͷଥ౰ੑʁ
    w ,VCFSOFUFTʹ౉͢$POpH͕ਖ਼͍͜͠ͱΛ୭͕Ͳ͏΍ͬͯ୲อ͢Δͷ͔
    w ESZSVOΛ࢖͏ʁ
    w ΫϥΠΞϯταΠυʹͯɺ"1*ʹ࣮ࡍʹ౉͢ϦΫΤετΛੜ੒͢ΔίϚϯυ
    w ͍ΘΏΔʮESZSVOʯͱҧ͍ɺ"1*αʔόͱ͸΍ΓͱΓ͠ͳ͍
    w PΦϓγϣϯͰZBNMܗࣜͷग़ྗ͸Ͱ͖Δ͕ɺ΍͸ΓϦΫΤετ͕Ͳ͏ͳΔ
    ͔ΛγϛϡϨʔγϣϯͰ͖ΔΘ͚Ͱ͸ͳ͍ͷͰɺ๻͕ͨͪຊདྷཉ͔ͬͨ͠
    ESZSVOͱ͸ҧ͏

    View Slide

  32. View Slide

  33. ˞ࠇຐज़ʹ͖ͭ
    Α͍͜ͷΈΜͳ͸ਅࣅ͠ͳ͍ͰͶʂ

    View Slide

  34. "QQMZ͢Δ௚લʹϢʔβʔ͕
    ,Tʹظ଴͢ΔΞϓϩʔν
    w ԼهͭΛ·ͱΊͯEJ⒎Λ͍͍ײ͡ʹද͍ࣔͨ͠
    w ݱଘ͢ΔϦιʔε
    w ࠷ޙʹద༻ͨ͠$POpH
    w ͜Ε͔Βద༻͍ͨ͠$POpH
    w ࠩ෼ͷΈਖ਼͘͠1BUDIϦΫΤετΛૹΓ͍ͨ

    View Slide

  35. "QQMZ͢Δ௚લʹϢʔβʔ͕
    ,Tʹظ଴͢ΔΞϓϩʔν
    w ԼهͭΛ·ͱΊͯEJ⒎Λ͍͍ײ͡ʹද͍ࣔͨ͠
    w ݱଘ͢ΔϦιʔε
    w ࠷ޙʹద༻ͨ͠$POpH
    w ͜Ε͔Βద༻͍ͨ͠$POpH
    w ࠩ෼ͷΈਖ਼͘͠1BUDIϦΫΤετΛૹΓ͍ͨ

    View Slide

  36. ៉ྷʹϦΫΤετΛੜ੒͢Δ
    ʹ͸Ͳ͏͢΂͖ͳͷ͔

    View Slide

  37. ҆͝৺͍ͩ͘͞ʂ
    ,VCFSOFUFTଆͰରԠ͞Ε·ͨ͠

    View Slide

  38. ,VCFSOFUFTͷมߋ
    w 4FSWFSTJEFBQQMZ
    w "QQMZͷΤϯυϙΠϯτʹ৽ͨͳϑϥά͕௥Ճ
    w ௚ۙͰద༻͞Εͨ$POpHͱͷ%J⒎ΛऔΕΔΑ͏ʹ
    w ΫϥΠΞϯταΠυͰ໋ྩΛ͝ʹΐ͝ʹΐ͠ͳͯ͘Α͘ͳͬͨ

    View Slide

  39. ,VCFSOFUFTͷมߋ
    w ΫϥΠΞϯταΠυ
    w ࣮ࡍͷ,VCFSOFUFTϢʔβ͸એݴతʹϦιʔεΛ؅ཧ͍ͨ͠
    w ϦιʔείϯϑΟάΛू໿
    w $POpH.BQ΍4FDSFUTͳͲͷ୯Ұʹ࡞ΒΕΔϦιʔε
    w ˠ$-*πʔϧʹ,VTUPNJ[FΛ౷߹

    View Slide

  40. ,VCFSOFUFTͷมߋ
    w ,VCFDUMEJ⒎
    w 4FSWFSTJEFBQQMZͱESZSVOͷΞϓϩʔνΛ౷߹
    w ͭ·Γɺݱଘ͢ΔϦιʔε͕ߟྀ͞ΕͨEJ⒎͕ग़ྗ͞ΕΔ
    w ࣍ʹBQQMZ͢Δͱ͖ʹͲͷΑ͏ͳ݁ՌʹͳΔ͔͕໌֬ʹ

    View Slide

  41. ·ͨ·ͨ͊ɺͲ͏ͤ·ͩ
    ϦϦʔε·Ͱ͔͔࣌ؒΔΜͰ͠ΐʁ

    View Slide

  42. ͍ͭ࢖͑ΔΑ͏ʹͳΔͷ͔
    w ,VCFDUMEJ⒎
    w ͔Β$-*ʹ௥Ճ͞Ε͓ͯΓར༻Մೳ
    w "1*4FSWFSଆͷόʔδϣϯࣗମ΋ରԠ͕ඞཁ

    View Slide

  43. ͍ͭ࢖͑ΔΑ͏ʹͳΔͷ͔
    w $-*ʹ͓͚Δ,VTUPNJ[Fͷ౷߹Խ
    w ͔Β$-*ʹ௥Ճ͞Ε͓ͯΓར༻Մೳ
    w ͪ͜Β͸७ਮͳ$MJFOU4JEF'FBUVSFͳͷͰɺαʔόଆͷ
    όʔδϣϯʹґଘͤͣར༻͕Մೳ

    View Slide

  44. ࠓޙͷϩʔυϚοϓ͸ʁ
    w 1SVOFͷվળ
    w ཁ͢Δʹ͍͍ײ͡ʹϦιʔεΛ࡟আ͢Δํ๏
    w ੜ੒͞Εͨ$POpH.BQ΍4FDSFUTͷ͓૟আػೳΛ͚ͭΔ
    w 4UBUVT
    w طଘͷϦιʔελΠϓ΍$3%ͳͲʹର͢Δએݴతมߋͷ
    ίϯτϩʔϥىಈ࣌ͷϒϩοΩϯάΛαϙʔτ

    View Slide

  45. ࠓޙͷϩʔυϚοϓ͸ʁ
    w ,VCFDUM,VTUPNJ[F
    w ౷߹͞Εͨࠓޙʹ͍ͭͯ΋,VTUPNJ[FࣗମͷΞοϓετ
    ϦʔϜ։ൃ͸ܧଓ
    w ,VTUPNJ[Fଆ͕,VCFDUMଆΑΓ΋ৗʹ࠷৽
    w ,VCFDUMͷϓϩδΣΫτ͸LVCFSOFUFTLVCFDUMͷϦϙδ
    τϦʹҠߦத

    View Slide

  46. ·ͱΊ
    w ,VTUPNJ[Fͷ౷߹Խʹؔͯ͠͸ར༻ࣗମ͸೚ҙ
    w طʹಋೖ͍ͯ͠Δਓʹͱͬͯ͸ϥοΩʔ
    w EJ⒎͕࢖͑ΔΑ͏ʹͳͬͨͷͰɺͲ͜ͰͲΜͳࠩ෼͕૸Δ͔͕໌֬ʹ
    w ʢݸਓతʹʣṖͷࠩ෼͕ൃੜͯ͠υΩϡϝϯτړΔ͕࣌ؒݮͬͨ

    View Slide

  47. ͱ͋Δ,VCFSOFUFTར༻ऀ͔ΒΈͨɺ
    ຊηογϣϯʹର͢Δֶͼͱ࣮ફ

    View Slide

  48. ͱ͋Δ,VCFSOFUFTར༻ऀ͔ΒΈͨɺ
    ຊηογϣϯʹର͢Δֶͼͱ࣮ફ

    View Slide

  49. "QQMZͷා͞
    w ਖ਼௚Ͳ͏΍ͬͯಈ͍ͯΔͷ͔Α͘Θ͔Βͣ࢖ͬͯΔʢʣ
    w Կ΋ࠩ෼ൃੜͯ͠ͳ͍͸ͣͳͷʹ$POpHVSFEʹͳͬͯ1PE
    ͕5FSNJOBUJOHʹͳͬͨ͜ͱ͕͋Δ
    w Ϋϥελͱ͔/BNFTQBDFؒҧ͑ͯ"QQMZͪ͠ΌͬͯΞϨͳ
    ͜ͱʹͳͬͨ͜ͱ͕͋Δ

    View Slide

  50. ZBNMϑΝΠϧͷ؅ཧ
    w ؀ڥ͝ͱʹ͍͍ͪͪ࡞Δͷ͸ΊΜͲ͍͘͞
    w Լखʹڞ௨Խ͢Δͱม਺ͷ؅ཧͱ͔େม
    w ઃܭϛεΔͱҋುʹͳΓ͕ͪ
    w ؀ڥYαʔϏε਺ͰͲΜͲΜ਺͕૿͍͑ͯ͘

    View Slide

  51. P
    kubernetes
    @MELANIECEBULA
    kubectl
    apply
    Production
    Deployment
    Canary
    Deployment
    Production
    ConfigMap
    Canary
    ConfigMap
    Production
    Service
    Canary
    Service
    kubernetes cluster
    Dev
    Deployment
    Dev
    ConfigMap
    Dev
    Service
    kubernetes config files
    lots of boilerplate
    repetitive by
    environment
    resources
    environments

    View Slide

  52. :".-ͷzਖ਼͍͠z؅ཧํ๏
    ͕Θ͔Βͳ͍

    View Slide

  53. View Slide

  54. Πϯϑϥߏ੒؅ཧͷύΠϓϥΠϯ
    w ͦ΋ͦ΋,VCFSOFUFT͕:".-Λ࢖͍ͬͯΔͷ͸

    એݴతʹߏ੒؅ཧ͕Ͱ͖Δʢͱ͞Ε͍ͯΔʣ͔Β
    w :".-ͷ೰Έͱ͍͏ΑΓ͸ɺΠϯϑϥߏ੒؅ཧͷ೰Έ
    w ߏ੒؅ཧͷͲ͜ʹ೰ΈΛ๊͍͑ͯΔ͔
    w ূ੻Λ࢒͍ͨ͠
    w ώϡʔϚϯΦϖϨʔγϣϯΛݮΒ͍ͨ͠
    w ࣗಈతʹ൓өͯ͠΋੾Γ໭͕͠Ͱ͖ΔΑ͏ͳ࢓૊Έʹ͍ͨ͠

    View Slide

  55. Θ͕··ϘσΟͰ
    ͢Έ·ͤΜ

    View Slide

  56. ੈͷதʹ͸͍͔ͭ͘ͷํ๏͕͋Δ
    w (JU0QT
    w 8FBWFXPSLT͕ఏএͨ͠ɺ(JUΛ4JOHMF4PVSDFPG5SVUI
    ͱ͢ΔࣗಈԽϑϩʔͷܗ
    w 1VMMܕͷ$%͕(JUͷεςʔλεΛఆظతʹνΣοΫͯ͠؀
    ڥʹ൓ө͢Δ
    w (JUʹ1VTIͯ͠ຊ൪ʹࣗಈ൓ө͢Δ΍ͭ͸$*0QT

    View Slide

  57. ʁʁʁʮ$*0QT͸ΞϨͳͷͰ
    (JU0QTʹ͠Α͏ͥʯ

    View Slide

  58. Θ͔ΔΜ͚ͩͲɾɾɾ
    w (JU0QTେมͦ͏
    w $%πʔϧΛ৽͘͠ݐͯͳ͍ͱ͍͚ͳ͍
    w Πϯϑϥͷߏ੒؅ཧΛ؅ཧ͢ΔͨΊͷ$%πʔϧͷߏ੒؅ཧ
    w ͿͬͪΌ͚ͦΜͳن໛େ͖͘ͳ͍͠ͳ͋

    View Slide

  59. ͳʹʁ
    ,VCFDUMʹEJ⒎͕ೖΔͩͱ

    View Slide

  60. ,VCFDUMEJ⒎͕΋ͨΒ͢ޫ
    w ϝϦοτ
    w $*πʔϧ಺ͰEJ⒎ͱͬͯϩά͕࢒ͤΔΑ͏ʹͳͬͨ
    w ࠷୹Ͱߦ௥Ճ͢Δ͚ͩͳͷͰΒͪ͘Μ
    w σϝϦοτ
    w ࠜຊతͳ໰୊͕ղܾ͢ΔΘ͚Ͱ͸ͳ͍
    w ϩʔϧόοΫͳͲ͸૬มΘΒͣҰఆͷͭΒΈ͕͋Δ
    w ,VCFSOFUFTͷΤίγεςϜͰΧόʔ͍͔ͯ͘͠͠ͳ͍

    View Slide

  61. ͏ʔΜͰ΋ɺZBNM͍ͬͺ͍͋Δͱ؅ཧ
    େมʹͳΔ͠EJ⒎࢖͏γʔϯ࣮͸ݶΒΕ
    ͯΔΜ͡Όͳ͍͔ͳ͋ʁ

    View Slide

  62. ͑ʁ
    ,VCFDUMʹ,VTUPNJ[F͕ೖΔͩͱ

    View Slide

  63. ,VTUPNJ[Fͷ౷߹͕΋ͨΒ͢ޫ
    w ϝϦοτ
    w ܧঝܕͷςϯϓϨʔτ͕ॻ͚Δ
    w ϕʔε͸ͭͷ··ʹɺࣗ༝ʹ֦ு֤ͯ͠؀ڥɾαʔϏεʹల։͕Մೳ
    w %3:͗͢Δڞ௨Խͷ੍ݶ͕ͳ͍
    w σϝϦοτ
    w ࠜຊతʹϑΝΠϧ਺͕࡟ݮͰ͖ΔΘ͚Ͱ͸ͳ͍
    w ग़ྗ݁Ռ͕Ͳ͔͜ʹ࢒ΔΘ͚͡Όͳ͍

    View Slide

  64. ͜ͷͭͷมߋ͕΋ͨΒ͢ޫ
    w ͦͷ࣌ʑʹ͓͚ΔZBNMͷग़ྗ݁Ռ͕อূ͞ΕΔ ,VTUPNJ[F(JU

    w ࣮ࡍʹ࣮ߦ͞Εͨͱ͖ͷ൓өঢ়گ͕Θ͔Δ EJ⒎

    w طଘͷߏ੒ʹରͯ͠େ͖͘Ճ͑Δมߋ͕ͳ͍
    w ࣮֬ʹطଘͷߏ੒ΑΓ͸ϦεΫΛݮΒͭͭࣗ͠ಈԽΛ࣮ݱͰ͖Δ

    View Slide

  65. ౴͑ͷͳ͍͜ͷઓ͍ʹ
    ྑ͍ϥΠϯ͕Ҿ͚ͦ͏ʢʁʣ

    View Slide

  66. ݁Ռߟ͑ͨߏ੒
    w ߏ੒
    w $*0QT,VTUPNJ[FEJ⒎Ͱ͕Μ͹Δ
    w બఆཧ༝
    w ͦΜͳʹن໛͕େ͖͘ͳ͍
    w (JU0QT͕Μ͹ΕΔ΄Ͳӡ༻νʔϜ͕੒ख़͍ͯ͠ͳ͍
    w 4JNQMFJTCFTU

    View Slide

  67. ͜͜Ͱ͍͍ײ͡ͷΞʔΩςΫνϟਤ
    Λγϡοͱग़͢

    View Slide

  68. ແ೦ʢ࣌ؒ଍Γͳ͔ͬͨʣ

    View Slide

  69. ·ͱΊ
    w ,VCFSOFUFTͷΞʔΩςΫνϟ͸ͬ͘͟ΓͰ΋஌͓ͬͯ͘΂͖
    w ࣗ෼ͷӡ༻ίετʹݟ߹͏౒ྗΛ͢Δ
    w "DUJWF%FWFMPQNFOUͳϓϩδΣΫτ͸6QTUSFBNͷػೳʹؔ͢Δ
    ৘ใΛੵۃతʹऔΓೖΕ͍ͯ͘΂͖

    View Slide

  70. ࠷ޙʹ͜Ε͚ͩݴ͍͍ͨ

    View Slide

  71. ,VCFSOFUFTZBQQB
    OBONPXBLBSBO

    View Slide

  72. 5IBOLZPVGPS
    ZPVSBUUFOUJPO

    View Slide