Selectel ãšé£æºããããã®å
¬åŒ Terraform ãããã€ããŒãç«ã¡äžããŸããã ãã®è£œåã䜿çšãããšããŠãŒã¶ãŒã¯ã³ãŒããšããŠã®ã€ã³ãã©ã¹ãã©ã¯ãã£ææ³ãéããŠãªãœãŒã¹ç®¡çãå®å
šã«å®è£
ã§ããŸãã
ãããã€ããŒã¯çŸåšãµãŒãã¹ ãªãœãŒã¹ç®¡çããµããŒãããŠããŸã
ãã§ã«ãåç¥ã®ãšãããVPC ãµãŒãã¹ã¯ OpenStack äžã«æ§ç¯ãããŠããŸãã ãã ããOpenStack ã¯ãããªã㯠ã¯ã©ãŠãã«ãµãŒãã¹ãæäŸããããã®ãã€ãã£ã ããŒã«ãæäŸããŠããªããããè€éãªè€åãªããžã§ã¯ãã®ç®¡çãç°¡çŽ åããäœæ¥ããã䟿å©ã«ããäžé£ã®è¿œå API ã«äžè¶³ããŠããæ©èœãå®è£
ããŸããã OpenStack ã§å©çšå¯èœãªæ©èœã®äžéšã¯çŽæ¥äœ¿çšã§ããŸãããã
Selectel Terraform ãããã€ããŒã«ã¯ã次㮠VPC ãªãœãŒã¹ã管çããæ©èœãå«ãŸããŠããŸãã
- ãããžã§ã¯ããšãã®å²ãåœãŠã
- ãŠãŒã¶ãŒããã®åœ¹å²ãããŒã¯ã³ã
- ã¯ãã¹ãªãŒãžã§ã³ããã³ VRRP ãå«ããããªã㯠ãµããããã
- ãœãããŠã§ã¢ã©ã€ã»ã³ã¹ã
ãããã€ããŒã¯ããããªã㯠Go ã©ã€ãã©ãªã䜿çšã㊠VPC API ãæäœããŸãã ã©ã€ãã©ãªãšãããã€ãèªäœã¯äž¡æ¹ãšããªãŒãã³ãœãŒã¹ã§ãããéçºã¯ Github ã§è¡ãããŸãã
- ã©ã€ãã©ãªãªããžããª
Go-selfpcclient , - ãããã€ããªããžããª
Terraform ãããã€ã㌠Selectel .
ä»®æ³ãã·ã³ããã£ã¹ã¯ãKubernetes ã¯ã©ã¹ã¿ãŒãªã©ã®ä»ã®ã¯ã©ãŠã ãªãœãŒã¹ã管çããã«ã¯ãOpenStack Terraform ãããã€ããŒã䜿çšã§ããŸãã äž¡æ¹ã®ãããã€ããŒã®å ¬åŒããã¥ã¡ã³ãã¯ã次ã®ãªã³ã¯ããå ¥æã§ããŸãã
- Selectel ãªãœãŒã¹ã®ããã¥ã¡ã³ã:
Terraform ãããã€ã㌠Selectel , - OpenStack ãªãœãŒã¹ã®ããã¥ã¡ã³ã:
Terraform ãããã€ã㌠OpenStack .
ã¯ããã«
å§ããã«ã¯ãTerraform ãã€ã³ã¹ããŒã«ããå¿
èŠããããŸã (ã€ã³ã¹ããŒã« ããã±ãŒãžãžã®æé ãšãªã³ã¯ã¯ã次ã®å Žæã«ãããŸã)ã
ãããã€ããŒãåäœããã«ã¯ãSelectel API ããŒãå¿
èŠã§ãããã®ããŒã¯ã
Selectel ãæäœããããã®ãããã§ã¹ãã¯ãTerraform ã䜿çšããããGithub ãªããžããªã§å
¥æå¯èœãªæ¢è£œã®ãµã³ãã«ã®ã»ããã䜿çšããŠäœæãããŸãã
äŸãå«ããªããžããªã¯ XNUMX ã€ã®ãã£ã¬ã¯ããªã«åãããŠããŸãã
- ã¢ãžã¥ãŒã«ããã©ã¡ãŒã¿ã®ã»ãããå ¥åãšããŠåãåãããªãœãŒã¹ã®å°ããªã»ããã管çããå°ããªåå©çšå¯èœãªã¢ãžã¥ãŒã«ãå«ãŸããŠããŸãã
- äŸãçžäºæ¥ç¶ãããã¢ãžã¥ãŒã«ã®å®å šãªã»ããã®äŸãå«ãŸããŠããŸãã
Terraform ãã€ã³ã¹ããŒã«ããSelectel API ããŒãäœæããäŸã«æ £ããããå®è·µçãªäŸã«é²ã¿ãŸãããã
ããŒã«ã«ãã£ã¹ã¯ã䜿çšãããµãŒããŒã®äœæäŸ
ãããžã§ã¯ããããŒã«ãæã€ãŠãŒã¶ãŒãããã³ããŒã«ã« ãã£ã¹ã¯ãæã€ä»®æ³ãã·ã³ãäœæããäŸãèŠãŠã¿ãŸãããã
ãã¡ã€ã«å vars.tf ã¢ãžã¥ãŒã«ãåŒã³åºããšãã«äœ¿çšããããã¹ãŠã®ãã©ã¡ãŒã¿ã説æãããŠããŸãã ãããã®äžéšã«ã¯ããã©ã«ãå€ããããŸããããšãã°ããµãŒããŒã¯ãŸãŒã³å ã«äœæãããŸãã en-3a 次ã®æ§æã§:
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"
}
ãã¡ã€ã«å main.tf Selectel ãããã€ããŒãåæåãããŸãã
provider "selectel" {
token = "${var.sel_token}"
}
ãã®ãã¡ã€ã«ã«ã¯ããµãŒããŒã«ã€ã³ã¹ããŒã«ããã SSH ããŒã®ããã©ã«ãå€ãå«ãŸããŠããŸãã
module "server_local_root_disk" {
...
server_ssh_key = "${file("~/.ssh/id_rsa.pub")}"
}
å¿ èŠã«å¿ããŠãå¥ã®å ¬éããŒãæå®ã§ããŸãã ããŒã¯ãã¡ã€ã« ãã¹ãšããŠæå®ããå¿ èŠã¯ãªããå€ãæååãšããŠè¿œå ããããšãã§ããŸãã
ãã®ãã¡ã€ã«ã®ããã«å¥¥ã§ã¢ãžã¥ãŒã«ãèµ·åãããŸã ãããžã§ã¯ããšãŠãŒã¶ãŒ О ãµãŒããŒããŒã«ã«ã«ãŒããã£ã¹ã¯ãå¿ èŠãªãªãœãŒã¹ã管çããŸãã
ãããã®ã¢ãžã¥ãŒã«ãããã«è©³ããèŠãŠã¿ãŸãããã
ãããžã§ã¯ããšããŒã«ãæã€ãŠãŒã¶ãŒã®äœæ
æåã®ã¢ãžã¥ãŒã«ã¯ããããžã§ã¯ããšããã®ãããžã§ã¯ãå
ã®ããŒã«ãæã€ãŠãŒã¶ãŒãäœæããŸãã
äœæããããŠãŒã¶ãŒã¯ OpenStack ã«ãã°ã€ã³ãããã®ãªãœãŒã¹ã管çã§ããããã«ãªããŸãã ãã®ã¢ãžã¥ãŒã«ã¯ã·ã³ãã«ã§ã次㮠XNUMX ã€ã®ãšã³ãã£ãã£ã®ã¿ã管çããŸãã
- selectel_vpc_project_v2ã
- selectel_vpc_user_v2ã
- selectel_vpc_role_v2ã
ããŒã«ã«ãã£ã¹ã¯ã䜿çšããä»®æ³ãµãŒããŒã®äœæ
XNUMX çªç®ã®ã¢ãžã¥ãŒã«ã¯ãããŒã«ã« ãã£ã¹ã¯ã䜿çšããŠãµãŒããŒãäœæããããã«å¿ èŠãª OpenStack ãªããžã§ã¯ãã®ç®¡çãæ±ããŸãã
ãã®ã¢ãžã¥ãŒã«ã§ãªãœãŒã¹ã«å¯ŸããŠæå®ãããŠããåŒæ°ã®äžéšã«æ³šæããå¿ èŠããããŸãã openstack_compute_instance_v2:
resource "openstack_compute_instance_v2" "instance_1" {
...
lifecycle {
ignore_changes = ["image_id"]
}
vendor_options {
ignore_resize_confirmation = true
}
}
åŒæ° ç¡èŠãã_å€æŽ å±æ§ã®å€æŽãç¡èŠã§ããŸã id ä»®æ³ãã·ã³ã®äœæã«äœ¿çšãããã€ã¡ãŒãžã VPC ãµãŒãã¹ã§ã¯ãã»ãšãã©ã®å ¬éã€ã¡ãŒãžã¯é±ã« XNUMX åèªåçã«æŽæ°ãããåæã«ãããã®ã€ã¡ãŒãžãæŽæ°ãããŸãã id ãå€ãããŸãã ããã¯ãOpenStack ã³ã³ããŒãã³ãã§ãã Glance ã®ç¹æ®æ§ã«ãããã®ã§ãç»åã¯äžå€ã®ãšã³ãã£ãã£ãšèŠãªãããŸãã
åŒæ°ãšã㊠ãæã€æ¢åã®ãµãŒããŒãŸãã¯ãã£ã¹ã¯ãäœæãŸãã¯å€æŽããå Žå ç»åID äžå€ id ãããªã㯠ã€ã¡ãŒãžãäœæãããã®ã€ã¡ãŒãžãæŽæ°ãããåŸã« Terraform ãããã§ã¹ããå床å®è¡ãããšããµãŒããŒãŸãã¯ãã£ã¹ã¯ãåäœæãããŸãã åŒæ°ã®äœ¿çš ç¡èŠãã_å€æŽ ãã®ãããªç¶æ³ãåé¿ã§ããŸãã
泚: åŒæ° ç¡èŠãã_å€æŽ ããªãæã« Terraform ã«ç»å ŽããŸããã
åŒæ° ç¡èŠ_ãµã€ãºå€æŽ_ç¢ºèª ããŒã«ã« ãã£ã¹ã¯ãã³ã¢ããŸãã¯ãµãŒã㌠ã¡ã¢ãªã®ãµã€ãºãæ£åžžã«å€æŽããããã«å¿ èŠã§ãã ãã®ãããªå€æŽã¯ããªã¯ãšã¹ãã䜿çšã㊠OpenStack Nova ã³ã³ããŒãã³ããéããŠè¡ãããŸãã ãªãµã€ãºã ãªã¯ãšã¹ãåŸã®ããã©ã«ãã® Nova ãªãµã€ãº ãµãŒããŒãã¹ããŒã¿ã¹ã«ããŸã verify_resize ãããŠãŠãŒã¶ãŒããã®è¿œå ã®ç¢ºèªãåŸ ã¡ãŸãã ãã ãããã®åäœã¯ãNova ããŠãŒã¶ãŒããã®è¿œå ã¢ã¯ã·ã§ã³ãåŸ ããªãããå€æŽã§ããŸãã
æå®ãããåŒæ°ã«ãããTerraform ã¯ã¹ããŒã¿ã¹ãåŸ
æ©ããªããªããŸãã verify_resize ãµãŒããŒã®ãã©ã¡ãŒã¿ãå€æŽããåŸã«ãµãŒããŒãã¢ã¯ãã£ããªç¶æ
ã«ãªãããã«æºåããŠãã ããã ãã®åŒæ°ã¯ãOpenStack Terraform ãããã€ããŒã®ããŒãžã§ã³ 1.10.0 ããå©çšã§ããŸãã
ãªãœãŒã¹ã®äœæ
ãããã§ã¹ããå®è¡ããåã«ããã®äŸã§ã¯ XNUMX ã€ã®ç°ãªããããã€ããŒãèµ·åãããŠãããOpenStack ãããã€ããŒã¯ Selectel ãããã€ããŒã®ãªãœãŒã¹ã«äŸåããŠããããšã«æ³šæããŠãã ãããããã¯ããããžã§ã¯ãå ã«ãŠãŒã¶ãŒãäœæããªããšãããã«å±ãããªããžã§ã¯ãã管çããããšãäžå¯èœã§ããããã§ãã ã æ®å¿µãªãããåãçç±ã§ã³ãã³ããå®è¡ããããšã¯ã§ããŸããã ãã©ãã©ãŒã é©çš ç§ãã¡ã®äŸã®å éšã§ãã ãŸãæåã«è¡ãå¿ èŠããããŸã é©çšãã ã¢ãžã¥ãŒã«çš ãããžã§ã¯ããšãŠãŒã¶ãŒ ãããŠãã®åŸã¯ä»ã®ãã¹ãŠã«ã€ããŠã
泚: ãã®åé¡ã¯ Terraform ã§ã¯ãŸã 解決ãããŠããŸãããGithub ã§ã®ãã£ã¹ã«ãã·ã§ã³ããã©ããŒã§ããŸãã
ãªãœãŒã¹ãäœæããã«ã¯ããã£ã¬ã¯ããªã«ç§»åããŸãã
$ ls
README.md main.tf vars.tf
次ã®ã³ãã³ãã䜿çšããŠã¢ãžã¥ãŒã«ãåæåããŸãã
$ terraform init
åºåã¯ãTerraform ã䜿çšãããããã€ããŒã®ææ°ããŒãžã§ã³ãããŠã³ããŒãããäŸã§èª¬æãããŠãããã¹ãŠã®ã¢ãžã¥ãŒã«ããã§ãã¯ããŠããããšã瀺ããŠããŸãã
ãŸãã¯ã¢ãžã¥ãŒã«ãé©çšããŸããã ãããžã§ã¯ããšãŠãŒã¶ãŒã ããã«ã¯ãèšå®ãããŠããªãå€æ°ã®å€ãæåã§æž¡ãå¿ èŠããããŸãã
- sel_account Selectel ã¢ã«ãŠã³ãçªå·ãšãšãã«;
- sel_token Selectel API ã®ããŒã䜿çšããŸãã
- ãŠãŒã¶ãŒã®ãã¹ã¯ãŒã OpenStack ãŠãŒã¶ãŒã®ãã¹ã¯ãŒãã䜿çšããŸãã
æåã® XNUMX ã€ã®å€æ°ã®å€ã¯æ¬¡ããååŸããå¿
èŠããããŸãã
æåŸã®å€æ°ã«ã€ããŠã¯ãä»»æã®ãã¹ã¯ãŒããæãã€ãããšãã§ããŸãã
ã¢ãžã¥ãŒã«ã䜿çšããã«ã¯ãå€ã眮ãæããå¿ èŠããããŸã SEL_ACCOUNT, SEL_TOKEN О ãŠãŒã¶ãŒã®ãã¹ã¯ãŒã ã³ãã³ããå®è¡ããŸã:
$ 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
ã³ãã³ããå®è¡ãããšãTerraform ã¯äœæãããªãœãŒã¹ã衚瀺ãã確èªãæ±ããŸãã
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
ãããžã§ã¯ãããŠãŒã¶ãŒãããŒã«ãäœæãããããæ®ãã®ãªãœãŒã¹ã®äœæãéå§ã§ããŸãã
$ env
TF_VAR_sel_account=SEL_ACCOUNT
TF_VAR_sel_token=SEL_TOKEN
TF_VAR_user_password=USER_PASSWORD
terraform apply
ãªãœãŒã¹ãäœæãããšãã¯ãäœæããããµãŒããŒãã¢ã¯ã»ã¹ã§ããå€éš IP ã¢ãã¬ã¹ãå«ã Terraform åºåã«æ³šæããŠãã ããã
module.server_local_root_disk.openstack_networking_floatingip_associate_v2.association_1: Creating...
floating_ip: "" => "x.x.x.x"
äœæããä»®æ³ãã·ã³ã¯ãæå®ãã IP ã䜿çšã㊠SSH çµç±ã§æäœã§ããŸãã
ãªãœãŒã¹ã®ç·šé
Terraform ã䜿çšããŠãªãœãŒã¹ãäœæããã ãã§ãªãããªãœãŒã¹ãå€æŽããããšãã§ããŸãã
ããšãã°ããã©ã¡ãŒã¿ã®å€ãå€æŽããŠããµãŒããŒã®ã³ã¢ãšã¡ã¢ãªã®æ°ãå¢ãããŠã¿ãŸãããã ãµãŒããŒ_vcpu О ãµãŒããŒ_ram_mb ãã¡ã€ã«å äŸ/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
ãã®åŸã次ã®ã³ãã³ãã䜿çšããŠãããã«ãã£ãŠã©ã®ãããªå€æŽãçãããã確èªããŸãã
$ env
TF_VAR_sel_account=SEL_ACCOUNT
TF_VAR_sel_token=SEL_TOKEN
TF_VAR_user_password=USER_PASSWORD
terraform plan
ãã®çµæãTerraform ã¯ãªãœãŒã¹ãå€æŽããŸããã openstack_compute_instance_v2 О openstack_compute_flavor_v2.
ããã«ã¯ãäœæãããä»®æ³ãã·ã³ã®åèµ·åãå¿ èŠã«ãªãããšã«æ³šæããŠãã ããã
æ°ããä»®æ³ãã·ã³æ§æãé©çšããã«ã¯ã次ã®ã³ãã³ãã䜿çšããŸãã ãã©ãã©ãŒã é©çšããã§ã«ä»¥åã«éå§ããŸããã
äœæããããã¹ãŠã®ãªããžã§ã¯ãã¯æ¬¡ã®ããã«è¡šç€ºãããŸãã
ÐМаÑеЌ
Kubernetes ã¯ã©ã¹ã¿ãŒã®äœæäŸ
次ã®äŸã«é²ãåã«ãåã«äœæãããªãœãŒã¹ãã¯ãªãŒã³ã¢ããããŸãã ããããããžã§ã¯ãã®ã«ãŒãã§è¡ãã«ã¯
$ 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
次ã«ãã³ãã³ããå®è¡ã㊠Selectel VPC API ãªããžã§ã¯ããã¯ãªã¢ããŸãã
$ 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
ã©ã¡ãã®å Žåãããã¹ãŠã®ãªããžã§ã¯ãã®åé€ã確èªããå¿ èŠããããŸãã
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
次ã®äŸã¯ãã£ã¬ã¯ããªã«ãããŸã
ãã®äŸã§ã¯ããããžã§ã¯ãããããžã§ã¯ãå ã®ããŒã«ãæã€ãŠãŒã¶ãŒãäœæããXNUMX ã€ã® Kubernetes ã¯ã©ã¹ã¿ãŒãèµ·åããŸãã ãã¡ã€ã«å vars.tf ããŒãã®æ°ããã®ç¹æ§ãKubernetes ããŒãžã§ã³ãªã©ã®ããã©ã«ãå€ã確èªã§ããŸãã
æåã®äŸãšåæ§ã®ãªãœãŒã¹ãäœæããã«ã¯ããŸãã¢ãžã¥ãŒã«ã®åæåãšã¢ãžã¥ãŒã« ãªãœãŒã¹ã®äœæãéå§ããŸãã ãããžã§ã¯ããšãŠãŒã¶ãŒããããä»ã®ãã¹ãŠãäœæããŸãã
$ 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
Kubernetes ã¯ã©ã¹ã¿ãŒã®äœæãšç®¡çã¯ãOpenStack Magnum ã³ã³ããŒãã³ããéããŠç§»è¡ãããŸãã ã¯ã©ã¹ã¿ãŒã®æäœæ¹æ³ã«ã€ããŠè©³ããã¯ã次ã®ãããããã芧ãã ããã
ã¯ã©ã¹ã¿ãŒãæºåãããšãã«ããã£ã¹ã¯ãšä»®æ³ãã·ã³ãäœæãããå¿ èŠãªãã¹ãŠã®ã³ã³ããŒãã³ããã€ã³ã¹ããŒã«ãããŸãã æºåã«ã¯çŽ 4 åããããŸãããã®éãTerraform ã¯æ¬¡ã®ãããªã¡ãã»ãŒãžã衚瀺ããŸãã
module.kubernetes_cluster.openstack_containerinfra_cluster_v1.cluster_1: Still creating... (3m0s elapsed)
ã€ã³ã¹ããŒã«ãå®äºãããšãTerraform ã¯ã¯ã©ã¹ã¿ãŒã®æºåãã§ããããšã瀺ãããã® ID ã衚瀺ããŸãã
module.kubernetes_cluster.openstack_containerinfra_cluster_v1.cluster_1: Creation complete after 4m20s (ID: 3c8...)
Apply complete! Resources: 6 added, 0 changed, 0 destroyed.
äœæããã Kubernetes ã¯ã©ã¹ã¿ãŒããŠãŒãã£ãªãã£ãéããŠç®¡çããã«ã¯ ãã¥ãŒãã¯ã« ã¯ã©ã¹ã¿ãŒã¢ã¯ã»ã¹ãã¡ã€ã«ãååŸããå¿ èŠããããŸãã ãããè¡ãã«ã¯ãã¢ã«ãŠã³ãå ã®ãããžã§ã¯ãã®ãªã¹ãã§ãTerraform ãéããŠäœæããããããžã§ã¯ãã«ç§»åããŸãã
次ã«ã次ã®ãããªãªã³ã¯ããã©ããŸã
ãã°ã€ã³æ
å ±ã«ã¯ãTerraform ãéããŠäœæãããŠãŒã¶ãŒåãšãã¹ã¯ãŒãã䜿çšããŸãã äžæ£è¡çºãããŠããªãå Žå vars.tf ãŸã㯠main.tf ãã®äŸã§ã¯ããŠãŒã¶ãŒã®ååã¯æ¬¡ã®ãšããã§ãã tf_userã å€æ°ã®å€ããã¹ã¯ãŒããšããŠäœ¿çšããå¿
èŠããããŸã TF_VAR_ãŠãŒã¶ãŒãã¹ã¯ãŒãèµ·åæã«æå®ããã ãã©ãã©ãŒã é©çš 以åã
ãããžã§ã¯ãå ã§ã¿ãã«ç§»åããå¿ èŠããããŸã Kubernetes:
ããã¯ãTerraform çµç±ã§äœæãããã¯ã©ã¹ã¿ãŒãé
眮ãããå Žæã§ãã ãã¡ã€ã«ãããŠã³ããŒããã ãã¥ãŒãã¯ã« ãã¢ã¯ã»ã¹ãã¿ãã§æ¬¡ã®ããšãã§ããŸãã
ã€ã³ã¹ããŒã«æé ã¯åãã¿ãã«ãããŸãã ãã¥ãŒãã¯ã« ãããŠããŠã³ããŒããããã®ã®äœ¿çš config.yaml.
æã¡äžãåŸ ãã¥ãŒãã¯ã« ãããŠç°å¢å€æ°ã®èšå® KUBECONFIG Kubernetes ã䜿çšã§ããŸãã
$ 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
ã¯ã©ã¹ã¿ãŒ ããŒãã®æ°ã¯ãTerraform ã䜿çšããŠç°¡åã«å€æŽã§ããŸãã
ãã¡ã€ã«å
main.tf 次ã®å€ãæå®ãããŸãã
cluster_node_count = "${var.cluster_node_count}"
ãã®å€ã¯æ¬¡ãã眮ãæããããŸãã vars.tf:
variable "cluster_node_count" {
default = 2
}
ã©ã¡ããã®ããã©ã«ãå€ãå€æŽã§ããŸãã vars.tfããŸãã¯å¿ èŠãªå€ãçŽæ¥æå®ããŸãã main.tf:
- cluster_node_count = "${var.cluster_node_count}"
+ cluster_node_count = 3
æåã®äŸã®å Žåãšåæ§ã«ãå€æŽãé©çšããã«ã¯ã次ã®ã³ãã³ãã䜿çšããŸãã ãã©ãã©ãŒã é©çš:
$ env
TF_VAR_sel_account=SEL_ACCOUNT
TF_VAR_sel_token=SEL_TOKEN
TF_VAR_user_password=USER_PASSWORD
terraform apply
ããŒãã®æ°ãå€ãã£ãŠããã¯ã©ã¹ã¿ãŒã¯åŒãç¶ã䜿çšã§ããŸãã Terraform çµç±ã§ããŒããè¿œå ããåŸã¯ãè¿œå ã®æ§æãè¡ããã«äœ¿çšã§ããŸãã
$ 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
ãŸãšã
ãã®èšäºã§ã¯ãäž»ãªäœæ¥æ¹æ³ã«ã€ããŠèª¬æããŸããã
Selectel Terraform ãããã€ããŒã§èŠã€ãã£ããã°ã¯ã次ã®æ¹æ³ã§å ±åã§ããŸãã
åºæïŒ habr.com