Kami parantos ngaluncurkeun panyadia Terraform resmi pikeun damel sareng Selectel. Produk ieu ngamungkinkeun pamaké pikeun pinuh nerapkeun manajemén sumberdaya ngaliwatan metodologi Infrastruktur-sakumaha-kode.
Panyadia ayeuna ngadukung manajemén sumberdaya jasa "Awan pribadi virtual" (satuluyna disebut VPC). Dina mangsa nu bakal datang, urang rencanana pikeun nambahkeun manajemén sumberdaya pikeun layanan séjén disadiakeun ku Selectel.
Sakumaha anjeun parantos terang, jasa VPC diwangun dina OpenStack. Nanging, kusabab kanyataan yén OpenStack henteu nyayogikeun alat-alat asli pikeun ngaladénan awan umum, kami ngalaksanakeun fungsionalitas anu leungit dina sakumpulan API tambahan anu nyederhanakeun manajemén objék komposit rumit sareng ngajantenkeun padamelan langkung saé. Sababaraha pungsionalitas sadia dina OpenStack ditutup tina pamakéan langsung, tapi geus sadia ngaliwatan API urang.
Panyadia Selectel Terraform ayeuna kalebet kamampuan pikeun ngatur sumber VPC ieu:
proyék jeung kuota maranéhanana;
pamaké, kalungguhan jeung tokens maranéhanana;
subnets umum, kaasup cross-régional jeung VRRP;
lisénsi software.
Panyadia ngagunakeun perpustakaan Go umum urang pikeun dianggo sareng API VPC. Duanana perpustakaan sareng panyadia sorangan open-source, pamekaranna dilaksanakeun dina Github:
Pikeun ngatur sumber awan anu sanés, sapertos mesin virtual, disk, klaster Kubernetes, anjeun tiasa nganggo panyadia OpenStack Terraform. Dokuméntasi resmi pikeun duanana panyadia sayogi dina tautan ieu:
Pikeun ngamimitian, anjeun kedah pasang Terraform (parentah sareng tautan kana bungkusan pamasangan tiasa dipendakan di ramatloka resmi).
Pikeun beroperasi, panyadia merlukeun konci API Selectel, nu dijieun dina panels kontrol akun.
Manifestasi pikeun gawé bareng Selectel didamel nganggo Terraform atanapi nganggo sakumpulan conto siap-siap anu sayogi dina gudang Github kami: terraform-conto.
Repository sareng conto dibagi kana dua diréktori:
modul, ngandung modul reusable leutik nu nyandak sakumpulan parameter salaku input jeung ngatur susunan leutik sumberdaya;
conto, ngandung conto set lengkep modul interconnected.
Saatos masang Terraform, nyiptakeun konci API Selectel sareng familiarize diri sareng conto, hayu urang teraskeun kana conto praktis.
Dina file vars.tf Sadaya parameter anu bakal dianggo nalika nelepon modul dijelaskeun. Sababaraha di antarana boga nilai standar, contona, server bakal dijieun dina zone nu ru-3a kalawan konfigurasi handap:
Upami diperlukeun, Anjeun bisa nangtukeun hiji konci publik béda. Koncina henteu kedah ditetepkeun salaku jalur file; anjeun ogé tiasa nambihan nilai salaku senar.
Salajengna dina file ieu modul dibuka project_with_user и server_local_root_disk, nu ngatur sumberdaya diperlukeun.
Hayu urang nempo modul ieu dina leuwih jéntré.
Nyiptakeun proyék sareng pangguna anu ngagaduhan peran
Argumen ignore_changes ngidinan Anjeun pikeun malire parobahan atribut id pikeun gambar dipaké pikeun nyieun mesin virtual. Dina ladenan VPC, paling gambar umum diropéa otomatis saminggu sakali sarta dina waktos anu sareng aranjeunna id ogé robah. Ieu disababkeun ku peculiarities komponén OpenStack - Glance, dimana gambar dianggap éntitas immutable.
Upami anjeun nyiptakeun atanapi ngarobih server atanapi disk anu tos aya anu gaduh argumen id_gambar digunakeun id gambar publik, lajeng sanggeus éta gambar diropéa, ngajalankeun Terraform manifest deui bakal nyieun deui server atawa disk. Ngagunakeun argumen ignore_changes ngidinan Anjeun pikeun nyingkahan kaayaan kitu.
Catetan: argumen ignore_changes mucunghul dina Terraform rada lila pisan: tarik#2525.
Argumen ignore_resize_confirmation diperlukeun pikeun hasil ngarobah ukuran disk lokal, cores, atawa memori server. Parobihan sapertos kitu dilakukeun ngalangkungan komponén OpenStack Nova nganggo pamundut ngatur ukuran. Default Nova sanggeus pamundut ngatur ukuran nempatkeun server kana status verify_resize sarta ngantosan konfirmasi tambahan ti pamaké. Nanging, kabiasaan ieu tiasa dirobih supados Nova henteu ngantosan tindakan tambahan ti pangguna.
Argumen anu ditangtukeun ngamungkinkeun Terraform henteu ngantosan statusna verify_resize pikeun server jeung jadi disiapkeun keur server dina status aktip sanggeus ngarobah parameter na. Argumenna sayogi tina vérsi 1.10.0 panyadia OpenStack Terraform: tarik#422.
Nyiptakeun Sumberdaya
Sateuacan ngajalankeun manifes, perhatikeun yén dina conto urang, dua panyadia anu béda diluncurkeun, sareng panyadia OpenStack gumantung kana sumber daya panyadia Selectel, sabab tanpa nyiptakeun pangguna dina proyék éta, mustahil pikeun ngatur objék anu aya. . Hanjakal, pikeun alesan anu sarua urang teu bisa ngan ngajalankeun paréntah terraform nerapkeun di jero conto urang. Urang kedah ngalakukeun heula ngalamar pikeun modul project_with_user sarta sanggeus éta pikeun sagalana sejenna.
Catetan: Masalah ieu henteu acan direngsekeun dina Terraform, anjeun tiasa ngiringan diskusi ngeunaan Github di kaluaran #2430 и kaluaran #4149.
Saatos ngajalankeun paréntah, Terraform bakal nunjukkeun sumber daya naon anu badé didamel sareng naroskeun konfirmasi:
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
Sakali proyék, pangguna sareng peran parantos didamel, anjeun tiasa ngamimitian nyiptakeun sumber daya sésana:
Anjeun tiasa damel sareng mesin virtual anu diciptakeun via SSH nganggo IP anu ditangtukeun.
Sumberdaya Edit
Salian nyieun sumberdaya ngaliwatan Terraform, maranéhna ogé bisa dirobah.
Salaku conto, hayu urang ningkatkeun jumlah inti sareng mémori pikeun server kami ku cara ngarobih nilai pikeun parameter. server_vcpus и server_ram_mb dina file conto / vpc / server_local_root_disk / main.tf:
Sanggeus ieu, urang pariksa parobahan naon ieu bakal ngakibatkeun ngagunakeun paréntah di handap:
$ env
TF_VAR_sel_account=SEL_ACCOUNT
TF_VAR_sel_token=SEL_TOKEN
TF_VAR_user_password=USER_PASSWORD
terraform plan
Hasilna, Terraform nyieun parobahan sumberdaya openstack_compute_instance_v2 и openstack_compute_flavor_v2.
Perhatikeun yén ieu bakal merlukeun rebooting mesin virtual dijieun.
Pikeun nerapkeun konfigurasi mesin virtual anyar, nganggo paréntah terraform nerapkeun, anu kami parantos diluncurkeun sateuacana.
Sadaya objék anu diciptakeun bakal ditingalikeun dina panel kontrol VPC:
Di urang repositories conto Anjeun oge bisa ningali manifests pikeun nyieun mesin virtual kalawan drive jaringan.
Conto nyieun klaster Kubernetes
Sateuacan urang ngaléngkah ka conto salajengna, urang bakal ngabersihan sumber daya anu urang ciptakeun sateuacana. Jang ngalampahkeun ieu dina akar proyék terraform-conto/conto/vpc/server_local_root_disk Hayu urang ngajalankeun paréntah pikeun mupus objék OpenStack:
Dina dua kasus, anjeun kedah mastikeun ngahapus sadaya objék:
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
Conto ieu nyiptakeun proyék, pangguna anu ngagaduhan peran dina proyék, sareng ngangkat hiji klaster Kubernetes. Dina file vars.tf Anjeun tiasa ningali nilai standar, sapertos jumlah titik, karakteristikna, versi Kubernetes, jsb.
Pikeun nyiptakeun sumber anu sami sareng conto anu munggaran, mimitina urang bakal ngamimitian ngamimitian modul sareng nyiptakeun sumber modul project_with_userlajeng nyieun sagalana sejenna:
Urang bakal nransper kreasi sarta manajemén klaster Kubernetes ngaliwatan komponén OpenStack Magnum. Anjeun tiasa mendakan langkung seueur ngeunaan cara damel sareng klaster dina salah sahiji kami artikel saméméhnaogé dasar pangaweruh.
Nalika nyiapkeun klaster, disk sareng mesin virtual bakal didamel sareng sadaya komponén anu diperyogikeun bakal dipasang. Persiapan nyokot ngeunaan 4 menit, salila waktu Terraform bakal nembongkeun pesen kawas:
module.kubernetes_cluster.openstack_containerinfra_cluster_v1.cluster_1: Still creating... (3m0s elapsed)
Sakali pamasangan parantos réngsé, Terraform bakal nunjukkeun yén kluster parantos siap sareng nunjukkeun ID na:
Pikeun ngatur klaster Kubernetes nu dijieun ngaliwatan utiliti kubectl anjeun kedah kéngingkeun file aksés kluster. Jang ngalampahkeun ieu, buka proyék dijieun ngaliwatan Terraform dina daptar proyék di akun anjeun:
Salajengna, turutan link kawas xxxxxx.selvpc.runu nembongan di handap ngaran proyék:
Kanggo inpormasi login, paké nami pangguna sareng kecap konci anu anjeun damel ngalangkungan Terraform. Upami anjeun teu acan nipu vars.tf atawa utama.tf pikeun conto urang, pamaké bakal boga ngaran tf_user. Anjeun kedah nganggo nilai variabel salaku sandi TF_VAR_user_password, nu dieusian dina ngamimitian terraform nerapkeun tadi.
Di jero proyék anjeun kedah angkat ka tab Kubernetes:
Ieu dimana klaster dijieun via Terraform lokasina. Unduh file pikeun kubectl Anjeun tiasa dina tab "Aksés":
Parentah pamasangan aya dina tab anu sami. kubectl sarta pamakéan diundeur config.yaml.
Saatos peluncuran kubectl jeung netepkeun variabel lingkungan KUBECONFIG anjeun tiasa nganggo Kubernetes:
Nalika jumlah titik robah, kluster bakal tetep aya. Saatos nambihan titik via Terraform, anjeun tiasa nganggo éta tanpa konfigurasi tambahan:
$ 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
kacindekan
Dina artikel ieu kami geus acquainted jeung cara utama pikeun digawekeun ku "Awan pribadi virtual" via Terraform. Kami bakal bungah upami anjeun nganggo panyadia Selectel Terraform resmi sareng masihan tanggapan.
Sakur bug anu aya dina panyadia Selectel Terraform tiasa dilaporkeun via Masalah Github.