Pokrenuli smo službenog Terraform pružatelja usluga za suradnju sa Selectelom. Ovaj proizvod omogućuje korisnicima potpunu implementaciju upravljanja resursima kroz metodologiju Infrastructure-as-code.
Davatelj trenutno podržava upravljanje resursima usluge "Virtualni privatni oblak" (u daljnjem tekstu VPC). U budućnosti planiramo dodati upravljanje resursima za ostale usluge koje pruža Selectel.
Kao što već znate, VPC usluga izgrađena je na OpenStacku. Međutim, zbog činjenice da OpenStack ne pruža izvorne alate za posluživanje javnog oblaka, implementirali smo funkcionalnost koja nedostaje u skupu dodatnih API-ja koji pojednostavljuju upravljanje složenim složenim objektima i čine rad praktičnijim. Neke od funkcija dostupnih u OpenStacku zatvorene su za izravnu upotrebu, ali su dostupne putem naš API.
Selectel Terraform pružatelj sada uključuje mogućnost upravljanja sljedećim VPC resursima:
projekti i njihove kvote;
korisnici, njihove uloge i tokeni;
javne podmreže, uključujući međuregionalne i VRRP;
softverske licence.
Davatelj koristi našu javnu biblioteku Go za rad s VPC API-jem. I biblioteka i sam pružatelj su otvorenog koda, njihov razvoj se odvija na Githubu:
Za upravljanje drugim resursima u oblaku, kao što su virtualni strojevi, diskovi, Kubernetes klasteri, možete koristiti OpenStack Terraform providera. Službena dokumentacija za oba pružatelja dostupna je na sljedećim poveznicama:
Manifesti za rad sa Selectelom izrađuju se pomoću Terraforma ili pomoću skupa gotovih primjera koji su dostupni u našem Github repozitoriju: teraforma-primjeri.
Repozitorij s primjerima podijeljen je u dva direktorija:
moduli, koji sadrži male module za višekratnu upotrebu koji uzimaju skup parametara kao ulaz i upravljaju malim skupom resursa;
primjeri, koji sadrži primjere cjelovitog skupa međusobno povezanih modula.
Nakon instaliranja Terraforma, kreiranja Selectel API ključa i upoznavanja s primjerima, prijeđimo na praktične primjere.
U spisu vars.tf opisani su svi parametri koji će se koristiti prilikom pozivanja modula. Neki od njih imaju zadane vrijednosti, na primjer, poslužitelj će biti kreiran u zoni ru-3a sa sljedećom konfiguracijom:
argument ignoriraj_promjene omogućuje ignoriranje promjena atributa id za sliku korištenu za stvaranje virtualnog stroja. U VPC servisu većina javnih slika ažurira se automatski jednom tjedno i u isto vrijeme njihove id također mijenja. To je zbog osobitosti komponente OpenStack - Glance, u kojoj se slike smatraju nepromjenjivim entitetima.
Ako stvarate ili mijenjate postojeći poslužitelj ili disk koji ima kao argument image_id polovan id javnu sliku, nakon što se ta slika ažurira, ponovno pokretanje Terraform manifesta ponovno će stvoriti poslužitelj ili disk. Korištenje argumenta ignoriraj_promjene omogućuje izbjegavanje takve situacije.
Napomena: argument ignoriraj_promjene pojavio u Terraformu dosta davno: povlačenje#2525.
argument ignore_resize_confirmation potreban za uspješnu promjenu veličine lokalnog diska, jezgri ili memorije poslužitelja. Takve se promjene vrše putem komponente OpenStack Nova pomoću zahtjeva veličinu. Zadana Nova nakon zahtjeva veličinu stavlja poslužitelj u status potvrdi_promjenu veličine i čeka dodatnu potvrdu od korisnika. Međutim, ovo se ponašanje može promijeniti tako da Nova ne čeka dodatne radnje od korisnika.
Navedeni argument omogućuje Terraformu da ne čeka status potvrdi_promjenu veličine za poslužitelj i budite spremni da poslužitelj bude u aktivnom statusu nakon promjene njegovih parametara. Argument je dostupan od verzije 1.10.0 dobavljača OpenStack Terraform: povlačenje#422.
Stvaranje resursa
Prije pokretanja manifesta, imajte na umu da su u našem primjeru pokrenuta dva različita pružatelja usluga, a pružatelj OpenStack ovisi o resursima pružatelja Selectel, budući da je bez stvaranja korisnika u projektu nemoguće upravljati objektima koji mu pripadaju . Nažalost, iz istog razloga ne možemo jednostavno pokrenuti naredbu terraform primijeniti unutar našeg primjera. Prvo trebamo učiniti primijeniti za modul projekt_s_korisnikom a nakon toga za sve ostalo.
Napomena: ovaj problem još nije riješen u Terraformu, raspravu možete pratiti na Githubu na izdanje #2430 и izdanje #4149.
Nakon pokretanja naredbe, Terraform će pokazati koje resurse želi stvoriti i zatražiti potvrdu:
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
Nakon što su projekt, korisnik i uloga stvoreni, možete početi stvarati preostale resurse:
S kreiranim virtualnim strojem možete raditi putem SSH-a koristeći navedeni IP.
Resursi za uređivanje
Osim stvaranja resursa kroz Terraform, oni se također mogu mijenjati.
Na primjer, povećajmo broj jezgri i memorije za naš poslužitelj promjenom vrijednosti za parametre server_vcpus и server_ram_mb u spisu primjeri/vpc/server_local_root_disk/main.tf:
U našem primjer spremišta Također možete vidjeti manifeste za stvaranje virtualnih strojeva s mrežnim pogonima.
Primjer kreiranja Kubernetes klastera
Prije nego što prijeđemo na sljedeći primjer, očistit ćemo resurse koje smo ranije stvorili. Da biste to učinili u korijenu projekta terraform-examples/examples/vpc/server_local_root_disk Pokrenimo naredbu za brisanje OpenStack objekata:
U oba slučaja morat ćete potvrditi brisanje svih objekata:
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
Ovaj primjer stvara projekt, korisnika s ulogom u projektu i podiže jedan Kubernetes klaster. U datoteci vars.tf možete vidjeti zadane vrijednosti, kao što su broj čvorova, njihove karakteristike, Kubernetes verzija itd.
Da bismo stvorili resurse slične prvom primjeru, prvo ćemo započeti s inicijalizacijom modula i stvaranjem resursa modula projekt_s_korisnikoma zatim stvara sve ostalo:
Prenijet ćemo kreiranje i upravljanje Kubernetes klasterima kroz OpenStack Magnum komponentu. Više o tome kako raditi s klasterom možete saznati u jednom od naših prethodni člancikao i u baza znanja.
Prilikom pripreme klastera izradit će se diskovi i virtualni strojevi te instalirati sve potrebne komponente. Priprema traje oko 4 minute, a za to vrijeme Terraform će prikazati poruke poput:
module.kubernetes_cluster.openstack_containerinfra_cluster_v1.cluster_1: Still creating... (3m0s elapsed)
Kada instalacija završi, Terraform će pokazati da je klaster spreman i prikazati njegov ID:
Za upravljanje stvorenim Kubernetes klasterom putem uslužnog programa kubectl trebate nabaviti datoteku za pristup klasteru. Da biste to učinili, idite na projekt kreiran putem Terraforma na popisu projekata na vašem računu:
Zatim slijedite vezu like xxxxxx.selvpc.rukoji se pojavljuje ispod naziva projekta:
Za podatke za prijavu koristite korisničko ime i lozinku koje ste kreirali putem Terraforma. Ako niste varali vars.tf ili glavni.tf za naš primjer, korisnik će imati ime tf_korisnik. Morate koristiti vrijednost varijable kao lozinku TF_VAR_korisnička_lozinka, koji je naveden pri pokretanju terraform primijeniti ranije.
Unutar projekta morate otići na karticu Kubernetes:
Ovdje se nalazi klaster stvoren putem Terraforma. Preuzmite datoteku za kubectl možete na kartici "Pristup":
Upute za instalaciju nalaze se na istoj kartici. kubectl i korištenje preuzetog config.yaml.
Nakon lansiranja kubectl i postavljanje varijable okoline KUBECONFIG možete koristiti Kubernetes:
Kada se broj čvorova promijeni, klaster će ostati dostupan. Nakon dodavanja čvora putem Terraforma, možete ga koristiti bez dodatne konfiguracije:
$ 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
Zaključak
U ovom smo se članku upoznali s glavnim načinima rada "Virtualni privatni oblak" putem Terraforma. Bit će nam drago ako koristite službenog dobavljača Selectel Terraform i date povratne informacije.
Sve greške pronađene u Selectel Terraform pružatelju mogu se prijaviti putem Problemi s Githubom.