సెలెక్టెల్తో పని చేయడానికి మేము అధికారిక టెర్రాఫార్మ్ ప్రొవైడర్ను ప్రారంభించాము. ఇన్ఫ్రాస్ట్రక్చర్-కోడ్ మెథడాలజీ (ఇన్ఫ్రాస్ట్రక్చర్ను కోడ్గా) ద్వారా వనరుల నిర్వహణను పూర్తిగా అమలు చేయడానికి ఈ ఉత్పత్తి వినియోగదారులను అనుమతిస్తుంది.
ప్రదాత ప్రస్తుతం సేవా వనరుల నిర్వహణకు మద్దతు ఇస్తున్నారు "వర్చువల్ ప్రైవేట్ క్లౌడ్" (ఇకపై VPC). భవిష్యత్తులో, సెలెక్టెల్ అందించే ఇతర సేవల వనరుల నిర్వహణను దానికి జోడించాలని మేము ప్లాన్ చేస్తున్నాము.
మీకు ఇప్పటికే తెలిసినట్లుగా, VPC సేవ OpenStack పైన నిర్మించబడింది. అయినప్పటికీ, ఓపెన్స్టాక్ పబ్లిక్ క్లౌడ్కు అందించడానికి స్థానిక సాధనాలను అందించనందున, సంక్లిష్ట మిశ్రమ వస్తువుల నిర్వహణను సులభతరం చేసే మరియు పనిని మరింత సౌకర్యవంతంగా చేసే అదనపు APIల సెట్లో మేము తప్పిపోయిన కార్యాచరణను అమలు చేసాము. ఓపెన్స్టాక్లో అందుబాటులో ఉన్న కార్యాచరణలో కొంత భాగం ప్రత్యక్ష వినియోగం నుండి మూసివేయబడింది, కానీ దీని ద్వారా అందుబాటులో ఉంటుంది మా API.
Selectel Terraform ప్రొవైడర్ ఇప్పుడు క్రింది VPC వనరులను నిర్వహించగల సామర్థ్యాన్ని కలిగి ఉంది:
ప్రాజెక్టులు మరియు వాటి కోటాలు;
వినియోగదారులు, వారి పాత్రలు మరియు టోకెన్లు;
క్రాస్-రీజినల్ మరియు VRRPతో సహా పబ్లిక్ సబ్నెట్లు;
సాఫ్ట్వేర్ లైసెన్స్లు.
ప్రొవైడర్ VPC APIతో పని చేయడానికి మా పబ్లిక్ గో లైబ్రరీని ఉపయోగిస్తుంది. లైబ్రరీ మరియు ప్రొవైడర్ రెండూ ఓపెన్ సోర్స్, అవి గితుబ్లో అభివృద్ధి చేయబడుతున్నాయి:
వర్చువల్ మిషన్లు, డిస్క్లు, కుబెర్నెట్స్ క్లస్టర్లు వంటి మిగిలిన క్లౌడ్ వనరులను నిర్వహించడానికి, మీరు OpenStack Terraform ప్రొవైడర్ని ఉపయోగించవచ్చు. రెండు ప్రొవైడర్ల కోసం అధికారిక డాక్యుమెంటేషన్ క్రింది లింక్లలో అందుబాటులో ఉంది:
ప్రారంభించడానికి, మీరు టెర్రాఫార్మ్ను ఇన్స్టాల్ చేయాలి (ఇన్స్టాలేషన్ ప్యాకేజీలకు సూచనలు మరియు లింక్లు ఇక్కడ చూడవచ్చు అధికారిక వెబ్సైట్).
పని చేయడానికి, ప్రొవైడర్కు సెలెక్టెల్ API కీ అవసరం, ఇది సృష్టించబడుతుంది ఖాతా నియంత్రణ ప్యానెల్.
సెలెక్టెల్తో పని చేయడానికి మానిఫెస్ట్లు టెర్రాఫార్మ్ ఉపయోగించి లేదా మా గితుబ్ రిపోజిటరీలో అందుబాటులో ఉన్న రెడీమేడ్ ఉదాహరణల సమితిని ఉపయోగించి సృష్టించబడతాయి: టెర్రఫార్మ్-ఉదాహరణలు.
ఉదాహరణలతో కూడిన రిపోజిటరీ రెండు డైరెక్టరీలుగా విభజించబడింది:
గుణకాలు, పారామితుల సమితిని ఇన్పుట్గా తీసుకుని, చిన్న వనరులను నిర్వహించే చిన్న పునర్వినియోగ మాడ్యూల్లను కలిగి ఉంటుంది;
ఉదాహరణలు, ఒకదానితో ఒకటి అనుసంధానించబడిన మాడ్యూల్స్ యొక్క పూర్తి సెట్ యొక్క ఉదాహరణలను కలిగి ఉంది.
Terraform ఇన్స్టాల్ చేసిన తర్వాత, Selectel API కీని సృష్టించి, ఉదాహరణలను సమీక్షించిన తర్వాత, ఆచరణాత్మక ఉదాహరణలకు వెళ్దాం.
ఫైల్లో vars.tf మాడ్యూల్లను కాల్ చేసేటప్పుడు ఉపయోగించబడే అన్ని పారామితులు వివరించబడ్డాయి. వాటిలో కొన్ని డిఫాల్ట్ విలువలను కలిగి ఉంటాయి, ఉదాహరణకు, జోన్లో సర్వర్ సృష్టించబడుతుంది en-3a కింది కాన్ఫిగరేషన్తో:
వాదన విస్మరించండి_మార్పులు లక్షణ మార్పును విస్మరించడానికి అనుమతిస్తుంది id వర్చువల్ మెషీన్ను రూపొందించడానికి ఉపయోగించే చిత్రం కోసం. VPC సేవలో, చాలా పబ్లిక్ చిత్రాలు వారానికి ఒకసారి స్వయంచాలకంగా నవీకరించబడతాయి మరియు అదే సమయంలో అవి ఉంటాయి id కూడా మారుతుంది. ఇది ఓపెన్స్టాక్ కాంపోనెంట్ - గ్లాన్స్ యొక్క ఆపరేషన్ యొక్క ప్రత్యేకతల కారణంగా ఉంది, దీనిలో చిత్రాలు మారని ఎంటిటీలుగా పరిగణించబడతాయి.
మీరు ఇప్పటికే ఉన్న సర్వర్ లేదా డిస్క్ను ఆర్గ్యుమెంట్గా సృష్టించినట్లయితే లేదా సవరించినట్లయితే image_id ఉపయోగించబడుతుంది id పబ్లిక్ ఇమేజ్, ఆ చిత్రం నవీకరించబడిన తర్వాత, టెర్రాఫార్మ్ మానిఫెస్ట్ని మళ్లీ అమలు చేయడం సర్వర్ లేదా డిస్క్ని పునఃసృష్టిస్తుంది. వాదనను ఉపయోగించడం విస్మరించండి_మార్పులు అటువంటి పరిస్థితిని నివారిస్తుంది.
గమనిక: వాదన విస్మరించండి_మార్పులు చాలా కాలం క్రితం టెర్రాఫార్మ్లో కనిపించింది: లాగండి#2525.
వాదన విస్మరించండి_పరిమాణం_నిర్ధారణ సర్వర్ యొక్క స్థానిక డిస్క్, కోర్లు లేదా మెమరీని విజయవంతంగా పునఃపరిమాణం చేయడానికి అవసరం. అభ్యర్థనను ఉపయోగించి ఓపెన్స్టాక్ నోవా భాగం ద్వారా ఇటువంటి మార్పులు చేయబడతాయి పరిమాణాన్ని. అభ్యర్థనపై డిఫాల్ట్ Nova పరిమాణాన్ని సర్వర్ని స్టేటస్లో ఉంచుతుంది verify_resize మరియు వినియోగదారు నుండి అదనపు నిర్ధారణ కోసం వేచి ఉంది. అయినప్పటికీ, ఈ ప్రవర్తనను మార్చవచ్చు, తద్వారా వినియోగదారు అదనపు చర్య తీసుకోవడానికి నోవా వేచి ఉండాల్సిన అవసరం లేదు.
పేర్కొన్న వాదన టెర్రాఫార్మ్ స్థితి కోసం వేచి ఉండకుండా అనుమతిస్తుంది verify_resize సర్వర్ కోసం మరియు దాని పారామితులను మార్చిన తర్వాత సర్వర్ సక్రియ స్థితిలో ఉంటుందనే వాస్తవం కోసం సిద్ధంగా ఉండండి. OpenStack Terraform ప్రొవైడర్ వెర్షన్ 1.10.0 నుండి వాదన అందుబాటులో ఉంది: లాగండి#422.
వనరుల సృష్టి
మానిఫెస్ట్లను ప్రారంభించే ముందు, మా ఉదాహరణలో రెండు వేర్వేరు ప్రొవైడర్లు ప్రారంభించబడిందని గమనించాలి మరియు ఓపెన్స్టాక్ ప్రొవైడర్ సెలెక్టెల్ ప్రొవైడర్ యొక్క వనరులపై ఆధారపడి ఉంటుంది, ఎందుకంటే ప్రాజెక్ట్లో వినియోగదారుని సృష్టించకుండా, అతనికి చెందిన వస్తువులను నిర్వహించడం అసాధ్యం. . దురదృష్టవశాత్తు, అదే కారణంతో, మేము ఆదేశాన్ని అమలు చేయలేము టెర్రాఫాం వర్తిస్తాయి మా ఉదాహరణ లోపల. మనం ముందుగా చేయాలి దరఖాస్తు మాడ్యూల్ కోసం ప్రాజెక్ట్_వినియోగదారుతో మరియు ఆ తర్వాత అన్నిటికీ.
గమనిక: నివేదించబడిన సమస్య టెర్రాఫార్మ్లో ఇంకా పరిష్కరించబడలేదు, మీరు గితుబ్లో చర్చను అనుసరించవచ్చు సంచిక#2430 и సంచిక#4149.
మేము ఆదేశాన్ని ఉపయోగించి మాడ్యూళ్ళను ప్రారంభించాము:
$ terraform init
ఉపయోగించిన ప్రొవైడర్ల యొక్క తాజా వెర్షన్లను Terraform డౌన్లోడ్ చేస్తుందని మరియు ఉదాహరణలో వివరించిన అన్ని మాడ్యూల్లను తనిఖీ చేస్తుందని అవుట్పుట్ చూపిస్తుంది.
మొదట మాడ్యూల్ను వర్తించండి ప్రాజెక్ట్_వినియోగదారుతో. దీనికి సెట్ చేయని వేరియబుల్స్ కోసం విలువలను మాన్యువల్గా పాస్ చేయడం అవసరం:
సెల్_ఖాతా మీ Selectel ఖాతా సంఖ్యతో;
సెల్_టోకెన్ మీ Selectel API కీతో;
యూజర్_పాస్వర్డ్ OpenStack వినియోగదారు కోసం పాస్వర్డ్తో.
మొదటి రెండు వేరియబుల్స్ యొక్క విలువలు తప్పనిసరిగా తీసుకోవాలి నియంత్రణ ప్యానెల్లు.
చివరి వేరియబుల్ కోసం, మీరు ఏదైనా పాస్వర్డ్తో రావచ్చు.
మాడ్యూల్ను ఉపయోగించడానికి, మీరు విలువలను భర్తీ చేయాలి SEL_ACCOUNT, SEL_TOKEN и USER_PASSWORD ఆదేశాన్ని అమలు చేయడం ద్వారా:
ఆదేశాన్ని అమలు చేసిన తర్వాత, టెర్రాఫార్మ్ ఏ వనరులను సృష్టించాలనుకుంటున్నదో చూపుతుంది మరియు నిర్ధారణ అవసరం:
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
ప్రాజెక్ట్, వినియోగదారు మరియు పాత్ర సృష్టించబడిన తర్వాత, మీరు మిగిలిన వనరులను సృష్టించడం ప్రారంభించవచ్చు:
మీరు పేర్కొన్న IPని ఉపయోగించి SSH ద్వారా సృష్టించిన వర్చువల్ మిషన్తో పని చేయవచ్చు.
వనరులను సవరించడం
Terraform ద్వారా వనరులను సృష్టించడంతోపాటు, వాటిని కూడా సవరించవచ్చు.
ఉదాహరణకు, పారామితుల కోసం విలువలను మార్చడం ద్వారా మా సర్వర్ కోసం కోర్ల సంఖ్య మరియు మెమరీని పెంచుకుందాం సర్వర్_vcpus и సర్వర్_ram_mb ఫైల్లో ఉదాహరణలు/vpc/server_local_root_disk/main.tf:
మా లో ఉదాహరణ రిపోజిటరీలు నెట్వర్క్ డ్రైవ్లతో వర్చువల్ మిషన్లను సృష్టించడం కోసం మీరు మానిఫెస్ట్లను కూడా చూడవచ్చు.
కుబెర్నెటీస్ క్లస్టర్ని సృష్టించడానికి ఒక ఉదాహరణ
తదుపరి ఉదాహరణకి వెళ్లే ముందు, మేము ఇంతకు ముందు సృష్టించిన వనరులను క్లీన్ చేస్తాము. దీన్ని చేయడానికి, ప్రాజెక్ట్ యొక్క మూలంలో టెర్రాఫార్మ్-ఉదాహరణలు/ఉదాహరణలు/vpc/server_local_root_disk OpenStack ఆబ్జెక్ట్లను తొలగించడానికి ఆదేశాన్ని అమలు చేయండి:
రెండు సందర్భాల్లో, మీరు అన్ని వస్తువుల తొలగింపును నిర్ధారించాలి:
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
ఈ ఉదాహరణ ప్రాజెక్ట్ను సృష్టిస్తుంది, ప్రాజెక్ట్లో ఒక వినియోగదారు పాత్రను కలిగి ఉంటుంది మరియు ఒక కుబెర్నెటెస్ క్లస్టర్ను పెంచుతుంది. ఫైల్లో vars.tf మీరు నోడ్ల సంఖ్య, వాటి లక్షణాలు, కుబెర్నెట్స్ వెర్షన్ మరియు మరిన్ని వంటి డిఫాల్ట్ విలువలను చూడవచ్చు.
వనరులను సృష్టించడానికి, మొదటి ఉదాహరణ మాదిరిగానే, మొదటగా, మాడ్యూల్లను ప్రారంభించడం మరియు మాడ్యూల్ వనరుల సృష్టిని ప్రారంభిద్దాం. ప్రాజెక్ట్_వినియోగదారుతోఆపై మిగతావన్నీ సృష్టించడం:
OpenStack Magnum కాంపోనెంట్ ద్వారా Kubernetes క్లస్టర్ల సృష్టి మరియు నిర్వహణను బదిలీ చేద్దాం. మీరు మా వాటిలో క్లస్టర్తో ఎలా పని చేయాలనే దాని గురించి మరింత తెలుసుకోవచ్చు మునుపటి వ్యాసాలుఅలాగే జ్ఞానం బేస్.
క్లస్టర్ను సిద్ధం చేసేటప్పుడు, డిస్క్లు, వర్చువల్ మిషన్లు సృష్టించబడతాయి మరియు అవసరమైన అన్ని భాగాలు వ్యవస్థాపించబడతాయి. తయారీకి దాదాపు 4 నిమిషాలు పడుతుంది, ఆ సమయంలో Terraform ఇలాంటి సందేశాలను ప్రదర్శిస్తుంది:
module.kubernetes_cluster.openstack_containerinfra_cluster_v1.cluster_1: Still creating... (3m0s elapsed)
ఇన్స్టాలేషన్ పూర్తయిన తర్వాత, క్లస్టర్ సిద్ధంగా ఉందని Terraform నివేదిస్తుంది మరియు దాని IDని ప్రదర్శిస్తుంది:
యుటిలిటీ ద్వారా సృష్టించబడిన కుబెర్నెట్స్ క్లస్టర్ని నిర్వహించడానికి kubectl మీరు క్లస్టర్ యాక్సెస్ ఫైల్ను పొందాలి. దీన్ని చేయడానికి, మీ ఖాతాలోని ప్రాజెక్ట్ల జాబితాలో Terraform ద్వారా సృష్టించబడిన ప్రాజెక్ట్కి వెళ్లండి:
తదుపరి లింక్ని అనుసరించండి xxxxxx.selvpc.ru, ఇది ప్రాజెక్ట్ పేరు క్రింద ప్రదర్శించబడుతుంది:
లాగిన్ సమాచారంగా Terraform ద్వారా సృష్టించబడిన వినియోగదారు పేరు మరియు పాస్వర్డ్ను ఉపయోగించండి. మీరు మారకపోతే vars.tf లేదా main.tf మా ఉదాహరణ కోసం, వినియోగదారుకు పేరు ఉంటుంది tf_user. వేరియబుల్ విలువ తప్పనిసరిగా పాస్వర్డ్గా ఉపయోగించబడాలి TF_VAR_user_password, ఇది స్టార్టప్లో పేర్కొనబడింది టెర్రాఫాం వర్తిస్తాయి గతంలో.
ప్రాజెక్ట్ లోపల, మీరు ట్యాబ్కు వెళ్లాలి Kubernetes:
Terraform ద్వారా సృష్టించబడిన క్లస్టర్ ఇక్కడ ఉంది. కోసం ఫైల్ని డౌన్లోడ్ చేయండి kubectl మీరు "యాక్సెస్" ట్యాబ్లో చేయవచ్చు:
ఈ ట్యాబ్ ఇన్స్టాలేషన్ సూచనలను కలిగి ఉంది. kubectl మరియు డౌన్లోడ్ చేసిన వాటిని ఉపయోగించండి config.yaml.
ప్రారంభించిన తరువాత kubectl మరియు ఎన్విరాన్మెంట్ వేరియబుల్ సెట్ చేయడం KUBECONFIG మీరు Kubernetes ఉపయోగించవచ్చు:
నోడ్ల సంఖ్య మారితే, క్లస్టర్ అందుబాటులో ఉంటుంది. 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
తీర్మానం
ఈ వ్యాసంలో, మేము పని చేసే ప్రధాన మార్గాలతో పరిచయం పొందాము "వర్చువల్ ప్రైవేట్ క్లౌడ్" Terraform ద్వారా. మీరు అధికారిక Selectel Terraform ప్రొవైడర్ని ఉపయోగిస్తే మరియు అభిప్రాయాన్ని అందిస్తే మేము సంతోషిస్తాము.
Selectel Terraform ప్రొవైడర్ యొక్క అన్ని కనుగొనబడిన బగ్లను దీని ద్వారా నివేదించవచ్చు గితుబ్ సమస్యలు.