Solaraiche Terraform Selectel

Solaraiche Terraform Selectel

Tha sinn air solaraiche Terraform oifigeil a chuir air bhog gus obrachadh le Selectel. Leigidh an toradh seo le luchd-cleachdaidh riaghladh ghoireasan a chuir an gnìomh gu h-iomlan tro dhòigh-obrach Bun-structair-mar-còd.

Tha an solaraiche an-dràsta a’ toirt taic do riaghladh ghoireasan seirbheis "Sgoil phrìobhaideach brìgheil" (air ainmeachadh an-seo mar VPC). Anns an àm ri teachd, tha sinn an dùil stiùireadh ghoireasan a chuir ris airson seirbheisean eile a bheir Selectel seachad.

Mar a tha fios agad mu thràth, tha an t-seirbheis VPC air a thogail air OpenStack. Ach, leis nach eil OpenStack a’ toirt seachad innealan dùthchasach airson a bhith a’ frithealadh na sgòthan poblach, chuir sinn an gnìomh an gnìomh a bha a dhìth ann an seata de APIan a bharrachd a bhios a’ sìmpleachadh riaghladh nithean toinnte iom-fhillte agus a nì an obair nas goireasaiche. Tha cuid den ghnìomhachd a tha ri fhaighinn ann an OpenStack dùinte bho chleachdadh dìreach, ach tha e ri fhaighinn troimhe an API againn.

Tha an solaraiche Selectel Terraform a-nis a’ toirt a-steach comas na goireasan VPC a leanas a riaghladh:

  • pròiseactan agus na cuotathan aca;
  • luchd-cleachdaidh, an dreuchdan agus comharran;
  • subnets poblach, a 'gabhail a-steach tar-roinneil agus VRRP;
  • ceadan bathar-bog.

Bidh an solaraiche a’ cleachdadh ar leabharlann poblach Go gus obrachadh leis an VPC API. Tha an dà chuid an leabharlann agus an solaraiche fhèin stòr fosgailte, tha an leasachadh air a dhèanamh air Github:

Gus goireasan sgòthan eile a riaghladh, leithid innealan brìgheil, diosgan, cruinneachaidhean Kubernetes, faodaidh tu an solaraiche OpenStack Terraform a chleachdadh. Tha sgrìobhainnean oifigeil airson an dà sholaraiche rim faighinn aig na ceanglaichean a leanas:

Getting Started

Gus tòiseachadh, feumaidh tu Terraform a stàladh (gheibhear stiùireadh agus ceanglaichean gu pasganan stàlaidh aig làrach-lìn oifigeil).

Gus obrachadh, feumaidh an solaraiche iuchair Selectel API, a tha air a chruthachadh ann an pannalan smachd cunntais.

Tha taisbeanaidhean airson a bhith ag obair le Selectel air an cruthachadh le bhith a’ cleachdadh Terraform no a’ cleachdadh seata de dh’ eisimpleirean deiseil a tha rim faighinn nar stòras Github: terraform-eisimpleirean.

Tha an stòr le eisimpleirean air a roinn ann an dà chlàr:

  • modalan, anns a bheil modalan beaga ath-chleachdadh a bhios a’ gabhail seata de pharamadairean mar chur-a-steach agus a’ riaghladh seata bheag de ghoireasan;
  • eisimpleirean, anns a bheil eisimpleirean de sheata iomlan de mhodalan eadar-cheangailte.

An dèidh a bhith a 'stàladh Terraform, a' cruthachadh iuchair Selectel API agus eòlach air na h-eisimpleirean, gluaisidh sinn air adhart gu eisimpleirean practaigeach.

Eisimpleir de bhith a’ cruthachadh frithealaiche le diosc ionadail

Bheir sinn sùil air eisimpleir de bhith a’ cruthachadh pròiseact, neach-cleachdaidh le dreuchd agus inneal brìgheil le diosc ionadail: terraform-examples/examples/vpc/server_local_root_disk.

Ann am faidhle vars.tf tha iomradh air a h-uile paramadair a thèid a chleachdadh nuair a bhios tu a’ gairm mhodalan. Tha luachan bunaiteach aig cuid dhiubh, mar eisimpleir, thèid am frithealaiche a chruthachadh san raon ru-3a leis an rèiteachadh a leanas:

variable "server_vcpus" {
default = 4
}

variable "server_ram_mb" {
default = 8192
}

variable "server_root_disk_gb" {
default = 8
}

variable "server_image_name" {
default = "Ubuntu 18.04 LTS 64-bit"
}

Ann am faidhle prìomh.tf Tha an solaraiche Selectel air a thòiseachadh:

provider "selectel" {
token    = "${var.sel_token}"
}

Anns an fhaidhle seo cuideachd tha an luach bunaiteach airson an iuchair SSH a thèid a stàladh air an fhrithealaiche:

module "server_local_root_disk" {
...
server_ssh_key      = "${file("~/.ssh/id_rsa.pub")}"
}

Ma tha feum air, faodaidh tu iuchair phoblach eile a shònrachadh. Chan fheum an iuchair a bhith air a shònrachadh mar shlighe faidhle; faodaidh tu cuideachd an luach a chur ris mar shreang.

Nas fhaide air adhart san fhaidhle seo tha na modalan air an cur air bhog pròiseact_with_user и server_local_root_disk, a bhios a’ riaghladh nan goireasan riatanach.

Bheir sinn sùil nas mionaidiche air na modalan sin.

A 'cruthachadh pròiseact agus neach-cleachdaidh le dreuchd

Bidh a’ chiad mhodal a’ cruthachadh pròiseact agus neach-cleachdaidh le pàirt sa phròiseact sin: terraform-examples/modules/vpc/project_with_user.

Bidh an neach-cleachdaidh cruthaichte comasach air logadh a-steach gu OpenStack agus na goireasan aige a riaghladh. Tha am modal sìmplidh agus chan eil e a’ riaghladh ach trì buidhnean:

  • selectel_vpc_project_v2,
  • selectel_vpc_user_v2,
  • tagh_vpc_ròl_v2.

A’ cruthachadh frithealaiche mas-fhìor le diosc ionadail

Tha an dàrna modal a’ dèiligeadh ri bhith a’ stiùireadh nithean OpenStack, a tha riatanach gus frithealaiche a chruthachadh le diosc ionadail.

Bu chòir dhut aire a thoirt do chuid de na h-argamaidean a tha air an sònrachadh sa mhodal seo airson a’ ghoireas openstack_compute_instance_v2:

resource "openstack_compute_instance_v2" "instance_1" {
  ...

  lifecycle {
    ignore_changes = ["image_id"]
  }

  vendor_options {
    ignore_resize_confirmation = true
  }
}

argamaid dearmad_atharraichean a’ leigeil leat atharrachaidhean buadhan a sheachnadh id airson an ìomhaigh a chaidh a chleachdadh gus an inneal brìgheil a chruthachadh. Anns an t-seirbheis VPC, bidh a’ mhòr-chuid de dhealbhan poblach air an ùrachadh gu fèin-ghluasadach uair san t-seachdain agus aig an aon àm id cuideachd ag atharrachadh. Tha seo mar thoradh air cho sònraichte sa tha an earrann OpenStack - Glance, anns a bheil ìomhaighean air am meas mar aonadan neo-sheasmhach.

Ma tha thu a’ cruthachadh no ag atharrachadh frithealaiche no diosc a tha ann mar-thà aig a bheil mar argamaid dealbh_id air a chleachdadh id ìomhaigh phoblach, an uairsin às deidh an ìomhaigh sin ùrachadh, le bhith a’ ruith am follais Terraform a-rithist ath-chruthaich e am frithealaiche no an diosc. A’ cleachdadh argamaid dearmad_atharraichean a’ leigeil leat suidheachadh mar sin a sheachnadh.

Nota: argamaid dearmad_atharraichean nochd ann an Terraform o chionn fhada: tarraing#2525.

argamaid ignore_resize_confirmation a dh’ fheumar gus diosc ionadail, cores, no cuimhne frithealaiche ath-mheudachadh gu soirbheachail. Bithear a’ dèanamh atharrachaidhean mar seo tro cho-phàirt OpenStack Nova a’ cleachdadh iarrtas teacsa an sgrion ath. Default Nova às deidh iarrtas teacsa an sgrion ath a' cur an fhrithealaiche ann an staid dearbhaich_ath-mheudachadh agus a’ feitheamh ri dearbhadh a bharrachd bhon neach-cleachdaidh. Ach, faodar an giùlan seo atharrachadh gus nach bi Nova a’ feitheamh ri gnìomhan a bharrachd bhon neach-cleachdaidh.

Tha an argamaid ainmichte a’ leigeil le Terraform gun a bhith a’ feitheamh ris an inbhe dearbhaich_ath-mheudachadh airson an fhrithealaiche agus a bhith deiseil airson an fhrithealaiche a bhith ann an inbhe gnìomhach às deidh dha na crìochan aige atharrachadh. Tha an argamaid ri fhaighinn bho dhreach 1.10.0 den t-solaraiche OpenStack Terraform: tarraing#422.

Cruthachadh Goireasan

Mus ruith thu na manifestos, thoir an aire, san eisimpleir againn, gu bheil dà sholaraiche eadar-dhealaichte air an cur air bhog, agus gu bheil an solaraiche OpenStack an urra ri goireasan an t-solaraiche Selectel, oir às aonais neach-cleachdaidh a chruthachadh sa phròiseact, tha e do-dhèanta na nithean a bhuineas dha a riaghladh. . Gu mì-fhortanach, airson an aon adhbhar chan urrainn dhuinn dìreach an àithne a ruith terraform a’ buntainn taobh a-staigh ar n-eisimpleir. Feumaidh sinn a dhèanamh an toiseach cuir a-steach airson modal pròiseact_with_user agus às deidh sin airson a h-uile càil eile.

Nota: Chan eil a’ chùis seo air fhuasgladh fhathast ann an Terraform, faodaidh tu leantainn air an deasbad air Github aig iris#2430 и iris#4149.

Gus goireasan a chruthachadh, rachaibh chun an eòlaire terraform-examples/examples/vpc/server_local_root_disk, bu chòir na tha ann a bhith mar seo:

$ ls
README.md	   main.tf		vars.tf

Tòisichidh sinn na modalan leis an àithne:

$ terraform init

Tha an toradh a’ sealltainn gu bheil Terraform a’ luchdachadh sìos na dreachan as ùire de na solaraichean a bhios e a’ cleachdadh agus a’ sgrùdadh a h-uile modal a tha air a mhìneachadh san eisimpleir.

An toiseach leig dhuinn am modal a chuir an sàs pròiseact_with_user. Feumaidh seo luachan a chuir seachad le làimh airson caochladairean nach deach a shuidheachadh:

  • sel_cunntas leis an àireamh cunntais Selectel agad;
  • seall_token leis an iuchair agad airson Selectel API;
  • cleachdaiche_facal-faire le facal-faire airson an neach-cleachdaidh OpenStack.

Feumar na luachan airson a’ chiad dà chaochladair a thoirt bho pannalan smachd.

Airson an caochladair mu dheireadh, faodaidh tu facal-faire sam bith a chruthachadh.

Gus am modal a chleachdadh feumaidh tu na luachan a chuir an àite SEL_ACCOUNT, SEL_TOKEN и USER_PASSWORD ruith an àithne:

$ env 
TF_VAR_sel_account=SEL_ACCOUNT 
TF_VAR_sel_token=SEL_TOKEN 
TF_VAR_user_password=USER_PASSWORD 
terraform apply -target=module.project_with_user

Às deidh an àithne a ruith, seallaidh Terraform dè na goireasan a tha e airson a chruthachadh agus iarraidh dearbhadh:

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

Aon uair ‘s gu bheil am pròiseact, an neach-cleachdaidh agus an dreuchd air an cruthachadh, faodaidh tu tòiseachadh air na goireasan a tha air fhàgail a chruthachadh:

$ env 
TF_VAR_sel_account=SEL_ACCOUNT 
TF_VAR_sel_token=SEL_TOKEN 
TF_VAR_user_password=USER_PASSWORD 
terraform apply

Nuair a bhios tu a’ cruthachadh ghoireasan, thoir aire do thoradh Terraform leis an t-seòladh IP taobh a-muigh far am bi an frithealaiche cruthaichte ruigsinneach:

module.server_local_root_disk.openstack_networking_floatingip_associate_v2.association_1: Creating...
  floating_ip: "" => "x.x.x.x"

Faodaidh tu obrachadh leis an inneal brìgheil cruthaichte tro SSH a’ cleachdadh an IP ainmichte.

Goireasan Deasachaidh

A bharrachd air goireasan a chruthachadh tro Terraform, faodar an atharrachadh cuideachd.

Mar eisimpleir, àrdaichidh sinn an àireamh de choraichean agus de chuimhne airson an fhrithealaiche againn le bhith ag atharrachadh luachan nam paramadairean frithealaiche_vcpus и frithealaiche_ram_mb ann am faidhle eisimpleirean/vpc/server_local_root_disk/main.tf:

-  server_vcpus        = "${var.server_vcpus}"
-  server_ram_mb       = "${var.server_ram_mb}"
+  server_vcpus        = 8
+  server_ram_mb       = 10240

Às deidh seo, nì sinn sgrùdadh air na h-atharrachaidhean a bheir seo gu bhith a’ cleachdadh an àithne a leanas:

$ env 
TF_VAR_sel_account=SEL_ACCOUNT 
TF_VAR_sel_token=SEL_TOKEN 
TF_VAR_user_password=USER_PASSWORD 
terraform plan

Mar thoradh air an sin, rinn Terraform atharrachadh stòrais openstack_compute_instance_v2 и openstack_compute_flavor_v2.

Thoir an aire gum bi seo a’ toirt a-steach ath-thòiseachadh an inneal brìgheil cruthaichte.

Gus an rèiteachadh inneal brìgheil ùr a chuir an sàs, cleachd an àithne terraform a’ buntainn, a chuir sinn air bhog mu thràth.

Thèid a h-uile nì cruthaichte a thaisbeanadh ann Pannalan smachd VPC:

Solaraiche Terraform Selectel

Anns ar stòran eisimpleir Chì thu cuideachd taisbeanaidhean airson innealan brìgheil a chruthachadh le draibhearan lìonra.

Eisimpleir de bhith a’ cruthachadh cruinneachadh Kubernetes

Mus gluais sinn air adhart chun ath eisimpleir, glanaidh sinn na goireasan a chruthaich sinn na bu thràithe. Gus seo a dhèanamh ann am freumh a 'phròiseict terraform-examples/examples/vpc/server_local_root_disk Feuch an ruith sinn an àithne gus nithean OpenStack a dhubhadh às:

$ env 
TF_VAR_sel_account=SEL_ACCOUNT 
TF_VAR_sel_token=SEL_TOKEN 
TF_VAR_user_password=USER_PASSWORD 
terraform destroy -target=module.server_local_root_disk

An uairsin ruith an àithne gus nithean Selectel VPC API a ghlanadh:

$ env 
TF_VAR_sel_account=SEL_ACCOUNT 
TF_VAR_sel_token=SEL_TOKEN 
TF_VAR_user_password=USER_PASSWORD 
terraform destroy -target=module.project_with_user

Anns an dà chùis, feumaidh tu dearbhadh gun deach a h-uile nì a dhubhadh às:

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

Tha an eisimpleir a leanas anns an eòlaire terraform-eisimpleirean/eisimpleirean/vpc/kubernetes_cluster.

Bidh an eisimpleir seo a’ cruthachadh pròiseact, neach-cleachdaidh le pàirt sa phròiseact, agus a’ togail aon bhuidheann de Kubernetes. Ann am faidhle vars.tf chì thu luachan bunaiteach, leithid an àireamh de nodan, na feartan aca, dreach Kubernetes, msaa.

Gus goireasan coltach ris a’ chiad eisimpleir a chruthachadh, an toiseach tòisichidh sinn air modalan a thòiseachadh agus goireasan modal a chruthachadh pròiseact_with_useragus an uairsin a 'cruthachadh a h-uile càil eile:

$ terraform init

$ env 
TF_VAR_sel_account=SEL_ACCOUNT 
TF_VAR_sel_token=SEL_TOKEN 
TF_VAR_user_password=USER_PASSWORD 
terraform apply -target=module.project_with_user

$ env 
TF_VAR_sel_account=SEL_ACCOUNT 
TF_VAR_sel_token=SEL_TOKEN 
TF_VAR_user_password=USER_PASSWORD 
terraform apply

Gluaisidh sinn cruthachadh agus riaghladh cruinneachaidhean Kubernetes tron ​​​​phàirt OpenStack Magnum. Gheibh thu barrachd a-mach mu mar a dh’obraicheas tu le buidheann ann am fear againn artaigilean roimhea bharrachd air bunait eòlais.

Nuair a bhios tu ag ullachadh a’ bhuidheann, thèid diosgan agus innealan brìgheil a chruthachadh agus thèid na pàirtean riatanach uile a chuir a-steach. Bheir an ullachadh timcheall air 4 mionaidean, agus rè na h-ùine sin seallaidh Terraform teachdaireachdan mar:

module.kubernetes_cluster.openstack_containerinfra_cluster_v1.cluster_1: Still creating... (3m0s elapsed)

Aon uair ‘s gu bheil an stàladh deiseil, seallaidh Terraform gu bheil an cruinneachadh deiseil agus seallaidh e an ID aige:

module.kubernetes_cluster.openstack_containerinfra_cluster_v1.cluster_1: Creation complete after 4m20s (ID: 3c8...)

Apply complete! Resources: 6 added, 0 changed, 0 destroyed.

Gus an cruinneachadh Kubernetes cruthaichte a riaghladh tron ​​​​ghoireas cubectl feumaidh tu am faidhle ruigsinneachd cluster fhaighinn. Gus seo a dhèanamh, rachaibh chun phròiseact a chaidh a chruthachadh tro Terraform anns an liosta de phròiseactan sa chunntas agad:

Solaraiche Terraform Selectel

An ath rud, lean an ceangal mar xxx.selvpc.rua tha a’ nochdadh fo ainm a’ phròiseict:

Solaraiche Terraform Selectel

Airson fiosrachadh logadh a-steach, cleachd an t-ainm-cleachdaidh agus am facal-faire a chruthaich thu tro Terraform. Mura h-eil thu air mealladh vars.tf no prìomh.tf mar eisimpleir againn, bidh an t-ainm aig an neach-cleachdaidh tf_cleachdaiche. Feumaidh tu luach an caochladair a chleachdadh mar am facal-faire TF_VAR_user_password, a chaidh a shònrachadh aig toiseach tòiseachaidh terraform a’ buntainn na bu thràithe.

Taobh a-staigh a 'phròiseict feumaidh tu a dhol chun an taba Kubernetes:

Solaraiche Terraform Selectel

Seo far a bheil an cruinneachadh a chaidh a chruthachadh tro Terraform suidhichte. Luchdaich a-nuas am faidhle airson pe cubectl Faodaidh tu air an taba “Ruigsinneachd”:

Solaraiche Terraform Selectel

Tha stiùireadh stàlaidh suidhichte air an aon tab. cubectl agus cleachdadh na chaidh a luchdachadh sìos config.yaml.

Às deidh a chuir air bhog cubectl agus suidheachadh caochladair na h-àrainneachd KUBECONFIG faodaidh tu Kubernetes a chleachdadh:

$ kubectl get pods --all-namespaces

NAMESPACE        NAME                                    READY  STATUS  RESTARTS AGE
kube-system   coredns-9578f5c87-g6bjf                      1/1   Running   0 8m
kube-system   coredns-9578f5c87-rvkgd                     1/1   Running   0 6m
kube-system   heapster-866fcbc879-b6998                 1/1   Running   0 8m
kube-system   kube-dns-autoscaler-689688988f-8cxhf             1/1   Running   0 8m
kube-system   kubernetes-dashboard-7bdb5d4cd7-jcjq9          1/1   Running   0 8m
kube-system   monitoring-grafana-84c97bb64d-tc64b               1/1   Running   0 8m
kube-system   monitoring-influxdb-7c8ccc75c6-dzk5f                1/1   Running   0 8m
kube-system   node-exporter-tf-cluster-rz6nggvs4va7-minion-0 1/1   Running   0 8m
kube-system   node-exporter-tf-cluster-rz6nggvs4va7-minion-1 1/1   Running   0 8m
kube-system   openstack-cloud-controller-manager-8vrmp        1/1   Running   3 8m
prometeus-monitoring   grafana-76bcb7ffb8-4tm7t       1/1   Running   0 8m
prometeus-monitoring   prometheus-75cdd77c5c-w29gb           1/1   Running   0 8m

Faodar an àireamh de nodan brabhsair atharrachadh gu furasta tro Terraform.
Ann am faidhle prìomh.tf tha an luach a leanas air a shònrachadh:

cluster_node_count = "${var.cluster_node_count}"

Tha an luach seo air a chuir na àite bho vars.tf:

variable "cluster_node_count" {
default = 2
}

Faodaidh tu an dàrna cuid an luach bunaiteach atharrachadh ann an vars.tf, no sònraich an luach a tha a dhìth gu dìreach ann an prìomh.tf:

-  cluster_node_count = "${var.cluster_node_count}"
+  cluster_node_count = 3

Gus na h-atharrachaidhean a chuir an sàs, mar a tha sa chiad eisimpleir, cleachd an àithne terraform a’ buntainn:

$ env 
TF_VAR_sel_account=SEL_ACCOUNT 
TF_VAR_sel_token=SEL_TOKEN 
TF_VAR_user_password=USER_PASSWORD 
terraform apply

Nuair a dh’ atharraicheas an àireamh de nodan, bidh an cruinneachadh fhathast ri fhaighinn. Às deidh dhut nód a chuir ris tro Terraform, faodaidh tu a chleachdadh gun rèiteachadh a bharrachd:

$ 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

co-dhùnadh

San artaigil seo fhuair sinn eòlas air na prìomh dhòighean air obrachadh leotha "Sgoil phrìobhaideach brìgheil" air sgàth Terraform. Bidh sinn toilichte ma chleachdas tu an solaraiche oifigeil Selectel Terraform agus ma bheir thu seachad fios air ais.

Faodar aithris a dhèanamh air biastagan sam bith a lorgar ann an solaraiche Selectel Terraform tro Cùisean Github.

Source: www.habr.com

Cuir beachd ann