Galima: 120 VM konfigūracijos perkėlimas iš CoreOS į CentOS per 18 mėnesių

Galima: 120 VM konfigūracijos perkėlimas iš CoreOS į CentOS per 18 mėnesių

Tai kalbos stenograma DevopsConf 2019-10-01 и SPbLUG 2019-09-25.

Tai istorija apie projektą, kuriame buvo naudojama savarankiškai parašyta konfigūracijos valdymo sistema ir kodėl perkėlimas į Ansible užtruko 18 mėnesių.

Diena Nr. -ХХХ: Prieš pradžią

Galima: 120 VM konfigūracijos perkėlimas iš CoreOS į CentOS per 18 mėnesių

Iš pradžių infrastruktūrą sudarė daugybė atskirų kompiuterių, kuriuose veikia „Hyper-V“. Kuriant virtualią mašiną reikėjo daug žingsnių: įdėti diskus į reikiamą vietą, užregistruoti DNS, rezervuoti DHCP, įdėti VM konfigūraciją į git saugyklą. Šis procesas buvo iš dalies mechanizuotas, tačiau, pavyzdžiui, VM tarp kompiuterių buvo paskirstytos rankomis. Tačiau, pavyzdžiui, kūrėjai gali pataisyti VM konfigūraciją git ir pritaikyti ją iš naujo paleisdami VM.

Pasirinktinis konfigūracijos valdymo sprendimas

Galima: 120 VM konfigūracijos perkėlimas iš CoreOS į CentOS per 18 mėnesių

Įtariu, kad pradinė idėja buvo sumanyta kaip IaC: daugelis be būsenos VM, kurios iš naujo paleidžiamos iš naujo į nulinę būseną. Kas buvo VM konfigūracijos valdymas? Schematiškai tai atrodo paprasta:

  1. VM buvo nustatytas statinis MAC.
  2. Prie VM buvo prijungtas ISO su CoreOS ir įkrovos diskas.
  3. „CoreOS“ paleidžia tinkinimo scenarijų, atsisiųsdama jį iš WEB serverio pagal jo IP.
  4. Scenarijus atsisiunčia VM konfigūraciją per SCP pagal IP adresą.
  5. Paleidžiami sistemos vienetų failų ir bash scenarijų audiniai.

Galima: 120 VM konfigūracijos perkėlimas iš CoreOS į CentOS per 18 mėnesių

Šis sprendimas turėjo daug akivaizdžių problemų:

  1. „CoreOS ISO“ nebenaudojamas.
  2. Daug sudėtingų automatizuotų veiksmų ir magijos perkeliant / kuriant VM.
  3. Sunkumai atnaujinant ir kai reikalinga tam tikra programinės įrangos versija. Dar smagiau su branduolio moduliais.
  4. VM nebuvo taip gauti be duomenų, t.y. Atsirado VM su disku su papildomais vartotojo duomenimis.
  5. Kažkas nuolat sugadindavo sistemos vienetų priklausomybes ir „CoreOS“ užšaldavo perkraunant. Tai buvo sunku sugauti naudojant turimus „CoreOS“ įrankius.
  6. Paslapčių valdymas.
  7. CM nebuvo. „CoreOS“ buvo „bash“ ir „YML“ konfigūracijos.

Jei norite pritaikyti VM konfigūraciją, turite ją paleisti iš naujo, tačiau ji gali nepaleisti iš naujo. Atrodo akivaizdi problema, bet nėra nuolatinių diskų – nėra kur išsaugoti žurnalų. Na, gerai, pabandykime pridėti branduolio įkėlimo parinktį, kad žurnalai būtų siunčiami. Bet ne, kaip viskas sudėtinga.

0 diena: pripažinkite problemą

Galima: 120 VM konfigūracijos perkėlimas iš CoreOS į CentOS per 18 mėnesių

Tai buvo įprasta kūrimo infrastruktūra: jenkins, testavimo aplinkos, stebėjimas, registras. CoreOS buvo sukurtas k8s klasterių talpinimui, t.y. problema buvo tai, kaip buvo naudojamas CoreOS. Pirmas žingsnis buvo kamino pasirinkimas. Mes apsigyvenome:

  1. Centos kaip bazinis paskirstymas, nes Tai artimiausias paskirstymas gamybos aplinkai.
  2. Galimas konfigūracijos valdymui, nes buvo atlikta išsami jo ekspertizė.
  3. Jenkins kaip esamų procesų automatizavimo pagrindą, nes jis jau buvo aktyviai naudojamas plėtros procesams
  4. "Hyper-V" kaip virtualizacijos platforma. Yra nemažai priežasčių, kurios peržengia istorijos ribas, bet trumpai tariant – negalime naudoti debesų, turime naudoti savo aparatūrą.

30 diena: Esamų susitarimų taisymas – Sutartys kaip kodeksas

Galima: 120 VM konfigūracijos perkėlimas iš CoreOS į CentOS per 18 mėnesių

Kai stackas buvo aiškus, prasidėjo pasiruošimas ėjimui. Esamų susitarimų taisymas kodo forma (Sutartys kaip kodeksas!). Perėjimas fizinis darbas -> mechanizacija -> automatizavimas.

1. Konfigūruokite VM

Galima: 120 VM konfigūracijos perkėlimas iš CoreOS į CentOS per 18 mėnesių

Ansible tai puikiai atlieka. Atlikdami minimalius kūno judesius, galite valdyti VM konfigūracijas:

  1. Sukurkite git saugyklą.
  2. VM sąrašą įtraukėme į inventorių, konfigūracijas į žaidimų knygeles ir vaidmenis.
  3. Mes nustatome specialų jenkins vergą, iš kurio galite paleisti Ansible.
  4. Sukuriame darbą ir konfigūruojame Jenkins.

Pirmasis procesas yra paruoštas. Sutartys yra fiksuotos.

2. Sukurkite naują VM

Galima: 120 VM konfigūracijos perkėlimas iš CoreOS į CentOS per 18 mėnesių

Viskas čia nebuvo labai patogu. Nėra labai patogu kurti VM naudojant „Hyper-V“ iš „Linux“. Vienas iš bandymų mechanizuoti šį procesą buvo:

  1. „Ansbile“ prisijungia per WinRM prie „Windows“ pagrindinio kompiuterio.
  2. Ansible vykdo powershell scenarijų.
  3. Powershell scenarijus sukuria naują VM.
  4. Naudojant Hyper-V/ScVMM, kuriant VM svečių OS, sukonfigūruojamas pagrindinio kompiuterio pavadinimas.
  5. Atnaujinant DHCP nuomą, VM siunčia savo pagrindinio kompiuterio pavadinimą.
  6. Standartinis ddns ir dhcp integravimas domeno valdiklio pusėje sukonfigūruoja DNS įrašą.
  7. Galite įtraukti VM prie savo inventoriaus ir sukonfigūruoti jį naudodami Ansible.

3. Sukurkite VM šabloną

Galima: 120 VM konfigūracijos perkėlimas iš CoreOS į CentOS per 18 mėnesių

Jie čia nieko nesugalvojo - paėmė pakuotoją.

  1. Pridėkite paketuotoją, kickstart konfigūraciją į „git“ saugyklą.
  2. Specialaus jenkins vergo su hyper-v ir Packer nustatymas.
  3. Sukuriame darbą ir konfigūruojame Jenkins.

Kaip veikia ši nuoroda:

  1. Packer sukuria tuščią VM ir paima ISO.
  2. VM paleidžiamas, paketuotojas įveda komandą į įkrovos įkroviklį, kad naudotų mūsų kickstart failą iš diskelio arba http.
  3. „Anaconda“ paleidžiama naudojant mūsų konfigūraciją ir atlikta pradinė OS konfigūracija.
  4. Pakuotojas laukia, kol VM bus pasiekiama.
  5. Pakuotojas VM viduje veikia vietiniu režimu.
  6. Ansible naudoja lygiai tuos pačius vaidmenis, kaip ir 1 veiksme.
  7. Packer eksportuoja VM šabloną.

75 diena: Pakartokite susitarimą nepažeisdami = Išbandyti galima + Testkitchen

Galima: 120 VM konfigūracijos perkėlimas iš CoreOS į CentOS per 18 mėnesių

Užfiksuoti susitarimus kode gali nepakakti. Galų gale, jei proceso subtilybėse norite ką nors pakeisti, galite ką nors sulaužyti. Todėl infrastruktūros atveju atsiranda būtent šios infrastruktūros testavimas. Norėdami sinchronizuoti žinias komandoje, pradėjome testuoti Ansible vaidmenis. Nesigilinsiu, nes... yra straipsnis, kuriame aprašomi įvykiai tuo metu Išbandykite mane, ar galite, ar YML programuotojai svajoja išbandyti Ansible?(spoileris tai nebuvo galutinė versija, o vėliau viskas tapo sudėtingesnė Kaip pradėti testuoti Ansible, per metus pertvarkyti projektą ir neišprotėti).

130 diena: gal CentOS+ansible nereikia? gal openshift?

Turime suprasti, kad infrastruktūros diegimo procesas nebuvo vienintelis ir buvo šalutinių paprojekčių. Pavyzdžiui, atėjo užklausa paleisti mūsų programą „Openshift“ ir dėl to tyrimai truko ilgiau nei vieną savaitę Paleidžiame programą Openshift ir palyginame esamus įrankius kurie sulėtino judėjimo procesą. Rezultatas pasirodė, kad „openshift“ neapima visų poreikių, jums reikia tikros aparatinės įrangos arba bent jau galimybės žaisti su branduoliu.

170 diena: „Openshift“ netinka, rizikuokime su „Windows Azure Pack“?

Galima: 120 VM konfigūracijos perkėlimas iš CoreOS į CentOS per 18 mėnesių

„Hyper-V“ nėra labai draugiškas, o SCVMM jo nepagerina. Tačiau yra toks dalykas kaip „Windows Azure Pack“, kuris yra SCVMM priedas ir imituoja „Azure“. Tačiau iš tikrųjų produktas atrodo apleistas: dokumentacijoje yra neveikiančių nuorodų ir ji yra labai menka. Tačiau nagrinėdami galimybes supaprastinti mūsų debesies gyvenimą, jie taip pat atsižvelgė į tai.

250 diena: „Windows Azure Pack“ nėra labai geras. Mes liekame SCVMM

Galima: 120 VM konfigūracijos perkėlimas iš CoreOS į CentOS per 18 mėnesių

„Windows Azure Pack“ atrodė daug žadanti, tačiau dėl nereikalingų funkcijų buvo nuspręsta WAP ir jo sudėtingumo neįtraukti į sistemą ir liko prie SCVMM.

360 diena: dramblio valgymas po gabalėlį

Galima: 120 VM konfigūracijos perkėlimas iš CoreOS į CentOS per 18 mėnesių

Tik po metų platforma persikėlimui buvo paruošta ir persikraustymo procesas prasidėjo. Šiuo tikslu buvo įdiegta S.M.A.R.T. užduotis. Mes patikrinome visas VM ir pradėjome po vieną išsiaiškinti konfigūraciją, aprašyti ją Ansible ir padengti testais.

450 diena: kokią sistemą gavote?

Galima: 120 VM konfigūracijos perkėlimas iš CoreOS į CentOS per 18 mėnesių

Pats procesas nėra įdomus. Tai įprasta, galima pastebėti, kad dauguma konfigūracijų buvo gana paprastos arba izomorfinės ir pagal Pareto principą 80% VM konfigūracijų užtrukdavo 20% laiko. Tuo pačiu principu 80% laiko buvo praleista ruošiantis persikėlimui ir tik 20% pačiam judėjimui.

540 diena: finalas

Galima: 120 VM konfigūracijos perkėlimas iš CoreOS į CentOS per 18 mėnesių

Kas atsitiko per 18 mėnesių?

  1. Sutartys tapo kodeksu.
  2. Fizinis darbas -> Mechanizacija -> Automatika.

Šaltinis: www.habr.com

Добавить комментарий