Selectel ilə işləmək üçün rəsmi Terraform provayderini işə saldıq. Bu məhsul istifadəçilərə İnfrastruktur-kod metodologiyası vasitəsilə resursların idarə edilməsini tam şəkildə həyata keçirməyə imkan verir.
Provayder hazırda xidmət resurslarının idarə edilməsini dəstəkləyir "Virtual şəxsi bulud" (bundan sonra VPC adlandırılacaq). Gələcəkdə biz Selectel tərəfindən təqdim olunan digər xidmətlər üçün resurs idarəçiliyini əlavə etməyi planlaşdırırıq.
Artıq bildiyiniz kimi, VPC xidməti OpenStack üzərində qurulub. Bununla belə, OpenStack ictimai buludlara xidmət üçün yerli alətlər təqdim etmədiyinə görə, biz çatışmayan funksionallığı mürəkkəb kompozit obyektlərin idarə edilməsini sadələşdirən və işi daha rahat edən əlavə API-lər dəstində həyata keçirdik. OpenStack-də mövcud olan bəzi funksiyalar birbaşa istifadə edilə bilməz, lakin onlar vasitəsilə mövcuddur bizim API.
Selectel Terraform provayderinə indi aşağıdakı VPC resurslarını idarə etmək imkanı daxildir:
layihələr və onların kvotaları;
istifadəçilər, onların rolları və əlamətləri;
regional və VRRP daxil olmaqla ictimai alt şəbəkələr;
proqram lisenziyaları.
Provayder VPC API ilə işləmək üçün ictimai Go kitabxanamızdan istifadə edir. Həm kitabxana, həm də provayderin özü açıq mənbəlidir, onların inkişafı Github-da həyata keçirilir:
Virtual maşınlar, disklər, Kubernetes klasterləri kimi digər bulud resurslarını idarə etmək üçün OpenStack Terraform provayderindən istifadə edə bilərsiniz. Hər iki provayder üçün rəsmi sənədlər aşağıdakı linklərdə mövcuddur:
Başlamaq üçün siz Terraform-u quraşdırmalısınız (təlimatlar və quraşdırma paketlərinə keçidlər burada tapa bilərsiniz rəsmi sayt).
Fəaliyyət göstərmək üçün provayderdə yaradılmış Selectel API açarı tələb olunur hesab idarəetmə panelləri.
Selectel ilə işləmək üçün manifestlər Terraform istifadə edərək və ya Github depomuzda mövcud olan bir sıra hazır nümunələrdən istifadə etməklə yaradılır: terraform nümunələri.
Nümunələri olan depo iki qovluğa bölünür:
modulları, bir sıra parametrləri giriş kimi qəbul edən və kiçik resurslar dəstini idarə edən kiçik təkrar istifadə edilə bilən modulları ehtiva edir;
misal, bir-biri ilə əlaqəli modulların tam dəstinə dair nümunələri ehtiva edir.
Terraform-u quraşdırdıqdan, Selectel API açarı yaratdıqdan və nümunələrlə tanış olduqdan sonra praktik nümunələrə keçək.
Faylda vars.tf modulları çağırarkən istifadə ediləcək bütün parametrlər təsvir edilmişdir. Onlardan bəzilərinin standart dəyərləri var, məsələn, zonada server yaradılacaq ru-3a aşağıdakı konfiqurasiya ilə:
Lazım gələrsə, başqa bir açıq açar təyin edə bilərsiniz. Açarın fayl yolu kimi göstərilməsinə ehtiyac yoxdur; siz həmçinin dəyəri sətir kimi əlavə edə bilərsiniz.
Daha sonra bu faylda modullar işə salınır layihə_istifadəçi ilə и server_local_root_disk, zəruri resursları idarə edən.
arqument dəyişiklikləri görməyin atribut dəyişikliklərinə məhəl qoymamağa imkan verir id virtual maşın yaratmaq üçün istifadə olunan təsvir üçün. VPC xidmətində əksər ictimai şəkillər həftədə bir dəfə avtomatik olaraq yenilənir və eyni zamanda onların id də dəyişir. Bu, təsvirlərin dəyişməz obyektlər hesab edildiyi OpenStack komponentinin - Glance-in xüsusiyyətləri ilə bağlıdır.
Arqument kimi mövcud olan server və ya diski yaradır və ya dəyişdirirsinizsə image_id işlənmiş id ictimai şəkil, sonra həmin şəkil yeniləndikdən sonra Terraform manifestini yenidən işə salmaq server və ya diski yenidən yaradacaq. Arqumentdən istifadə dəyişiklikləri görməyin belə bir vəziyyətdən qaçmağa imkan verir.
Qeyd: mübahisə dəyişiklikləri görməyin olduqca uzun müddət əvvəl Terraformda ortaya çıxdı: çəkin # 2525.
arqument Təsdiqini nəzərə alma yerli diskin, nüvələrin və ya server yaddaşının ölçüsünü uğurla dəyişmək üçün lazımdır. Bu cür dəyişikliklər sorğudan istifadə edərək OpenStack Nova komponenti vasitəsilə edilir boyutlandır. Tələbdən sonra standart Nova boyutlandır serveri vəziyyətə gətirir doğrulayın_ölçüsünü və istifadəçidən əlavə təsdiq gözləyir. Bununla belə, bu davranış dəyişdirilə bilər ki, Nova istifadəçidən əlavə hərəkətlər gözləməsin.
Göstərilən arqument Terraforma statusu gözləməməyə imkan verir doğrulayın_ölçüsünü server üçün və parametrlərini dəyişdirdikdən sonra serverin aktiv vəziyyətdə olmasına hazır olun. Arqument OpenStack Terraform provayderinin 1.10.0 versiyasında mövcuddur: çəkin # 422.
Resursların yaradılması
Manifestləri işə salmazdan əvvəl nəzərə alın ki, nümunəmizdə iki fərqli provayder işə salınıb və OpenStack provayderi Selectel provayderinin resurslarından asılıdır, çünki layihədə istifadəçi yaratmadan ona məxsus obyektləri idarə etmək mümkün deyil. . Təəssüf ki, eyni səbəbdən biz sadəcə əmri icra edə bilmirik terraform tətbiq olunur nümunəmiz daxilində. Əvvəlcə etməliyik müraciət edin modul üçün layihə_istifadəçi ilə və bundan sonra hər şey üçün.
Komandanı işə saldıqdan sonra Terraform hansı resursları yaratmaq istədiyini göstərəcək və təsdiq tələb edəcək:
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
Layihə, istifadəçi və rol yaradıldıqdan sonra qalan resursları yaratmağa başlaya bilərsiniz:
Göstərilən IP-dən istifadə edərək SSH vasitəsilə yaradılmış virtual maşınla işləyə bilərsiniz.
Redaktə Resursları
Terraform vasitəsilə resurslar yaratmaqla yanaşı, onlar da dəyişdirilə bilər.
Məsələn, parametrlərin dəyərlərini dəyişdirərək serverimiz üçün nüvələrin və yaddaşın sayını artıraq. server_vcpus и server_ram_mb faylda misallar/vpc/server_local_root_disk/main.tf:
В нашем nümunə depoları Siz həmçinin şəbəkə sürücüləri ilə virtual maşınlar yaratmaq üçün manifestləri görə bilərsiniz.
Kubernetes klasterinin yaradılması nümunəsi
Növbəti nümunəyə keçməzdən əvvəl əvvəllər yaratdığımız resursları təmizləyəcəyik. Bunu layihənin kökündə etmək üçün terraform-nümunələr/nümunələr/vpc/server_local_root_disk OpenStack obyektlərini silmək üçün əmri yerinə yetirək:
Hər iki halda, bütün obyektlərin silinməsini təsdiqləməlisiniz:
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
Bu nümunə bir layihə, layihədə rolu olan bir istifadəçi yaradır və bir Kubernetes klasterini artırır. Faylda vars.tf qovşaqların sayı, onların xüsusiyyətləri, Kubernetes versiyası və s. kimi standart dəyərləri görə bilərsiniz.
Birinci nümunəyə bənzər resurslar yaratmaq üçün ilk növbədə modulları işə salmağa və modul resurslarını yaratmağa başlayacağıq layihə_istifadəçi iləvə sonra hər şeyi yaradır:
Kubernetes klasterlərinin yaradılması və idarə edilməsini OpenStack Magnum komponenti vasitəsilə ötürəcəyik. Klasterlə necə işləmək barədə ətraflı məlumatı bizim birində tapa bilərsiniz əvvəlki məqalələreləcə də bilik bazası.
Klaster hazırlanarkən disklər və virtual maşınlar yaradılacaq və bütün lazımi komponentlər quraşdırılacaq. Hazırlıq təxminən 4 dəqiqə çəkir və bu müddət ərzində Terraform aşağıdakı kimi mesajları göstərəcək:
module.kubernetes_cluster.openstack_containerinfra_cluster_v1.cluster_1: Still creating... (3m0s elapsed)
Quraşdırma tamamlandıqdan sonra Terraform klasterin hazır olduğunu bildirəcək və ID-sini göstərəcək:
Yaradılmış Kubernetes klasterini yardım proqramı vasitəsilə idarə etmək kubectl klasterə giriş faylını əldə etməlisiniz. Bunun üçün hesabınızdakı layihələr siyahısında Terraform vasitəsilə yaradılmış layihəyə keçin:
Sonra, like linkini izləyin xxxxxx.selvpc.rulayihə adının altında görünən:
Giriş məlumatı üçün Terraform vasitəsilə yaratdığınız istifadəçi adı və paroldan istifadə edin. Aldatmamısansa vars.tf və ya main.tf bizim nümunəmiz üçün istifadəçi adı olacaq tf_user. Parol kimi dəyişənin dəyərindən istifadə etməlisiniz TF_VAR_user_parol, başlanğıcda müəyyən edilmişdir terraform tətbiq olunur əvvəllər.
Layihənin içərisində nişana keçməlisiniz Kubernetes:
Terraform vasitəsilə yaradılmış klaster burada yerləşir. üçün faylı yükləyin kubectl "Giriş" sekmesinde edə bilərsiniz:
Quraşdırma təlimatları eyni tabda yerləşir. kubectl və endirilənlərin istifadəsi config.yaml.
Başladıqdan sonra kubectl və mühit dəyişənini təyin edin KUBECONFIG Kubernetes-dən istifadə edə bilərsiniz:
Düyünlərin sayı dəyişdikdə, klaster mövcud qalacaq. Terraform vasitəsilə node əlavə etdikdən sonra onu əlavə konfiqurasiya olmadan istifadə edə bilərsiniz:
$ 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
Nəticə
Bu yazıda biz işləməyin əsas yolları ilə tanış olduq "Virtual şəxsi bulud" Terraform vasitəsilə. Rəsmi Selectel Terraform provayderindən istifadə edib rəy bildirsəniz, şad olarıq.
Selectel Terraform provayderində aşkar edilən hər hansı səhvlər vasitəsilə bildirilə bilər Github Problemləri.