Usoro ntinye nke Kubernetes: ịtụgharị, megharịa, acha anụnụ anụnụ / akwụkwọ ndụ akwụkwọ ndụ, canary, ọchịchịrị (nnwale A/B)

Rịba ama. ntụgharị asụsụ: Ntugharị a sitere na Weaveworks na-ewebata atụmatụ mbugharị ngwa kachasị ewu ewu yana otu ị ga-esi mejuputa nke kachasị elu site na onye ọrụ Flagger Kubernetes. Edere ya n'asụsụ dị mfe ma nwee eserese a na-ahụ anya nke na-enye ohere ọbụna ndị injinia novice ghọta okwu ahụ.

Usoro ntinye nke Kubernetes: ịtụgharị, megharịa, acha anụnụ anụnụ / akwụkwọ ndụ akwụkwọ ndụ, canary, ọchịchịrị (nnwale A/B)
Eserese e si na ya pụta nyocha ọzọ Usoro mbughari emere na Ngwọta Ngwa

Otu n'ime nnukwu ihe ịma aka na mmepe nke ngwa ala igwe ojii taa bụ ọsọ ibunye ọrụ. Site na usoro microservice, ndị mmepe na-arụ ọrụ ma na-emepụta ngwa modular zuru oke, na-ekwe ka ndị otu dị iche iche dee koodu ma mee mgbanwe na ngwa ahụ n'otu oge.

Nkwanye mkpirisi na ugboro ugboro nwere uru ndị a:

  • Ewelatala oge ịzụ ahịa.
  • Atụmatụ ọhụrụ na-enweta ndị ọrụ ngwa ngwa.
  • Nzaghachi onye ọrụ na-erute ndị otu mmepe ngwa ngwa. Nke a pụtara na otu ahụ nwere ike ịgbakwunye atụmatụ ma dozie okwu ngwa ngwa.
  • Na-eme ka mmụọ onye nrụpụta ka mma: atụmatụ ndị ọzọ na mmepe na-atọ ụtọ karịa ịrụ ọrụ.


Mana ka ugboro ntọhapụ na-abawanye, ohere nke emetụta ntụkwasị obi ngwa na-adịghị mma ma ọ bụ ahụmịhe onye ọrụ na-abawanye. Ọ bụ ya mere o ji dị mkpa ka ndị ọrụ na ndị otu DevOps wulite usoro na jikwaa usoro ntinye n'ụzọ na-ebelata ihe ize ndụ nye ngwaahịa na ndị ọrụ. (Ịmụtakwuo maka imezi ọkpọkọ CI/CD, lee ebe a.)

Na post a, anyị ga-atụle atụmatụ ntinye Kubernetes dị iche iche, gụnyere mbugharị mbugharị na ụzọ ndị ọzọ dị elu dị ka mpịakọta canary na ọdịiche ha.

Usoro ntinye

Enwere ọtụtụ ụdị dị iche iche nke atumatu ntinye nke enwere ike iji dabere na ebumnuche ya. Dịka ọmụmaatụ, ị nwere ike ịme mgbanwe na mpaghara ụfọdụ maka nyocha ọzọ, ma ọ bụ na mpaghara nke ndị ọrụ / ndị ahịa, ma ọ bụ na ị nwere ike ịme ule ole na ole na ndị ọrụ tupu ịme atụmatụ. ọha.

Ntugharị (nwayọọ nwayọọ, mbugharị)

Nke a bụ atụmatụ mbugharị ọkọlọtọ maka Kubernetes. Ọ na-eji nwayọọ nwayọọ, n'otu n'otu, dochie pods na ngwa ochie nke ngwa na pods na ụdị ọhụrụ - na-enweghị oge nkwụsị nke ụyọkọ ahụ.

Usoro ntinye nke Kubernetes: ịtụgharị, megharịa, acha anụnụ anụnụ / akwụkwọ ndụ akwụkwọ ndụ, canary, ọchịchịrị (nnwale A/B)

Kubernetes na-echere pọd ọhụrụ ka ọ dị njikere ịga (na-elele ha ule njikere) tupu ọ gaa n'ihu na-atụgharị ndị ochie. Ọ bụrụ na nsogbu emee, enwere ike ibibi ụdị nkwalite a na-akwụsịghị ụyọkọ ahụ niile. N'ụdị ntinye faịlụ YAML, onyonyo ọhụrụ nọchiri onyonyo ochie:

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

Enwere ike ịkọwapụta parampat nke mmelite mpịakọta na faịlụ ngosi:

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

Megharịa (mmepụta ọzọ)

N'ime ụdị mbugharị a kachasị mfe, a na-egbu pods ochie n'otu oge ma jiri nke ọhụrụ dochie ya:

Usoro ntinye nke Kubernetes: ịtụgharị, megharịa, acha anụnụ anụnụ / akwụkwọ ndụ akwụkwọ ndụ, canary, ọchịchịrị (nnwale A/B)

Ngosipụta kwekọrọ na ya dị ka nke a:

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

Acha anụnụ anụnụ/ Green (nnyefe na-acha anụnụ anụnụ-acha ndụ ndụ)

Atụmatụ mbugharị na-acha anụnụ anụnụ-acha akwụkwọ ndụ akwụkwọ ndụ (mgbe ụfọdụ a na-akpọkwa ya ka uhie/oji, i.e. uhie-oji) gụnyere ntinye oge nke ochie (akwụkwọ ndụ akwụkwọ ndụ) na nke ọhụrụ (acha anụnụ anụnụ) nke ngwa. Ozugbo akwadoro ụdị abụọ ahụ, akwụkwọ ndụ akwụkwọ ndụ dị maka onye ọrụ izugbe, ebe a na-acha anụnụ anụnụ dị maka ndị otu QA iji megharịa ule site na ọrụ dị iche ma ọ bụ mbugharị ọdụ ụgbọ mmiri ozugbo:

Usoro ntinye nke Kubernetes: ịtụgharị, megharịa, acha anụnụ anụnụ / akwụkwọ ndụ akwụkwọ ndụ, canary, ọchịchịrị (nnwale A/B)

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

Mgbe anwalechara ụdị acha anụnụ anụnụ (ọhụrụ) wee kwado maka mwepụta, a ga-atụgharị ọrụ ahụ na ya, ma belata akwụkwọ ndụ akwụkwọ ndụ (ochie):

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

Canary (nkwanye ndị canary)

Mfegharị Canary yiri acha anụnụ anụnụ-acha ndụ ndụ, mana ejiri ya mee ihe nke ọma na-aga n'ihu nzọụkwụ site nzọụkwụ nso. Ọtụtụ atụmatụ dị iche iche dabara na ngalaba a, gụnyere mmalite nzuzo na nnwale A/B.

A na-eji atụmatụ a mgbe achọrọ ịnwale ụfọdụ ọrụ ọhụrụ, na-abụkarị n'azụ ngwa. Ihe kachasị mkpa nke usoro a bụ ịmepụta ihe nkesa abụọ fọrọ nke nta ka ọ bụrụ: otu na-eje ozi ihe fọrọ nke nta ka ọ bụrụ ndị ọrụ niile, na nke ọzọ, na-eji atụmatụ ọhụrụ, na-eje ozi naanị obere obere ndị ọrụ, mgbe nke ahụ gasịrị, a na-atụnyere nsonaazụ nke ọrụ ha. Ọ bụrụ na ihe niile na-aga n'enweghị njehie, a na-eji nwayọọ nwayọọ na-atụgharị ụdị ọhụrụ ahụ na akụrụngwa niile.

Ọ bụ ezie na enwere ike itinye atụmatụ a naanị site na iji Kubernetes, dochie pods ochie na nke ọhụrụ, ọ dị mfe karịa ma dị mfe iji mesh ọrụ dị ka Istio.

Dịka ọmụmaatụ, ịnwere ike ịnwe ngosipụta Git abụọ dị iche iche: nke oge niile nwere mkpado 0.1.0 yana canary nwere mkpado 0.2.0. Site n'ịgbanwe nha na ngosipụta Istio Virtual Gateway, ị nwere ike ijikwa nkesa nke okporo ụzọ n'etiti ntinye abụọ a:

Usoro ntinye nke Kubernetes: ịtụgharị, megharịa, acha anụnụ anụnụ / akwụkwọ ndụ akwụkwọ ndụ, canary, ọchịchịrị (nnwale A/B)

Enwere ike ịchọta ntuziaka nzọụkwụ iji mejuputa mbugharị canary na Istio GitOps na-arụ ọrụ na Istio. (Rịba ama. ntụgharị asụsụ.: Anyị tụgharịrị asụsụ ihe gbasara akwụkwọ mpịakọta canary na Istio ebe a.)

Mbugharị Canary na Weaveworks Flagger

Ọkọlọtọ Weaveworks na-enye ohere dị mfe na ịrụ ọrụ nke ọma njikwa nke mpịakọta canary.

Flagger na-arụ ọrụ na ha. Ọ na-eji Istio ma ọ bụ AWS App Mesh na-aga ma gbanwee okporo ụzọ, yana Prometheus metrics iji nyochaa nsonaazụ ya. Na mgbakwunye, enwere ike ịgbakwunye nyocha nke mbugharị canary na webhooks maka ịme ule nnabata, ule ibu, na ụdị nlele ọ bụla ọzọ.

Dabere na ntinye nke Kubernetes na, ọ bụrụ na ọ dị mkpa, pọd-out pods (HPA), Flagger na-emepụta ihe dị iche iche (Kubernetes deployments, ClusterIP services and Istio or App Mesh virtual services) iji nyochaa na mejuputa nkesa canary:

Usoro ntinye nke Kubernetes: ịtụgharị, megharịa, acha anụnụ anụnụ / akwụkwọ ndụ akwụkwọ ndụ, canary, ọchịchịrị (nnwale A/B)

Na-eme usoro akara aka (Nchịkwa akara)Flagger ji nwayọọ nwayọọ gbanwee okporo ụzọ gaa na sava canary ka ọ na-atụ metrik arụmọrụ isi dị ka ọnụego ịga nke ọma HTTP arịrịọ, ogologo oge arịrịọ na ahụike pod. Dabere na nyocha nke KPI (ndị na-egosi arụmọrụ igodo), akụkụ canary na-eto ma ọ bụ na-ebelata, na nsonaazụ nyocha na-ebipụta na Slack. Enwere ike ịchọta nkọwa na ngosipụta nke usoro a na ihe Nnyefe na-aga n'ihu maka ngwa ngwa.

Usoro ntinye nke Kubernetes: ịtụgharị, megharịa, acha anụnụ anụnụ / akwụkwọ ndụ akwụkwọ ndụ, canary, ọchịchịrị (nnwale A/B)

Ọchịchịrị (zoro ezo) ma ọ bụ ntinye A/B

Nkwanye nzuzo bụ mgbanwe ọzọ nke atụmatụ canary (nke, n'ụzọ, Flagger nwekwara ike ịrụ ọrụ na). Ọdịiche dị n'etiti stealth na mbugharị canary bụ na ntinye ihe nzuzo na-emekọ ihe na njedebe n'ihu ma ọ bụghị azụ azụ dị ka ntinye canary na-eme.

Aha ọzọ maka ntinye ndị a bụ ule A/B. Kama imepe ohere maka ndị ọrụ niile ịnweta ihe ọhụrụ, a na-enye ya naanị maka akụkụ ole na ole n'ime ha. Na-emekarị, ndị ọrụ a amaghị na ha bụ ndị nyocha ọsụ ụzọ (ya mere okwu a bụ "nkwanye nke gbachiri nkịtị").

Na mgba ọkụ ọrụ (ntụgharị atụmatụ) na ngwaọrụ ndị ọzọ, ị nwere ike nyochaa ka ndị ọrụ na-emekọrịta ihe na njirimara ọhụrụ, ma ọ riri ha ahụ ma ọ bụ na-ahụ ihe mgbagwoju anya onye ọrụ ọhụrụ, na ụdị metric ndị ọzọ.

Usoro ntinye nke Kubernetes: ịtụgharị, megharịa, acha anụnụ anụnụ / akwụkwọ ndụ akwụkwọ ndụ, canary, ọchịchịrị (nnwale A/B)

Flagger na A/B Nkesa

Na mgbakwunye na ntugharị dị arọ, Flagger nwekwara ike ibugharị okporo ụzọ gaa na sava canary dabere na paramita HTTP. Nnwale A/B nwere ike iji nkụnye eji isi mee HTTP ma ọ bụ kuki iji megharịa otu akụkụ nke ndị ọrụ. Nke a dị irè karịsịa n'ihe gbasara ngwa frontend nke chọrọ ka ejikọta nnọkọ ahụ na ihe nkesa. (mmekọrịta oge). Enwere ike ịchọta ozi ndị ọzọ na akwụkwọ ọkọlọtọ.

Onye edemede ahụ nwere ekele Stefan Prodan, injinia nke Weaveworks (na onye okike nke Flagger), maka atụmatụ mbugharị ndị a niile dị ịtụnanya.

PS sitere na onye ntụgharị

Gụọkwa na blọọgụ anyị:

isi: www.habr.com

Tinye a comment