MÄs esam uzsÄkuÅ”i oficiÄlo Terraform nodroÅ”inÄtÄju darbam ar Selectel. Å is produkts ļauj lietotÄjiem pilnÄ«bÄ ieviest resursu pÄrvaldÄ«bu, izmantojot metodi Infrastructure-as-code (infrastruktÅ«ra kÄ kods).
Pakalpojumu sniedzÄjs paÅ”laik atbalsta pakalpojumu resursu pÄrvaldÄ«bu "VirtuÄlais privÄtais mÄkonis" (turpmÄk VPC). NÄkotnÄ plÄnojam tai pievienot arÄ« citu Selectel sniegto pakalpojumu resursu pÄrvaldÄ«bu.
KÄ jÅ«s jau zinÄt, VPC pakalpojums ir izveidots uz OpenStack. TomÄr, Åemot vÄrÄ to, ka OpenStack nenodroÅ”ina vietÄjos rÄ«kus publiskÄ mÄkoÅa apkalpoÅ”anai, mÄs esam ieviesuÅ”i trÅ«kstoÅ”o funkcionalitÄti papildu API komplektÄ, kas vienkÄrÅ”o sarežģītu saliktu objektu pÄrvaldÄ«bu un padara darbu ÄrtÄku. Daļa no OpenStack pieejamÄs funkcionalitÄtes ir slÄgta no tieÅ”as lietoÅ”anas, taÄu ir pieejama caur mÅ«su API.
Selectel Terraform nodroÅ”inÄtÄjs tagad var pÄrvaldÄ«t Å”Ädus VPC resursus:
projekti un to kvotas;
lietotÄji, viÅu lomas un marÄ·ieri;
publiskie apakŔtīkli, tostarp starpreģionu un VRRP;
programmatūras licences.
Pakalpojumu sniedzÄjs izmanto mÅ«su publisko Go bibliotÄku, lai strÄdÄtu ar VPC API. Gan bibliotÄka, gan pats nodroÅ”inÄtÄjs ir atvÄrtÄ pirmkoda, tie tiek izstrÄdÄti vietnÄ Github:
Lai pÄrvaldÄ«tu pÄrÄjos mÄkoÅa resursus, piemÄram, virtuÄlÄs maŔīnas, diskus, Kubernetes klasterus, varat izmantot OpenStack Terraform nodroÅ”inÄtÄju. OficiÄlÄ dokumentÄcija abiem pakalpojumu sniedzÄjiem ir pieejama Å”ajÄs saitÄs:
Lai sÄktu, jums jÄinstalÄ Terraform (instrukcijas un saites uz instalÄcijas pakotnÄm var atrast vietnÄ oficiÄlÄ vietne).
Lai strÄdÄtu, pakalpojumu sniedzÄjam ir nepiecieÅ”ama Selectel API atslÄga, kas ir izveidota konta vadÄ«bas panelis.
Manifesti darbam ar Selectel tiek izveidoti, izmantojot Terraform vai izmantojot gatavu piemÄru kopu, kas ir pieejama mÅ«su Github repozitorijÄ: terraformas piemÄri.
Repozitorijs ar piemÄriem ir sadalÄ«ts divos direktorijos:
moduļi, kas satur mazus atkÄrtoti lietojamus moduļus, kas izmanto parametru kopu kÄ ievadi un pÄrvalda nelielu resursu kopu;
piemÄri, kurÄ ir piemÄri pilnam savstarpÄji savienotu moduļu komplektam.
PÄc Terraform instalÄÅ”anas, Selectel API atslÄgas izveidoÅ”anas un piemÄru pÄrskatÄ«Å”anas, pÄriesim pie praktiskiem piemÄriem.
FailÄ vars.tf ir aprakstÄ«ti visi parametri, kas tiks izmantoti, izsaucot moduļus. DažÄm no tÄm ir noklusÄjuma vÄrtÄ«bas, piemÄram, serveris tiks izveidots zonÄ lv-3a ar Å”Ädu konfigurÄciju:
Arguments ignorÄt_izmaiÅas ļauj ignorÄt atribÅ«tu izmaiÅas id attÄlam, ko izmanto, lai izveidotu virtuÄlo maŔīnu. VPC servisÄ lielÄkÄ daļa publisko attÄlu tiek automÄtiski atjauninÄti reizi nedÄÄ¼Ä un tajÄ paÅ”Ä laikÄ id arÄ« mainÄs. Tas ir saistÄ«ts ar OpenStack komponenta - Glance - darbÄ«bas Ä«patnÄ«bÄm, kurÄs attÄli tiek uzskatÄ«ti par nemainÄ«gÄm entÄ«tijÄm.
Ja izveidojat vai modificÄjat esoÅ”u serveri vai disku, kuram ir kÄ arguments attÄla_id lietots id publisks attÄls, pÄc Ŕī attÄla atjauninÄÅ”anas, vÄlreiz palaižot Terraform manifestu, serveris vai disks tiks izveidots no jauna. Izmantojot argumentu ignorÄt_izmaiÅas izvairÄs no Å”Ädas situÄcijas.
piezÄ«me: arguments ignorÄt_izmaiÅas parÄdÄ«jÄs Terraform jau sen: pull #2525.
Arguments ignore_resize_confirmation nepiecieÅ”ams, lai veiksmÄ«gi mainÄ«tu servera lokÄlÄ diska, serdeÅu vai atmiÅas izmÄrus. Å Ädas izmaiÅas tiek veiktas, izmantojot OpenStack Nova komponentu, izmantojot pieprasÄ«jumu mainÄ«t. NoklusÄjuma Nova pÄc pieprasÄ«juma mainÄ«t nostÄda serveri statusÄ verify_resize un gaida papildu apstiprinÄjumu no lietotÄja. TomÄr Å”o uzvedÄ«bu var mainÄ«t, lai Nova nebÅ«tu jÄgaida, lÄ«dz lietotÄjs veiks papildu darbÄ«bas.
NorÄdÄ«tais arguments ļauj Terraform negaidÄ«t statusu verify_resize serverim un esiet gatavi tam, ka serveris pÄc parametru maiÅas bÅ«s aktÄ«vÄ statusÄ. Arguments ir pieejams kopÅ” OpenStack Terraform nodroÅ”inÄtÄja versijas 1.10.0: pull #422.
Resursu izveide
Pirms manifestu palaiÅ”anas jÄÅem vÄrÄ, ka mÅ«su piemÄrÄ tiek palaisti divi dažÄdi nodroÅ”inÄtÄji, un OpenStack nodroÅ”inÄtÄjs ir atkarÄ«gs no Selectel nodroÅ”inÄtÄja resursiem, jo, neizveidojot projektÄ lietotÄju, nav iespÄjams pÄrvaldÄ«t viÅam piederoÅ”os objektus. . DiemžÄl tÄ paÅ”a iemesla dÄļ mÄs nevaram vienkÄrÅ”i palaist komandu pielietot terraformu mÅ«su piemÄrÄ. Mums vispirms jÄdara piemÄrot modulim projekts_ar_lietotÄju un pÄc tam par visu pÄrÄjo.
PiezÄ«me. PaziÅotÄ problÄma vÄl nav atrisinÄta pakalpojumÄ Terraform. Varat sekot diskusijai vietnÄ Github vietnÄ izdevums Nr. 2430 Šø izdevums Nr. 4149.
PÄc komandas palaiÅ”anas Terraform parÄdÄ«s, kÄdus resursus tÄ vÄlas izveidot, un bÅ«s nepiecieÅ”ams apstiprinÄjums:
Plan: 3 to add, 0 to change, 0 to destroy.
Do you want to perform these actions?
Terraform will perform the actions described above.
Only 'yes' will be accepted to approve.
Enter a value: yes
Kad projekts, lietotÄjs un loma ir izveidoti, varat sÄkt veidot pÄrÄjos resursus.
Pirms pÄriet uz nÄkamo piemÄru, mÄs iztÄ«rÄ«sim iepriekÅ” izveidotos resursus. Lai to izdarÄ«tu, projekta saknÄ terraform-examples/examples/vpc/server_local_root_disk palaidiet komandu, lai izdzÄstu OpenStack objektus:
Abos gadÄ«jumos jums bÅ«s jÄapstiprina visu objektu dzÄÅ”ana:
Do you really want to destroy all resources?
Terraform will destroy all your managed infrastructure, as shown above.
There is no undo. Only 'yes' will be accepted to confirm.
Enter a value: yes
Å ajÄ piemÄrÄ tiek izveidots projekts, lietotÄjs ar lomu projektÄ un tiek izveidots viens Kubernetes klasteris. FailÄ vars.tf jÅ«s varat redzÄt noklusÄjuma vÄrtÄ«bas, piemÄram, mezglu skaitu, to raksturlielumus, Kubernetes versiju un daudz ko citu.
Lai izveidotu resursus, lÄ«dzÄ«gi kÄ pirmajÄ piemÄrÄ, vispirms sÄksim moduļu inicializÄciju un moduļu resursu izveidi projekts_ar_lietotÄjuun tad izveido visu pÄrÄjo:
Nodosim Kubernetes klasteru izveidi un pÄrvaldÄ«bu caur OpenStack Magnum komponentu. VairÄk par to, kÄ strÄdÄt ar kopu, varat uzzinÄt kÄdÄ no mÅ«su iepriekÅ”Äjie raksti, kÄ arÄ« iekÅ”Ä zinÄÅ”anu pamats.
Sagatavojot klasteru, tiks izveidoti diski, virtuÄlÄs maŔīnas un uzstÄdÄ«tas visas nepiecieÅ”amÄs sastÄvdaļas. SagatavoÅ”ana aizÅem apmÄram 4 minÅ«tes, kuru laikÄ Terraform parÄdÄ«s Å”Ädus ziÅojumus:
module.kubernetes_cluster.openstack_containerinfra_cluster_v1.cluster_1: Still creating... (3m0s elapsed)
Kad instalÄÅ”ana ir pabeigta, Terraform ziÅos, ka klasteris ir gatavs, un parÄdÄ«s tÄ ID:
Lai pÄrvaldÄ«tu izveidoto Kubernetes klasteru, izmantojot utilÄ«tu kubectl jums ir jÄiegÅ«st klastera piekļuves fails. Lai to izdarÄ«tu, sava konta projektu sarakstÄ dodieties uz projektu, kas izveidots, izmantojot Terraform:
TÄlÄk sekojiet saitei xxxxxx.selvpc.ru, kas tiek parÄdÄ«ts zem projekta nosaukuma:
KÄ pieteikÅ”anÄs informÄciju izmantojiet lietotÄjvÄrdu un paroli, kas tika izveidota, izmantojot Terraform. Ja neesi mainÄ«jies vars.tf vai galvenais.tf mÅ«su piemÄrÄ lietotÄjam bÅ«s vÄrds tf_user. MainÄ«gÄ vÄrtÄ«ba ir jÄizmanto kÄ parole TF_VAR_user_password, kas tika norÄdÄ«ts startÄÅ”anas laikÄ pielietot terraformu agrÄk.
Projekta iekÅ”pusÄ jums jÄiet uz cilni Kubernetes:
Å eit ir klasteris, kas izveidots, izmantojot Terraform. LejupielÄdÄt failu kubectl cilnÄ "Piekļuve" varat:
Å ajÄ cilnÄ ir instalÄÅ”anas norÄdÄ«jumi. kubectl un izmantojiet lejupielÄdÄto config.yaml.
PÄc palaiÅ”anas kubectl un vides mainÄ«gÄ iestatÄ«Å”ana KUBECONFIG varat izmantot Kubernetes:
Ja mezglu skaits mainÄs, klasteris paliks pieejams. PÄc mezgla pievienoÅ”anas, izmantojot Terraform, varat to izmantot bez papildu konfigurÄcijas:
$ kubectl get nodes
NAME STATUS ROLES AGE VERSION
tf-cluster-rz6nggvs4va7-master-0 Ready,SchedulingDisabled master 8m v1.12.4
tf-cluster-rz6nggvs4va7-minion-0 Ready <none> 8m v1.12.4
tf-cluster-rz6nggvs4va7-minion-1 Ready <none> 8m v1.12.4
tf-cluster-rz6nggvs4va7-minion-2 Ready <none> 3m v1.12.4
SecinÄjums
Å ajÄ rakstÄ mÄs iepazinÄmies ar galvenajiem veidiem, kÄ strÄdÄt ar "VirtuÄlais privÄtais mÄkonis" izmantojot Terraform. MÄs priecÄsimies, ja izmantosiet oficiÄlo Selectel Terraform pakalpojumu sniedzÄju un sniegsiet atsauksmes.
Par visÄm atrastajÄm Selectel Terraform nodroÅ”inÄtÄja kļūdÄm var ziÅot, izmantojot Github problÄmas.