Feidhmchláir a imscaradh thar ilchnuasaigh Kubernetes le Helm

Mar a úsáideann Dailymotion Kubernetes: Imscaradh Feidhmchlár

Thosaigh muid ag Dailymotion ag baint úsáide as Kubernetes i dtáirgeadh 3 bliana ó shin. Ach is spraoi é feidhmchláir a imscaradh thar ilchnuasaigh, agus mar sin le cúpla bliain anuas bhíomar ag iarraidh ár n-uirlisí agus ár sreabhadh oibre a fheabhsú.

Cár thosaigh sé

Anseo clúdóimid conas a dhéanaimid ár bhfeidhmchláir a imscaradh thar ilchnuasaigh Kubernetes ar fud an domhain.

Chun il réad Kubernetes a imscaradh ag an am céanna, úsáidimid Helm, agus stóráiltear ár gcairteanna go léir i stór git amháin. Chun stack iomlán feidhmchlár a imscaradh ó roinnt seirbhísí, úsáidimid an chairt achoimre, mar a thugtar air. Go bunúsach, is cairt é seo a dhearbhaíonn spleáchais agus a ligeann duit an API agus a chuid seirbhísí a thosú le hordú amháin.

Scríobhamar script Python freisin ar bharr Helm chun seiceálacha a dhéanamh, cairteacha a chruthú, rúin a chur leis, agus feidhmchláir a imscaradh. Déantar na tascanna seo go léir ar ardán lárnach CI ag baint úsáide as íomhá docker.

A ligean ar a fháil go dtí an pointe.

Nóta. Agus tú ag léamh seo, tá an chéad iarrthóir scaoileadh le haghaidh Helm 3 fógartha cheana féin. Tá go leor feabhsuithe sa phríomhleagan chun dul i ngleic le cuid de na saincheisteanna a bhí againn san am a chuaigh thart.

Sreabhadh oibre forbartha cairte

Bainimid úsáid as branching le haghaidh iarratas, agus shocraigh muid an cur chuige céanna a chur i bhfeidhm maidir le cairteacha.

  • Géaga dev a úsáidtear chun cairteacha a chruthú a dhéanfar tástáil orthu ar bhraislí forbartha.
  • Nuair a chuirtear iarratas tarraingt isteach chuig máistir, déantar iad a sheiceáil le linn stáitse.
  • Ar deireadh, cruthaímid iarratas tarraingt chun na hathruithe ar an mbrainse a ghealladh táirge agus iad a chur i bhfeidhm i dtáirgeadh.

Tá a stór príobháideach féin ag gach timpeallacht a stórálann ár gcairteacha, agus a úsáidimid Músaem na Cairte le APIs an-úsáideach. Ar an mbealach seo cinnteoimid aonrú docht idir timpeallachtaí agus tástáil fhíorshaoil ​​ar chairteacha sula n-úsáidtear iad i dtáirgeadh.

Taisclanna cairteacha i dtimpeallachtaí éagsúla

Is fiú a thabhairt faoi deara, nuair a bhrúnn forbróirí brainse dev, go ndéantar leagan dá gcairt a bhrú go huathoibríoch chuig an dev Chartmuseum. Mar sin, úsáideann gach forbróir an stór forbartha céanna, agus ní mór duit do leagan den chairt a shonrú go cúramach ionas nach n-úsáideann tú athruithe duine eile de thaisme.

Thairis sin, bailíochtaíonn ár script Python beag rudaí Kubernetes i gcoinne sonraíochtaí Kubernetes OpenAPI ag baint úsáide as Ciúbal, sula bhfoilseofar iad ar Chartmusem.

Cur síos ginearálta ar an sreabhadh oibre forbartha cairte

  1. Tascanna píblíne a shocrú de réir sonraíochta gazr.io le haghaidh rialú cáilíochta (lint, aonad-tástáil).
  2. Íomhá docker a bhrú le huirlisí Python a úsáideann ár bhfeidhmchláir.
  3. An timpeallacht a bhunú de réir ainm brainse.
  4. Comhaid Kubernetes yaml a bhailíochtú ag baint úsáide as Kubeval.
  5. Méadaigh go huathoibríoch leagan cairte agus a cairteacha tuismitheora (cairteanna a bhraitheann ar an gcairt atá á athrú).
  6. Cairt a chur isteach chuig Músaem Cairte a oireann dá timpeallacht

Difríochtaí trasna braislí a bhainistiú

Cónaidhm na gCnuasach

Bhí am nuair a úsáid againn Cónaidhm na mbraislí Kubernetes, áit a bhféadfaí rudaí Kubernetes a dhearbhú ó chríochphointe API amháin. Ach tháinig fadhbanna chun cinn. Mar shampla, níorbh fhéidir roinnt réad Kubernetes a chruthú i gcríochphointe an chónaidhm, rud a fhágann go raibh sé deacair rudaí cónasctha agus réada eile a choinneáil do bhraislí aonair.

Chun an fhadhb a réiteach, thosaigh muid ag bainistiú na mbraislí go neamhspleách, rud a rinne an próiseas a shimpliú go mór (d'úsáideamar an chéad leagan de chónaidhm; b'fhéidir gur athraigh rud éigin sa dara ceann).

Ardán geo-dháilte

Tá ár n-ardán scaipthe faoi láthair ar fud 6 réigiún - 3 cinn go háitiúil agus 3 sa scamall.


Imscaradh Dáilte

Luachanna Domhanda Helm

Ligeann 4 luach Helm dhomhanda duit difríochtaí idir braislí a aithint. Tá íosluachanna réamhshocraithe ag ár gcairteacha go léir.

global:
  cloud: True
  env: staging
  region: us-central1
  clusterName: staging-us-central1

Luachanna domhanda

Cuidíonn na luachanna seo le comhthéacs ár bhfeidhmchláir a shainiú agus úsáidtear iad chun críocha éagsúla: monatóireacht, rianú, logáil, glaonna seachtracha a dhéanamh, scálú, etc.

  • "scamall": Tá ardán Kubernetes hibrideach againn. Mar shampla, déantar ár n-API a imscaradh i gcriosanna GCP agus inár n-ionaid sonraí.
  • "env": D'fhéadfadh go n-athróidh roinnt luachanna do thimpeallachtaí neamhtháirgthe. Mar shampla, sainmhínithe acmhainne agus cumraíochtaí uathscálaithe.
  • "réigiún": Cuidíonn an fhaisnéis seo le suíomh an bhraisle a chinneadh agus is féidir í a úsáid chun críochphointí in aice láimhe a chinneadh do sheirbhísí seachtracha.
  • "clusterName": más mian linn agus nuair is mian linn luach a shainiú do bhraisle aonair.

Seo sampla ar leith:

{{/* Returns Horizontal Pod Autoscaler replicas for GraphQL*/}}
{{- define "graphql.hpaReplicas" -}}
{{- if eq .Values.global.env "prod" }}
{{- if eq .Values.global.region "europe-west1" }}
minReplicas: 40
{{- else }}
minReplicas: 150
{{- end }}
maxReplicas: 1400
{{- else }}
minReplicas: 4
maxReplicas: 20
{{- end }}
{{- end -}}

Helm teimpléad teimpléad

Sainmhínítear an loighic seo i dteimpléad cúntóir chun cluttering Kubernetes YAML a sheachaint.

Fógra Iarratais

Tá ár n-uirlisí imlonnaithe bunaithe ar ilchomhaid YAML. Seo thíos sampla den chaoi a ndearbhaímid seirbhís agus a topology scálaithe (líon macasamhla) i gcnuasach.

releases:
  - foo.world

foo.world:                # Release name
  services:               # List of dailymotion's apps/projects
    foobar:
      chart_name: foo-foobar
      repo: [email protected]:dailymotion/foobar
      contexts:
        prod-europe-west1:
          deployments:
            - name: foo-bar-baz
              replicas: 18
            - name: another-deployment
              replicas: 3

Sainmhíniú Seirbhíse

Is achoimre é seo ar na céimeanna go léir a shainíonn ár sreabhadh oibre imlonnaithe. Déanann an chéim dheireanach an feidhmchlár a imscaradh chuig ilchnuasaigh oibrithe ag an am céanna.


Jenkins Céimeanna Imlonnaithe

Cad faoi rúin?

Maidir le slándáil, déanaimid gach rún ó áiteanna éagsúla a rianú agus iad a stóráil i cruinneachán uathúil Bóthair i bPáras.

Baineann ár n-uirlisí imlonnaithe luachanna rúnda a bhaint as Vault agus, nuair a thagann an t-am imscartha, cuir isteach iad i Helm.

Chun seo a dhéanamh, shainmhíníomar léarscáiliú idir na rúin in Vault agus na rúin atá de dhíth ar ár bhfeidhmchláir:

secrets:                                                                                                                                                                                                        
     - secret_id: "stack1-app1-password"                                                                                                                                                                                  
       contexts:                                                                                                                                                                                                   
         - name: "default"                                                                                                                                                                                         
           vaultPath: "/kv/dev/stack1/app1/test"                                                                                                                                                               
           vaultKey: "password"                                                                                                                                                                                    
         - name: "cluster1"                                                                                                                                                                           
           vaultPath: "/kv/dev/stack1/app1/test"                                                                                                                                                               
           vaultKey: "password"

  • Tá rialacha ginearálta sainmhínithe againn le leanúint agus rúin á dtaifeadadh againn i Vault.
  • Má bhaineann an rún chuig comhthéacs nó braisle ar leith, ní mór duit iontráil shonrach a chur leis. (Anseo tá a luach féin ag an mbraisle comhthéacs1 don phasfhocal rúnda stack-app1).
  • Seachas sin úsáidtear an luach de réir réamhshocraithe.
  • I gcás gach míre sa liosta seo i An rún Kubernetes cuirtear péire eochairluacha isteach. Dá bhrí sin, tá an teimpléad rúnda inár gcairteacha an-simplí.

apiVersion: v1
data:
{{- range $key,$value := .Values.secrets }}
  {{ $key }}: {{ $value | b64enc | quote }}
{{ end }}
kind: Secret
metadata:
  name: "{{ .Chart.Name }}"
  labels:
    chartVersion: "{{ .Chart.Version }}"
    tillerVersion: "{{ .Capabilities.TillerVersion.SemVer }}"
type: Opaque

Fadhbanna agus teorainneacha

Ag obair le stórtha iolracha

Anois scaraimid le forbairt cairteacha agus feidhmchláir. Ciallaíonn sé seo go gcaithfidh forbróirí oibriú i dhá stór git: ceann amháin don fheidhmchlár, agus ceann eile chun a imscaradh chuig Kubernetes a shainiú. Ciallaíonn stórtha 2 git 2 sreabhadh oibre, agus tá sé éasca do newbie a bheith ar dhaoine eatarthu.

Is deacracht é cairteacha ginearálaithe a bhainistiú

Mar a dúirt muid cheana, tá cairteacha cineálacha an-úsáideach chun spleáchais a aithint agus chun feidhmchláir iolracha a imscaradh go tapa. Ach úsáidimid --reuse-valueschun na luachanna go léir a sheachaint gach uair a dhéanaimid feidhmchlár a imscaradh atá mar chuid den chairt ghinearálaithe seo.

I sreabhadh oibre seachadta leanúnach, níl ach dhá luach againn a athraíonn go rialta: líon na macasamhla agus an chlib íomhá (leagan). Athraítear luachanna eile, níos cobhsaí de láimh, agus tá sé seo deacair go leor. Ina theannta sin, d’fhéadfadh teipeanna tromchúiseacha a bheith mar thoradh ar bhotún amháin maidir le cairt ghinearálaithe a imscaradh, mar atá feicthe againn ónár dtaithí féin.

Comhaid cumraíochta iolracha á nuashonrú

Nuair a chuireann forbróir iarratas nua leis, caithfidh sé roinnt comhad a athrú: an dearbhú iarratais, liosta na rúin, ag cur an iarratais mar spleáchas má tá sé san áireamh sa chairt ghinearálaithe.

Tá ceadanna Jenkins ró-shínte i Vault

Anois tá ceann againn Úll, a léann na rúin go léir ón Cruinneachán.

Níl an próiseas ais-rollta uathoibrithe

Chun rolladh siar, ní mór duit an t-ordú a rith ar roinnt braislí, agus tá sé seo lán le hearráidí. Déanaimid an oibríocht seo de láimh lena chinntiú go sonraítear aitheantas ceart an leagain.

Táimid ag bogadh i dtreo GitOps

Ár gcuspóir

Ba mhaith linn an chairt a chur ar ais chuig stór an fheidhmchláir a úsáideann sé.

Beidh an sreabhadh oibre mar an gcéanna leis an bhforbairt. Mar shampla, nuair a bhrúitear brainse chun máistreacht, cuirfear an t-imscaradh i ngníomh go huathoibríoch. Is é an príomhdhifríocht idir an cur chuige seo agus an sreabhadh oibre reatha ná sin déanfar gach rud a bhainistiú i git (an feidhmchlár féin agus an bealach a imlonnaítear é in Kubernetes).

Tá roinnt buntáistí ann:

  • Go leor níos soiléire don fhorbróir. Tá sé níos éasca foghlaim conas athruithe a chur i bhfeidhm ar chairt áitiúil.
  • Is féidir an sainmhíniú ar imscaradh seirbhíse a shonrú áit chéanna leis an gcód seirbhís.
  • Bainistiú a dhéanamh ar bhaint cairteacha ginearálaithe. Beidh a scaoileadh Helm féin ag an tseirbhís. Tabharfaidh sé seo deis duit saolré an fheidhmchláir a bhainistiú (rolladh siar, uasghrádú) ag an leibhéal is lú, ionas nach gcuirfidh sé isteach ar sheirbhísí eile.
  • Buntáistí git maidir le bainistiú cairte: Cealaigh athruithe, logáil iniúchta, etc. Más gá duit athrú ar chairt a chealú, is féidir leat é seo a dhéanamh ag baint úsáide as git. Tosaíonn an t-imscaradh go huathoibríoch.
  • D'fhéadfá smaoineamh ar do shreabhadh oibre forbartha a fheabhsú le huirlisí mar Scafall, lena bhféadfaidh forbróirí athruithe a thástáil i gcomhthéacs atá gar do tháirgeadh.

Imirce dhá chéim

Tá ár bhforbróirí ag baint úsáide as an sreabhadh oibre seo le 2 bhliain anois, agus mar sin ba mhaith linn go mbeadh an t-imirce chomh gan phian agus is féidir. Mar sin, shocraigh muid céim idirmheánach a chur leis ar an mbealach chun an sprioc.
Tá an chéad chéim simplí:

  • Coinnímid struchtúr cosúil leis chun imscaradh feidhmchlár a shocrú, ach i réad amháin ar a dtugtar DailymotionRelease.

apiVersion: "v1"
kind: "DailymotionRelease"
metadata:
  name: "app1.ns1"
  environment: "dev"
  branch: "mybranch"
spec:
  slack_channel: "#admin"
  chart_name: "app1"
  scaling:
    - context: "dev-us-central1-0"
      replicas:
        - name: "hermes"
          count: 2
    - context: "dev-europe-west1-0"
      replicas:
        - name: "app1-deploy"
          count: 2
  secrets:
    - secret_id: "app1"
      contexts:
        - name: "default"
          vaultPath: "/kv/dev/ns1/app1/test"
          vaultKey: "password"
        - name: "dev-europe-west1-0"
          vaultPath: "/kv/dev/ns1/app1/test"
          vaultKey: "password"

  • 1 eisiúint in aghaidh an iarratais (gan cairteacha ginearálaithe).
  • Cairteacha i stór git an fheidhmchláir.

Táimid tar éis labhairt leis na forbróirí go léir, agus mar sin tá an próiseas imirce tosaithe cheana féin. Tá an chéad chéim fós á rialú ag baint úsáide as an ardán CI. Scríobhfaidh mé post eile go luath faoi chéim a dó: conas a bhogamar chuig sreabhadh oibre GitOps leis Flux. Inseoidh mé duit conas a shocraíomar gach rud agus cad iad na deacrachtaí a bhí againn (stóranna iomadúla, rúin, etc.). Lean an nuacht.

Anseo tá iarracht déanta againn cur síos a dhéanamh ar ár ndul chun cinn sa sreabhadh oibre imscaradh feidhmchlár le blianta beaga anuas, rud a d'eascair smaointe faoi chur chuige GitOps. Níl an sprioc bainte amach againn go fóill agus tuairisceoimid ar na torthaí, ach anois táimid cinnte go ndearna muid an rud ceart nuair a shocraigh muid gach rud a shimpliú agus é a thabhairt níos gaire do nósanna forbróirí.

Foinse: will.com

Add a comment