Ua hoʻomaka mākou i kahi mea hoʻolako Terraform mana e hana pū me Selectel. Hāʻawi kēia huahana i nā mea hoʻohana e hoʻokō piha i ka hoʻokele waiwai ma o ka Infrastructure-as-code methodology.
Kākoʻo ka mea hoʻolako i ka hoʻokele waiwai lawelawe "Ke ao pilikino virtual" (i kapa ʻia ma hope aku ʻo VPC). I ka wā e hiki mai ana, hoʻolālā mākou e hoʻohui i ka hoʻokele waiwai no nā lawelawe ʻē aʻe i hāʻawi ʻia e Selectel.
E like me kāu i ʻike ai, kūkulu ʻia ka lawelawe VPC ma OpenStack. Eia nō naʻe, ma muli o ka hāʻawi ʻole ʻana o OpenStack i nā mea hana maoli no ka lawelawe ʻana i ke ao lehulehu, ua hoʻokō mākou i ka hana i nalowale i kahi pūʻulu o nā API hou e hoʻomaʻamaʻa i ka hoʻokele ʻana i nā mea composite paʻakikī a ʻoi aku ka maʻalahi o ka hana. Ua pani ʻia kekahi o nā hana i loaʻa ma OpenStack mai ka hoʻohana pololei ʻana, akā loaʻa ma o kā mākou API.
Loaʻa i ka mea hāʻawi Selectel Terraform ka hiki ke hoʻokele i kēia mau kumuwaiwai VPC:
nā papahana a me kā lākou mau helu;
nā mea hoʻohana, kā lākou kuleana a me nā hōʻailona;
nā subnets lehulehu, me ka cross-regional a me VRRP;
laikini lako polokalamu.
Hoʻohana ka mea hoʻolako i kā mākou waihona Go public e hana pū me ka VPC API. ʻO ka hale waihona puke a me ka mea hoʻolako ponoʻī he open-source, hoʻokō ʻia kā lākou kūkulu ʻana ma Github:
No ka mālama ʻana i nā kumuwaiwai ʻē aʻe, e like me nā mīkini virtual, nā disks, nā pūʻulu Kubernetes, hiki iā ʻoe ke hoʻohana i ka mea hāʻawi OpenStack Terraform. Loaʻa nā palapala kūhelu no nā mea hoʻolako ʻelua ma nā loulou aʻe:
Hana ʻia nā hōʻike no ka hana ʻana me Selectel me ka hoʻohana ʻana iā Terraform a i ʻole ka hoʻohana ʻana i kahi hoʻonohonoho o nā hiʻohiʻona mākaukau i loaʻa i kā mākou waihona Github: nā hiʻohiʻona terraform.
Ua māhele ʻia ka waihona me nā laʻana i ʻelua papa kuhikuhi:
modules, loaʻa nā modula liʻiliʻi hiki ke hoʻohana hou ʻia e lawe i kahi hoʻonohonoho o nā palena ma ke ʻano he hoʻokomo a mālama i kahi pūʻulu waiwai liʻiliʻi;
nā hiʻohiʻona, loaʻa nā laʻana o kahi pūʻulu piha o nā modula pili.
Ma hope o ka hoʻokomo ʻana iā Terraform, ka hana ʻana i kahi kī Selectel API a hoʻomaʻamaʻa iā ʻoe iho me nā laʻana, e neʻe kākou i nā hiʻohiʻona kūpono.
ʻO kahi laʻana o ka hana ʻana i kahi kikowaena me kahi disk kūloko
Ma ka waihona vars.tf wehewehe ʻia nā ʻāpana āpau e hoʻohana ʻia i ke kāhea ʻana i nā modules. Loaʻa i kekahi o lākou nā waiwai paʻamau, no ka laʻana, e hana ʻia ke kikowaena ma ka ʻāpana ru-3a me kēia hoʻonohonoho:
Inā pono, hiki iā ʻoe ke kuhikuhi i kahi kī lehulehu ʻē aʻe. ʻAʻole pono e kuhikuhi ʻia ke kī ma ke ʻano he ala faila; hiki iā ʻoe ke hoʻohui i ka waiwai ma ke ʻano he kaula.
Hoʻomaka hou i loko o kēia faila nā modules papahana_me_mea hoʻohana и server_local_root_disk, nāna e mālama i nā kumuwaiwai e pono ai.
E nānā pono kākou i kēia mau modules.
Ke hana ʻana i kahi papahana a me kahi mea hoʻohana me kahi kuleana
Hoopaapaa hoʻololi hiki iā ʻoe ke haʻalele i nā hoʻololi ʻano id no ke kiʻi i hoʻohana ʻia e hana i ka mīkini virtual. Ma ka lawelawe VPC, hoʻonui ʻia ka hapa nui o nā kiʻi lehulehu i hoʻokahi manawa i ka pule a i ka manawa like id hoololi hoi. ʻO kēia ma muli o nā hiʻohiʻona o ka OpenStack component - Glance, kahi i manaʻo ʻia ai nā kiʻi he mau mea hiki ʻole ke hoʻololi.
Inā ʻoe e hana ana a hoʻololi paha i kahi kikowaena a i ʻole disk i loaʻa i ka hoʻopaʻapaʻa kiʻi_id i ʻ a? id kiʻi lehulehu, a laila ma hope o ka hoʻonui ʻia ʻana o kēlā kiʻi, e holo hou ana ka Terraform manifest e hana hou i ka server a i ʻole ka disk. Ke hoʻohana nei i ka hoʻopaʻapaʻa hoʻololi hiki iā ʻoe ke pale i kēlā kūlana.
Nānā: hoʻopaʻapaʻa hoʻololi ua ʻike ʻia ma Terraform i kahi manawa lōʻihi aku nei: huki#2525.
Hoopaapaa hōʻoia_hoʻololi_hoʻololi pono e hoʻololi i ka nui o ka diski kūloko, cores, a i ʻole ka hoʻomanaʻo kikowaena. Hana ʻia ia mau hoʻololi ma o ka OpenStack Nova māhele me ka hoʻohana ʻana i kahi noi hoʻonui hou. Default Nova ma hope o ke noi hoʻonui hou hoʻokomo i ke kikowaena i ke kūlana verify_resize a kali no ka hōʻoia hou mai ka mea hoʻohana. Eia naʻe, hiki ke hoʻololi ʻia kēia ʻano i ʻole e kali ʻo Nova i nā hana hou mai ka mea hoʻohana.
ʻO ka hoʻopaʻapaʻa i ʻōlelo ʻia e ʻae iā Terraform ʻaʻole e kali i ke kūlana verify_resize no ke kikowaena a hoʻomākaukau no ke kikowaena i kahi kūlana hana ma hope o ka hoʻololi ʻana i kāna mau ʻāpana. Loaʻa ka hoʻopaʻapaʻa mai ka mana 1.10.0 o ka mea hāʻawi OpenStack Terraform: huki#422.
Hana i nā kumuwaiwai
Ma mua o ka holo ʻana i nā hōʻike, e ʻoluʻolu e hoʻomaopopo i kā mākou laʻana, ua hoʻokuʻu ʻia ʻelua mau mea hoʻolako like ʻole, a hilinaʻi ka mea hāʻawi OpenStack i nā kumuwaiwai o ka mea hoʻolako Selectel, ʻoiai me ka ʻole o ka hoʻokumu ʻana i kahi mea hoʻohana i ka papahana, ʻaʻole hiki ke mālama i nā mea nona ia. . ʻO ka mea pōʻino, no ke kumu like ʻaʻole hiki iā mākou ke holo i ke kauoha pili ka terraform i loko o kā mākou laʻana. Pono mua mākou e hana noi no ka module papahana_me_mea hoʻohana a mahope iho no na mea e ae.
Nānā: ʻAʻole i hoʻoholo ʻia kēia pilikia ma Terraform, hiki iā ʻoe ke hahai i ke kūkākūkā ma Github ma pukana #2430 и pukana #4149.
Ma hope o ka holo ʻana i ke kauoha, e hōʻike ʻo Terraform i nā kumuwaiwai āna e makemake ai e hana a noi no ka hōʻoia:
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
Ke hana ʻia ka papahana, ka mea hoʻohana a me ke kuleana, hiki iā ʻoe ke hoʻomaka e hana i nā kumuwaiwai i koe:
Hiki iā ʻoe ke hana me ka mīkini virtual i hana ʻia ma o SSH me ka hoʻohana ʻana i ka IP i kuhikuhi ʻia.
Nā Punawai Hoʻoponopono
Ma kahi o ka hana ʻana i nā kumuwaiwai ma o Terraform, hiki ke hoʻololi ʻia.
No ka laʻana, e hoʻonui i ka helu o nā cores a me ka hoʻomanaʻo no kā mākou kikowaena ma ka hoʻololi ʻana i nā waiwai no nā ʻāpana. server_vcpus и server_ram_mb ma ka waihona examples/vpc/server_local_root_disk/main.tf:
I kā mākou laʻana waihona Hiki iā ʻoe ke ʻike i nā hōʻike no ka hana ʻana i nā mīkini virtual me nā drive network.
Ka laʻana o ka hana ʻana i kahi pūʻulu Kubernetes
Ma mua o ka neʻe ʻana i ka laʻana aʻe, e hoʻomaʻemaʻe mākou i nā kumuwaiwai a mākou i hana ai ma mua. E hana i kēia ma ke kumu o ka papahana terraform-examples/examples/vpc/server_local_root_disk E holo kāua i ke kauoha e holoi i nā mea OpenStack:
I nā hihia ʻelua, pono ʻoe e hōʻoia i ka holoi ʻana i nā mea āpau:
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
Hoʻokumu kēia laʻana i kahi papahana, kahi mea hoʻohana me ke kuleana ma ka papahana, a hoʻāla i hoʻokahi hui Kubernetes. Ma ka waihona vars.tf hiki iā ʻoe ke ʻike i nā waiwai paʻamau, e like me ka helu o nā nodes, ko lākou ʻano, ka mana Kubernetes, etc.
No ka hana ʻana i nā kumuwaiwai e like me ka laʻana mua, ʻo ka mea mua e hoʻomaka mākou i ka hoʻomaka ʻana i nā modules a me ka hana ʻana i nā kumuwaiwai module papahana_me_mea hoʻohanaa laila hana i nā mea ʻē aʻe:
E hoʻololi mākou i ka hana ʻana a me ka hoʻokele ʻana o nā pūʻulu Kubernetes ma o ka ʻāpana OpenStack Magnum. Hiki iā ʻoe ke ʻike hou aʻe e pili ana i ka hana ʻana me kahi pūʻulu ma kekahi o kā mākou nā ʻatikala ma muaao j io ike kumu.
I ka hoʻomākaukau ʻana i ka pūʻulu, e hana ʻia nā disks a me nā mīkini virtual a hoʻokomo ʻia nā mea pono a pau. ʻO ka hoʻomākaukau ʻana ma kahi o 4 mau minuke, ma ia manawa e hōʻike ʻo Terraform i nā memo e like me:
module.kubernetes_cluster.openstack_containerinfra_cluster_v1.cluster_1: Still creating... (3m0s elapsed)
Ke hoʻopau ʻia ka hoʻonohonoho ʻana, e hōʻike ʻo Terraform ua mākaukau ka pūʻulu a hōʻike i kāna ID:
E hoʻokele i ka hui Kubernetes i hana ʻia ma o ka pono kubectl pono ʻoe e kiʻi i ka faila komo cluster. No ka hana ʻana i kēia, e hele i ka papahana i hana ʻia ma o Terraform i ka papa inoa o nā papahana i kāu moʻokāki:
A laila, e hahai i ka loulou like xxxxxx.selvpc.ruaia ma lalo o ka inoa papahana:
No ka ʻike inoa inoa, e hoʻohana i ka inoa inoa a me ka ʻōlelo huna āu i hana ai ma o Terraform. Inā ʻaʻole ʻoe i hoʻopunipuni vars.tf ai ole ia, main.tf no kā mākou laʻana, e loaʻa i ka mea hoʻohana ka inoa tf_mea hoʻohana. Pono ʻoe e hoʻohana i ka waiwai o ka mea hoʻololi e like me ka ʻōlelo huna TF_VAR_user_password, i kuhikuhi ʻia ma ka hoʻomaka ʻana pili ka terraform ma mua.
I loko o ka papahana pono ʻoe e hele i ka pā Kubernetes:
ʻO kēia kahi o ka hui i hana ʻia ma o Terraform. Hoʻoiho i ka faila no kubectl hiki iā ʻoe ma ka pā "Access":
Aia nā ʻōlelo hoʻonohonoho ma ka pā like. kubectl a me ka hoʻohana ʻana i ka mea i hoʻoiho ʻia config.yaml.
Ma hope o ka hoʻolana kubectl a me ka hoʻonohonoho ʻana i ka hoʻololi kaiapuni KUBECONFIG hiki iā ʻoe ke hoʻohana i nā Kubernetes:
Ke hoʻololi ka helu o nā nodes, e loaʻa ka pūʻulu. Ma hope o ka hoʻohui ʻana i kahi node ma o Terraform, hiki iā ʻoe ke hoʻohana me ka ʻole o ka hoʻonohonoho hou ʻana:
$ 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
hopena
Ma kēia ʻatikala ua kamaʻāina mākou i nā ala nui e hana ai "Ke ao pilikino virtual" ma o Terraform. E hauʻoli mākou inā ʻoe e hoʻohana i ka mea lawelawe ʻo Selectel Terraform a hāʻawi i nā manaʻo.
Hiki ke hōʻike ʻia nā hewa i loaʻa ma ka Selectel Terraform provider Nā Pilikia Github.