Atebol: Mudo cyfluniad 120 VM o CoreOS i CentOS mewn 18 mis

Atebol: Mudo cyfluniad 120 VM o CoreOS i CentOS mewn 18 mis

Dyma drawsgrifiad o'r araith DevopsConf 2019-10-01 и SPbLUG 2019-09-25.

Dyma stori prosiect a ddefnyddiodd system rheoli cyfluniad hunan-ysgrifenedig a pham y cymerodd y symud i Ansible 18 mis.

Diwrnod Rhif -ХХХ: Cyn y dechrau

Atebol: Mudo cyfluniad 120 VM o CoreOS i CentOS mewn 18 mis

I ddechrau, roedd y seilwaith yn cynnwys llawer o westeion ar wahân yn rhedeg Hyper-V. Roedd angen llawer o gamau i greu peiriant rhithwir: rhoi'r disgiau yn y lle iawn, cofrestru DNS, cadw DHCP, rhoi'r ffurfweddiad VM yn y storfa git. Cafodd y broses hon ei mecaneiddio'n rhannol, ond er enghraifft, dosbarthwyd VMs rhwng gwesteiwyr â llaw. Ond, er enghraifft, gallai datblygwyr gywiro'r cyfluniad VM mewn git a'i gymhwyso trwy ailgychwyn y VM.

Ateb Rheoli Ffurfweddu Personol

Atebol: Mudo cyfluniad 120 VM o CoreOS i CentOS mewn 18 mis

Mae'r syniad gwreiddiol, rwy'n amau, wedi'i greu fel IaC: llawer o VMs di-wladwriaeth sy'n ailosod eu cyflwr i sero wrth ailgychwyn. Beth oedd rheoli cyfluniad VM? Yn sgematig mae'n edrych yn syml:

  1. Cafodd MAC sefydlog ei hoelio i lawr ar gyfer y VM.
  2. Roedd ISO gyda CoreOS a disg cychwyn wedi'u cysylltu â'r VM.
  3. Mae CoreOS yn lansio'r sgript addasu trwy ei lawrlwytho o'r gweinydd WEB yn seiliedig ar ei IP.
  4. Mae'r sgript yn lawrlwytho'r ffurfweddiad VM trwy SCP yn seiliedig ar y cyfeiriad IP.
  5. Mae lliain traed ffeiliau uned systemd a lliain troed sgriptiau bash yn cael eu lansio.

Atebol: Mudo cyfluniad 120 VM o CoreOS i CentOS mewn 18 mis

Roedd gan yr ateb hwn lawer o broblemau amlwg:

  1. Mae CoreOS ISO wedi'i anghymeradwyo.
  2. Llawer o weithredoedd awtomataidd cymhleth a hud a lledrith wrth fudo/creu VMs.
  3. Anhawster diweddaru a phryd mae angen fersiwn arbennig o feddalwedd. Hyd yn oed mwy o hwyl gyda modiwlau cnewyllyn.
  4. Ni chafwyd VMs felly heb ddata, h.y. Ymddangosodd VMs gyda disg gyda data defnyddiwr ychwanegol wedi'i osod.
  5. Roedd rhywun yn gyson yn chwalu'r dibyniaethau uned systemd a byddai CoreOS yn rhewi wrth ailgychwyn. Roedd yn anodd dal hyn gan ddefnyddio'r offer sydd ar gael yn CoreOS.
  6. Rheoli cyfrinachau.
  7. Nid oedd dim CM. Roedd cyfluniadau bash ac YML ar gyfer CoreOS.

I gymhwyso'r cyfluniad VM, mae angen i chi ei ailgychwyn, ond efallai na fydd yn ailgychwyn. Mae'n ymddangos fel problem amlwg, ond nid oes disgiau parhaus - nid oes unrhyw le i arbed logiau. Wel, iawn, gadewch i ni geisio ychwanegu'r opsiwn llwytho cnewyllyn fel y bydd y logiau'n cael eu hanfon. Ond na, pa mor gymhleth yw'r cyfan.

Diwrnod #0: Adnabod y broblem

Atebol: Mudo cyfluniad 120 VM o CoreOS i CentOS mewn 18 mis

Hwn oedd y seilwaith datblygu arferol: jenkins, amgylcheddau prawf, monitro, cofrestrfa. Dyluniwyd CoreOS ar gyfer cynnal clystyrau k8s, h.y. y broblem oedd sut y defnyddiwyd CoreOS. Y cam cyntaf oedd dewis pentwr. Fe wnaethom setlo ar:

  1. CentOS fel dosbarthiad sylfaen, oherwydd Dyma'r dosbarthiad agosaf at amgylcheddau cynhyrchu.
  2. Ateb ar gyfer rheoli cyfluniad, oherwydd bu archwiliad helaeth arno.
  3. Jenkins fel fframwaith ar gyfer awtomeiddio prosesau presennol, oherwydd mae eisoes wedi'i ddefnyddio'n weithredol ar gyfer prosesau datblygu
  4. Hyper-V fel platfform rhithwiroli. Mae yna nifer o resymau sy'n mynd y tu hwnt i gwmpas y stori, ond yn fyr - ni allwn ddefnyddio'r cymylau, rhaid inni ddefnyddio ein caledwedd ein hunain.

Diwrnod Rhif 30: Trwsio cytundebau presennol - Cytundebau fel Cod

Atebol: Mudo cyfluniad 120 VM o CoreOS i CentOS mewn 18 mis

Pan oedd y pentwr yn glir, dechreuodd y paratoadau ar gyfer symud. Trwsio cytundebau presennol ar ffurf cod (Cytundebau fel Cod!). Pontio llafur llaw -> mecaneiddio -> awtomeiddio.

1. Ffurfweddu VMs

Atebol: Mudo cyfluniad 120 VM o CoreOS i CentOS mewn 18 mis

Mae Ansible yn gwneud gwaith gwych o hyn. Gyda lleiafswm o symudiadau corff gallwch reoli ffurfweddau VM:

  1. Creu ystorfa git.
  2. Rydyn ni'n rhoi'r rhestr o VMs mewn rhestr eiddo, ffurfweddiadau mewn llyfrau chwarae a rolau.
  3. Rydyn ni'n sefydlu caethwas jenkins arbennig y gallwch chi redeg Ansible ohono.
  4. Rydym yn creu swydd ac yn ffurfweddu Jenkins.

Mae'r broses gyntaf yn barod. Mae'r cytundebau yn sefydlog.

2. Creu VM newydd

Atebol: Mudo cyfluniad 120 VM o CoreOS i CentOS mewn 18 mis

Nid oedd popeth yma yn gyfleus iawn. Nid yw'n gyfleus iawn creu VMs ar Hyper-V o Linux. Un o’r ymdrechion i fecaneiddio’r broses hon oedd:

  1. Mae Ansbile yn cysylltu trwy WinRM â'r gwesteiwr windows.
  2. Mae Anible yn rhedeg sgript powershell.
  3. Mae sgript Powershell yn creu VM newydd.
  4. Gan ddefnyddio Hyper-V/ScVMM, wrth greu VM yn yr OS gwadd, mae'r enw gwesteiwr wedi'i ffurfweddu.
  5. Wrth ddiweddaru prydles DHCP, mae'r VM yn anfon ei enw gwesteiwr.
  6. Mae integreiddio ddns & dhcp safonol ar ochr y Rheolwr Parth yn ffurfweddu'r cofnod DNS.
  7. Gallwch ychwanegu VM at eich rhestr eiddo a'i ffurfweddu gydag Ansible.

3.Creu templed VM

Atebol: Mudo cyfluniad 120 VM o CoreOS i CentOS mewn 18 mis

Wnaethon nhw ddim dyfeisio dim byd yma - fe wnaethon nhw gymryd paciwr.

  1. Ychwanegwch y paciwr, ffurfwedd kickstart i'r ystorfa git.
  2. Sefydlu caethwas jenkins arbennig gyda hyper-v a Packer.
  3. Rydym yn creu swydd ac yn ffurfweddu Jenkins.

Sut mae'r ddolen hon yn gweithio:

  1. Mae Packer yn creu VM gwag ac yn codi'r ISO.
  2. Mae'r esgidiau VM, Packer yn mynd i mewn i'r gorchymyn i'r cychwynnydd i ddefnyddio ein ffeil kickstart o ddisg hyblyg neu http.
  3. Mae Anaconda yn cael ei lansio gyda'n ffurfwedd, ac mae'r cyfluniad OS cychwynnol yn cael ei wneud.
  4. Mae paciwr yn aros i'r VM ddod ar gael.
  5. Mae paciwr y tu mewn i'r VM yn rhedeg yn asible yn y modd lleol.
  6. Mae Ansible yn defnyddio'r un rolau yn union ag y mae'n gweithio yng ngham #1.
  7. Mae Packer yn allforio'r templed VM.

Diwrnod # 75: Ailffactorio'r cytundeb heb dorri = Profi'n asible + Testkitchen

Atebol: Mudo cyfluniad 120 VM o CoreOS i CentOS mewn 18 mis

Efallai na fydd dal confensiynau mewn cod yn ddigon. Wedi'r cyfan, os ydych chi am newid rhywbeth yn ystod y cam ac allan o'r broses, gallwch chi dorri rhywbeth. Felly, yn achos seilwaith, mae profi’r union seilwaith hwn yn ymddangos. Er mwyn cydamseru gwybodaeth o fewn y tîm, dechreuon ni brofi rolau Ansible. Wna i ddim mynd i ddyfnder oherwydd... mae erthygl yn disgrifio'r digwyddiadau ar yr adeg honno Profwch fi os gallwch chi neu a yw rhaglenwyr YML yn breuddwydio am brofi Ansible?(Difetha nid dyma'r fersiwn terfynol ac yn ddiweddarach daeth popeth yn fwy cymhleth Sut i ddechrau profi Ansible, ailffactorio'r prosiect mewn blwyddyn a pheidio â mynd yn wallgof).

Diwrnod #130: Efallai nad oes angen CentOS+ansible? openshift efallai?

Rhaid inni ddeall nad y broses o gyflwyno seilwaith oedd yr unig un ac roedd is-brosiectau ochr. Er enghraifft, daeth cais i lansio ein cais mewn openshift ac arweiniodd hyn at ymchwil am fwy nag wythnos Rydym yn lansio'r cais yn Openshift ac yn cymharu offer presennol sy'n arafu'r broses symud. Daeth y canlyniad i'r amlwg nad yw openshift yn cwmpasu'r holl anghenion; mae angen caledwedd go iawn arnoch chi, neu o leiaf y gallu i chwarae gyda'r cnewyllyn.

Diwrnod # 170: Nid yw Openshift yn addas, gadewch i ni gymryd siawns gyda Windows Azure Pack?

Atebol: Mudo cyfluniad 120 VM o CoreOS i CentOS mewn 18 mis

Nid yw Hyper-V yn gyfeillgar iawn, nid yw SCVMM yn ei gwneud yn llawer gwell. Ond mae yna'r fath beth â Windows Azure Pack, sy'n ychwanegiad i SCVMM ac yn dynwared Azure. Ond mewn gwirionedd, mae'r cynnyrch yn edrych yn segur: mae'r ddogfennaeth wedi torri cysylltiadau ac yn brin iawn. Ond fel rhan o'r astudiaeth o opsiynau ar gyfer symleiddio bywyd ein cwmwl, fe wnaethon nhw edrych arno hefyd.

Diwrnod #250: Windows Azure Pack ddim yn dda iawn. Rydym yn parhau ar SCVMM

Atebol: Mudo cyfluniad 120 VM o CoreOS i CentOS mewn 18 mis

Roedd Windows Azure Pack yn edrych yn addawol, ond penderfynwyd peidio â dod â WAP gyda'i gymhlethdodau i'r system er mwyn nodweddion diangen ac arhosodd gyda SCVMM.

Diwrnod #360: Bwyta'r eliffant fesul darn

Atebol: Mudo cyfluniad 120 VM o CoreOS i CentOS mewn 18 mis

Dim ond blwyddyn yn ddiweddarach roedd y llwyfan ar gyfer symud iddo yn barod a dechreuodd y broses symud. At y diben hwn, gosodwyd tasg CAMPUS. Fe wnaethon ni wirio'r holl VMs a dechrau darganfod y cyfluniad fesul un, ei ddisgrifio yn Ansible, a'i orchuddio â phrofion.

Diwrnod #450: Pa fath o system gawsoch chi?

Atebol: Mudo cyfluniad 120 VM o CoreOS i CentOS mewn 18 mis

Nid yw'r broses ei hun yn ddiddorol. Mae'n arferol, gellir nodi bod y rhan fwyaf o'r ffurfweddiadau yn gymharol syml neu isomorffig ac yn ôl egwyddor Pareto, roedd angen 80% o'r amser ar 20% o'r ffurfweddiadau VM. Yn ôl yr un egwyddor, treuliwyd 80% o'r amser yn paratoi'r symudiad a dim ond 20% ar y symud ei hun.

Diwrnod #540: Terfynol

Atebol: Mudo cyfluniad 120 VM o CoreOS i CentOS mewn 18 mis

Beth ddigwyddodd mewn 18 mis?

  1. Daeth y cytundebau yn god.
  2. Llafur llaw -> Mecaneiddio -> Awtomeiddio.

Ffynhonnell: hab.com

Ychwanegu sylw