Kubernetesの ダークカナリアリリースツールを作った話

Kubernetesの ダークカナリアリリースツールを作った話

8b22a5740ffd1128cf5037977da337d6?s=128

t10471

May 18, 2018
Tweet

Transcript

  1. Kubernetesͷ μʔΫΧφϦΞϦϦʔεπʔϧ Λ࡞ͬͨ࿩ Kubernetesษڧձ @t10471

  2. μʔΫΧφϦΞϦϦʔεͱ͸ʁ • Ұ෦ͷϢʔβʹ͚ͩߜͬͯϦϦʔε͢Δͷ͕ɺ ΧφϦΞϦϦʔε • ͞Βʹ։ൃऀʹ͚ͩߜͬͯϦϦʔε͢Δͷ͕ɺ μʔΫΧφϦΞϦϦʔε • ग़య https://clonos.jp/knowledge/detail14/

  3. ࡞ͬͨཧ༝ • εςʔδϯά؀ڥ͸͕͋ͬͨຊ൪؀ڥͱઃఆ ͕ҧ͏ͨΊɺϦϦʔεͯ͠੾Γ໭͢ͱ͍͏ͷ ͕Կճ͔͋ͬͨͨΊ…

  4. طଘͷͰ͸μϝͩͬͨͷ͔ʁ • SpinnakerͳͲ΋ݕ౼͕ͨ͠ɺ΍Γ͍ͨ͜ͱʹ ରͯ͠େ͛ͩͬͨͨ͞ΊಠࣗͰ࡞ͬͨ • ͦͷࠒ͸Istio΋1.0Ͱ͸ͳ͔ͬͨͷͰ…

  5. ࢓༷ɾલఏ • طଘͷσϓϩΠπʔϧ(shell)͕طʹଘࡏͨ͠ͷ ͰɺͦΕΛૢ࡞͢Δϥούʔ • serviceɺpodɺhpaΛ੾Γସ͑Δ • DNS͸LBͰղܾ͍ͯ͠Δ • Service͸NodePortΛࢦఆ͍ͯ͠Δ

  6. ϦϦʔεલ blue ϦϦʔε service label: blue μʔΫΧφϦΞϦϦʔε service label: blue

    blue deployment Λ؂ࢹ
  7. μʔΫΧφϦΞϦϦʔε blue ϦϦʔε service label: blue μʔΫΧφϦΞϦϦʔε service label: green

    blue deployment Λ؂ࢹ green greenͷpodΛ1্ཱ͚ͭͩͪ͛Δ
  8. ϦϦʔε blue ϦϦʔε service label: green μʔΫΧφϦΞϦϦʔε service label: green

    green deployment Λ؂ࢹ green greenͷpodΛঃʑʹ૿΍͠ blue ͷpodΛঃʑʹݮΒ͢ نఆ਺ʹୡͨ͠Βgreen deployment Λ؂ࢹ͢Δ
  9. ίϚϯυ • info • ݱࡏͷঢ়ଶΛݟΔ • show • σϓϩΠ͍ͨ͠deployment.yamlΛݟΔ •

    deployment.yaml͸ςϯϓϨʔτʹͳ͍ͬͯΔͷͰɺͦ͜Λࢦఆͨ͠؀ڥͷม ਺ͰຒΊͯ͘ΕΔ • diff • ݱࡏͷঢ়ଶͱϦϦʔε͍ͨ͠΋ͷͷࠩ෼ΛݟΔ • deploydc • μʔΫΧφϦΞϦϦʔεΛߦ͏ • diffbg • blueλάͱgreenλάͷࠩ෼ΛݟΔ • deploy • μʔΫΧφϦΞϦϦʔεΛߦͬͨํ޲ʹserviceͱhpaΛ޲͚Δpodͷ਺Λௐ੔ ͢Δ
  10. ࡞ͬͨײ૝ • Kubernetesͬͯศརͩͳʔ • ͜ͷޙʹclient-goͷଘࡏΛ஌Γɺ͋ʔͱࢥͬ ͨ…

  11. ͋Γ͕ͱ͏͍͟͝·ͨ͠