A Selectellel együttműködve hivatalos Terraform szolgáltatót indítottunk. Ez a termék lehetővé teszi a felhasználók számára, hogy az Infrastructure-as-code módszertanon keresztül teljes mértékben megvalósítsák az erőforrás-kezelést.
A szolgáltató jelenleg támogatja a szolgáltatási erőforrás-kezelést "Virtuális privát felhő" (a továbbiakban: VPC). A jövőben azt tervezzük, hogy a Selectel által nyújtott egyéb szolgáltatásokhoz is hozzáadjuk az erőforrás-kezelést.
Mint már tudja, a VPC szolgáltatás az OpenStackre épül. Tekintettel azonban arra, hogy az OpenStack nem biztosít natív eszközöket a nyilvános felhő kiszolgálásához, a hiányzó funkcionalitást egy sor további API-ban implementáltuk, amelyek leegyszerűsítik az összetett összetett objektumok kezelését és kényelmesebbé teszik a munkát. Az OpenStackben elérhető funkciók egy része le van zárva a közvetlen használattól, de elérhető API-nkat.
A Selectel Terraform szolgáltató mostantól a következő VPC-erőforrások kezelését is lehetővé teszi:
projektek és kvótáik;
felhasználók, szerepeik és tokenjeik;
nyilvános alhálózatok, beleértve a régiók közötti és a VRRP-t;
szoftver licencek.
A szolgáltató a nyilvános Go könyvtárunkat használja a VPC API-val való együttműködéshez. A könyvtár és maga a szolgáltató is nyílt forráskódú, fejlesztésük a Githubon történik:
Más felhő-erőforrások, például virtuális gépek, lemezek, Kubernetes-fürtök kezeléséhez használhatja az OpenStack Terraform szolgáltatót. Mindkét szolgáltató hivatalos dokumentációja az alábbi linkeken érhető el:
A kezdéshez telepítenie kell a Terraformot (az utasításokat és a telepítőcsomagokra mutató hivatkozásokat a következő címen találja: hivatalos honlapján).
A működéshez a szolgáltatónak Selectel API-kulcsra van szüksége, amely itt jön létre fiókvezérlő panelek.
A Selectellel való munkavégzéshez szükséges manifesztek a Terraform segítségével vagy a Github-tárhelyünkben elérhető kész példák segítségével készülnek: terraform-példák.
A példákat tartalmazó tárház két könyvtárra oszlik:
modulok, amely kisméretű újrafelhasználható modulokat tartalmaz, amelyek bemenetként egy sor paramétert vesznek fel, és egy kis erőforráskészletet kezelnek;
példák, amely példákat tartalmaz az összekapcsolt modulok teljes készletére.
A Terraform telepítése, a Selectel API kulcs létrehozása és a példák megismerése után térjünk át a gyakorlati példákra.
Fájlban vars.tf A modulok hívásakor használt összes paraméter le van írva. Némelyikük alapértelmezett értékkel rendelkezik, például a szerver a zónában jön létre ru-3a a következő konfigurációval:
Érv ignore_changes lehetővé teszi az attribútumváltozások figyelmen kívül hagyását id a virtuális gép létrehozásához használt képhez. A VPC szolgáltatásban a legtöbb nyilvános kép hetente egyszer automatikusan frissül, és ezzel egy időben id is változik. Ez az OpenStack komponens - Glance - sajátosságaiból adódik, amelyben a képeket megváltoztathatatlan entitásoknak tekintik.
Ha olyan meglévő szervert vagy lemezt hoz létre vagy módosít, amely argumentumként szerepel image_id használt id nyilvános kép, majd a képfájl frissítése után a Terraform jegyzék újbóli futtatásával újra létrejön a szerver vagy a lemez. Érv használatával ignore_changes lehetővé teszi az ilyen helyzetek elkerülését.
Megjegyzés: érv ignore_changes elég régen jelent meg a Terraformban: pull#2525.
Érv ignore_resize_confirmation szükséges a helyi lemez, a magok vagy a szervermemória sikeres átméretezéséhez. Az ilyen módosítások az OpenStack Nova komponensen keresztül hajthatók végre kéréssel átméretezése. Az alapértelmezett Nova kérés után átméretezése állapotba helyezi a szervert verify_resize és további megerősítést vár a felhasználótól. Ez a viselkedés azonban megváltoztatható, hogy a Nova ne várjon további műveleteket a felhasználótól.
A megadott argumentum lehetővé teszi, hogy a Terraform ne várja meg az állapotot verify_resize a szerver számára, és készüljön fel arra, hogy a szerver a paramétereinek megváltoztatása után aktív állapotba kerül. Az argumentum az OpenStack Terraform szolgáltató 1.10.0-s verziójából érhető el: pull#422.
Erőforrások létrehozása
A manifesztek futtatása előtt vegye figyelembe, hogy példánkban két különböző szolgáltató indul el, és az OpenStack szolgáltató a Selectel szolgáltató erőforrásaitól függ, mivel felhasználó létrehozása nélkül a projektben lehetetlen kezelni a hozzá tartozó objektumokat. . Sajnos ugyanezen okból nem tudjuk csak úgy futtatni a parancsot terraform alkalmazni példánkban. Először meg kell tennünk alkalmaz modulhoz projekt_felhasználóval és utána minden másért.
Megjegyzés: Ez a probléma még nincs megoldva a Terraformban, a vitát a Githubon a következő címen követheti 2430. szám и 4149. szám.
A parancs futtatása után a Terraform megmutatja, milyen erőforrásokat szeretne létrehozni, és megerősítést kér:
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
A projekt, a felhasználó és a szerepkör létrehozása után megkezdheti a fennmaradó erőforrások létrehozását:
A létrehozott virtuális géppel SSH-n keresztül dolgozhat a megadott IP-cím használatával.
Erőforrások szerkesztése
Amellett, hogy erőforrásokat hoz létre a Terraformon keresztül, módosíthatók is.
Például növeljük a szerverünk magjainak és memóriájának számát a paraméterek értékeinek módosításával szerver_vcpus и szerver_ram_mb fájlban examples/vpc/server_local_root_disk/main.tf:
A miénkben példatárak Megtekintheti a hálózati meghajtókkal rendelkező virtuális gépek létrehozásának jegyzékeit is.
Példa Kubernetes-fürt létrehozására
Mielőtt továbblépnénk a következő példára, megtisztítjuk a korábban létrehozott erőforrásokat. Ehhez a projekt gyökerében terraform-examples/examples/vpc/server_local_root_disk Futtassuk az OpenStack objektumok törlésére szolgáló parancsot:
Mindkét esetben meg kell erősítenie az összes objektum törlését:
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
Ez a példa létrehoz egy projektet, a projektben szerepkörrel rendelkező felhasználót, és létrehoz egy Kubernetes-fürtöt. Fájlban vars.tf láthatja az alapértelmezett értékeket, például a csomópontok számát, jellemzőit, a Kubernetes verzióját stb.
Az első példához hasonló erőforrások létrehozásához először elkezdjük a modulok inicializálását és a modul erőforrások létrehozását projekt_felhasználóvalmajd létrehoz minden mást:
A Kubernetes-fürtök létrehozását és kezelését az OpenStack Magnum összetevőn keresztül fogjuk átvinni. A fürtökkel való munkavégzésről többet megtudhat valamelyikünkben korábbi cikkek, valamint a Tudásbázis.
A fürt előkészítésekor lemezek és virtuális gépek jönnek létre, és minden szükséges összetevő telepítve lesz. Az előkészítés körülbelül 4 percet vesz igénybe, ezalatt a Terraform a következő üzeneteket jeleníti meg:
module.kubernetes_cluster.openstack_containerinfra_cluster_v1.cluster_1: Still creating... (3m0s elapsed)
A telepítés befejezése után a Terraform jelzi, hogy a fürt készen áll, és megjeleníti az azonosítóját:
A létrehozott Kubernetes-fürt kezeléséhez a segédprogramon keresztül kubectl be kell szereznie a fürt hozzáférési fájlt. Ehhez lépjen a Terraformon keresztül létrehozott projektre a fiókjában található projektek listájában:
Ezután kövesse a like linket xxxxxx.selvpc.ruamely a projekt neve alatt jelenik meg:
A bejelentkezési adatokhoz használja a Terraformon keresztül létrehozott felhasználónevet és jelszót. Ha nem csaltál vars.tf vagy fő.tf példánkban a felhasználó neve lesz tf_user. Jelszóként a változó értékét kell használni TF_VAR_user_password, amelyet az indításkor adtunk meg terraform alkalmazni korábban.
A projekten belül a lapra kell lépnie Kubernetes:
Itt található a Terraform segítségével létrehozott klaszter. Fájl letöltése ehhez kubectl a „Hozzáférés” lapon a következőket teheti:
A telepítési utasítások ugyanazon a fülön találhatók. kubectl és a letöltöttek használata config.yaml.
Indítás után kubectl és a környezeti változó beállítása KUBECONFIG használhatja a Kuberneteset:
Ha a csomópontok száma megváltozik, a fürt elérhető marad. Miután hozzáadott egy csomópontot a Terraform segítségével, további konfiguráció nélkül használhatja:
$ 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
Következtetés
Ebben a cikkben megismerkedtünk a főbb munkamódszerekkel "Virtuális privát felhő" a Terraformon keresztül. Örülünk, ha a hivatalos Selectel Terraform szolgáltatót használja, és visszajelzést ad.
A Selectel Terraform szolgáltatóban talált hibákat a következőn keresztül lehet jelenteni Github problémák.