Strategi panyebaran di Kubernetes: rolling, recreate, blue/green, canary, dark (uji A/B)

Catetan tarjamahan: Tinjauan ieu ti Weaveworks ngenalkeun strategi peluncuran aplikasi anu pang populerna sareng nunjukkeun kumaha anu paling maju tiasa dilaksanakeun nganggo operator Kubernetes Flagger. Hal ieu ditulis dina basa basajan tur ngandung diagram visual nu ngidinan malah insinyur novice ngartos masalah.

Strategi panyebaran di Kubernetes: rolling, recreate, blue/green, canary, dark (uji A/B)
diagram dicokot tina resensi séjén strategi rollout dijieun dina Leyuran Wadahna

Salah sahiji tantangan pangbadagna dina ngamekarkeun aplikasi asli awan ayeuna nyaéta nyepetkeun panyebaran. Dina pendekatan microservices, pamekar geus gawé bareng jeung ngarancang aplikasi lengkep modular, sahingga tim béda pikeun sakaligus nulis kode jeung nyieun parobahan aplikasi.

Panyebaran anu langkung pondok sareng langkung sering ngagaduhan kauntungan ieu:

  • Waktu ka pasar dikirangan.
  • fitur anyar ngahontal pamaké leuwih gancang.
  • Eupan balik pamaké ngahontal tim ngembangkeun leuwih gancang. Ieu hartosna tim tiasa nambihan fitur sareng ngalereskeun masalah langkung gancang.
  • Moral pamekar ningkat: langkung seueur fitur dina pamekaran langkung pikaresepeun pikeun dianggo.


Tapi nalika frékuénsi sékrési ningkat, kamungkinan pangaruh négatip kana réliabilitas aplikasi atanapi pangalaman pangguna ogé ningkat. Éta sababna penting pikeun operasi sareng tim DevOps ngawangun prosés sareng ngatur strategi panyebaran ku cara anu ngaminimalkeun résiko pikeun produk sareng pangguna. (Anjeun tiasa langkung jéntré ngeunaan otomatisasi pipa CI/CD di dieu.)

Dina postingan ieu, urang bakal ngabahas rupa-rupa strategi panyebaran di Kubernetes, kalebet panyebaran rolling sareng metode anu langkung maju sapertos rollout kanaria sareng variasina.

Strategi panyebaran

Aya sababaraha jinis strategi panyebaran anu anjeun tiasa dianggo gumantung kana tujuan anjeun. Contona, Anjeun bisa jadi kudu nyieun parobahan ka lingkungan nu tangtu pikeun nguji salajengna, atawa ka sawaréh ti pamaké/klien, atawa Anjeun bisa jadi kudu ngalakukeun nguji pamaké kawates saméméh nyieun fitur. umum.

Rolling (bertahap, "rolling" deployment)

Ieu mangrupikeun strategi panyebaran standar di Kubernetes. Éta laun-laun, hiji-hiji, ngagentos pods sareng versi aplikasi anu lami sareng pods sareng versi énggal - tanpa downtime klaster.

Strategi panyebaran di Kubernetes: rolling, recreate, blue/green, canary, dark (uji A/B)

Kubernetes ngantosan dugi pod anyar siap dianggo (mariksa aranjeunna nganggo tés kasiapan), samemeh Anjeun ngamimitian rolling up nu heubeul. Upami aya masalah, update rolling ieu tiasa dibatalkeun tanpa ngeureunkeun sadayana klaster. Dina file YAML ngajéntrékeun tipe deployment, gambar anyar ngagantikeun gambar heubeul:

apiVersion: apps/v1beta1
kind: Deployment
metadata:
  name: awesomeapp
spec:
  replicas: 3
  template:
    metadata:
      labels:
        app: awesomeapp
    spec:
      containers:
        - name: awesomeapp
          image: imagerepo-user/awesomeapp:new
          ports:
            - containerPort: 8080

Parameter update rollover tiasa ditetepkeun dina file manifest:

spec:
  replicas: 3
  strategy:
    type: RollingUpdate
    rollingUpdate:
       maxSurge: 25%
       maxUnavailable: 25%  
  template:
  ...

Nyiptakeun deui

Dina jinis panyebaran pangbasajanna ieu, polong lami dipaéhan sakaligus sareng diganti ku anu énggal:

Strategi panyebaran di Kubernetes: rolling, recreate, blue/green, canary, dark (uji A/B)

Manifes anu cocog sigana sapertos kieu:

spec:
  replicas: 3
  strategy:
    type: Recreate
  template:
  ...

Biru/Héjo (panyebaran biru-héjo)

Strategi deployment biru-héjo (kadangkala disebut beureum / hideung) ngalibatkeun deployment simultaneous tina heubeul (héjo) jeung anyar (biru) versi aplikasi. Saatos ngeposkeun duanana versi, pangguna biasa ngagaduhan aksés kana anu héjo, sedengkeun anu biru sayogi pikeun tim QA pikeun ngajadikeun otomatis tés ngaliwatan layanan anu misah atanapi diteruskeun port langsung:

Strategi panyebaran di Kubernetes: rolling, recreate, blue/green, canary, dark (uji A/B)

apiVersion: apps/v1beta1
kind: Deployment
metadata:
  name: awesomeapp-02
spec:
  template:
    metadata:
      labels:
        app: awesomeapp
        version: "02"

Saatos versi biru (anyar) diuji sareng sékrésina disatujuan, jasana ngalih ka éta, sareng versi héjo (heubeul) narilep:

apiVersion: v1
kind: Service
metadata:
  name: awesomeapp
spec:
  selector:
    app: awesomeapp
    version: "02"
...

Kanaria (penyebaran kanaria)

Rollouts Kanaria téh sarupa jeung rollouts biru-héjo, tapi boga kontrol hadé tur pamakéan maju pendekatan hambalan-demi-hambalan. Jenis ieu kalebet sababaraha strategi anu béda, kalebet peluncuran "siluman" sareng uji A / B.

strategi ieu dipaké nalika aya anu peryogi pikeun nyobaan sababaraha pungsi anyar, biasana dina backend aplikasi. Hakekat pendekatan nya éta nyieun dua server ampir identik: hiji ngalayanan ampir sakabéh pamaké, sarta séjén, kalawan fungsi anyar, fungsi ngan hiji subgroup leutik pamaké, nu satutasna hasil karya maranéhanana dibandingkeun. Upami sadayana henteu aya kasalahan, versi énggal sacara bertahap digulung ka sadaya infrastruktur.

Sanajan strategi ieu bisa dilaksanakeun sacara éksklusif ngagunakeun Kubernetes, ngaganti pods heubeul ku nu anyar, éta leuwih merenah tur basajan ngagunakeun bolong jasa kawas Istio.

Salaku conto, anjeun tiasa gaduh dua manifes anu béda dina Git: manifes biasa kalayan tag 0.1.0 sareng manifes kanaria kalayan tag 0.2.0. Ku cara ngarobah beurat dina manifest gateway virtual Istio, anjeun tiasa ngontrol distribusi lalu lintas antara dua panyebaran ieu:

Strategi panyebaran di Kubernetes: rolling, recreate, blue/green, canary, dark (uji A/B)

Pikeun pituduh léngkah-léngkah pikeun ngalaksanakeun panyebaran kanaria nganggo Istio, tingali Alur Kerja GitOps sareng Istio. (Catetan. narjamahkeun.: Urang ogé narjamahkeun bahan ngeunaan rollouts kenari kana Istio di dieu.)

Deployments Kanaria kalawan Weaveworks Flagger

Weaveworks Flagger ngidinan Anjeun pikeun gampang tur éféktif ngatur rollouts kenari.

Flagger otomatis damel sareng aranjeunna. Éta ngagunakeun Istio atanapi AWS App Mesh pikeun rute sareng ngalihkeun lalu lintas, sareng métrik Prometheus pikeun nganalisis hasilna. Salaku tambahan, analisa panyebaran kenari tiasa ditambihan ku webhooks pikeun ngalaksanakeun tés katampi, tés beban, sareng jinis cek anu sanés.

Dumasar kana panyebaran Kubernetes sareng, upami perlu, skala horisontal pods (HPA), Flagger nyiptakeun sakumpulan objék (penyebaran Kubernetes, jasa ClusterIP sareng jasa virtual Istio atanapi App Mesh) pikeun nganalisis sareng ngalaksanakeun panyebaran kanari:

Strategi panyebaran di Kubernetes: rolling, recreate, blue/green, canary, dark (uji A/B)

Ngalaksanakeun loop kontrol (kontrol loop),Flagger laun pindah lalulintas kana server kanaria, bari sakaligus ngukur metrics kinerja konci kayaning persentase requests HTTP suksés, lilana pamundut rata, sarta kaséhatan pod. Dumasar kana analisa KPI (Key Performance Indicator), kanaria boh tumuwuh atanapi ambruk sareng hasil analisa diterbitkeun dina Slack. Katerangan sareng démo ngeunaan prosés ieu tiasa dipendakan dina bahan Pangiriman Progresif pikeun App Mesh.

Strategi panyebaran di Kubernetes: rolling, recreate, blue/green, canary, dark (uji A/B)

Poék (disumputkeun) atanapi deployments A/B

deployment siluman mangrupa variasi séjén tina strategi kanaria (anu, ku jalan, Flagger ogé bisa dianggo kalayan). Beda antara panyebaran siluman sareng kenari nyaéta panyebaran siluman nganyahokeun frontend tinimbang backend sapertos penyebaran kenari.

Ngaran séjén pikeun panyebaran ieu nyaéta uji A/B. Gantina nyieun fitur anyar sadia ka sadaya pamaké, éta ditawarkeun ka ngan bagian kawates aranjeunna. Biasana, pangguna ieu henteu sadar yén aranjeunna mangrupikeun panguji pioneering (ku kituna istilah "penyebaran siluman").

Ngagunakeun saklar fungsionalitas (fitur togel) sarta parabot lianna, anjeun tiasa ngawas kumaha pamaké berinteraksi sareng fitur anyar, naha maranéhna kalibet ku eta, atawa naha maranéhna manggihan panganteur pamaké anyar ngabingungkeun, sarta tipe séjén metrics.

Strategi panyebaran di Kubernetes: rolling, recreate, blue/green, canary, dark (uji A/B)

Flagger jeung A / B deployments

Salian routing dumasar-beurat, Flagger ogé bisa jalur lalulintas keur server kanaria dumasar kana parameter HTTP. Dina uji A / B, anjeun tiasa nganggo header HTTP atanapi cookies pikeun nargétkeun bagéan khusus pangguna. Ieu hususna éféktif dina kasus aplikasi frontend anu merlukeun sési mengikat ka server (sesi afinitas). Inpo nu leuwih lengkep bisa kapanggih dina dokuméntasi Flagger.

Panulis ngucapkeun rasa sukur Stefan Prodan, Insinyur Weaveworks (sareng panyipta Flagger), pikeun sadaya pola panyebaran anu luar biasa ieu.

PS ti penerjemah

Baca ogé dina blog urang:

sumber: www.habr.com

Tambahkeun komentar