آنچه در این مقاله میخوانید
نحوه ساخت کلاستر Kubernetes مدیریتشده با Terraform
۱۶ اردیبهشت ۱۴۰۴
کوبرنتیز مدیریتشده (Managed Kubernetes) کار را برای اجرای اپلیکیشنهای کانتینری بسیار آسان کرده است، طوریکه دیگر نیاز نیست تنظیمات پیچیده نودها را خودتان انجام دهید، فقط کافی است یک کلاستر بسازید و بار کاری را روی آن بیاندازید. اما ساختن کلاستر هم چند مرحله دارد که در این مقاله از بلاگ لیارا قصد داریم اینکار را با ابزار متنباز و ساده اما قدرتمند Terraform، به شما آموزش دهیم. همچنین در آخر یک پیکربندی آماده برای Terraform خواهیم داشت که بهراحتی بتوانید کلاستر را اجرا کنید. تا پایان این آموزش همراه ما باشید.
همچنین بخوانید:
- مرحله اول: نصب Terraform روی سرور مجازی
- مرحله دوم: پیکربندی کوبرنتیز مدیریت شده
- مرحله سوم: راهاندازی کلاستر با Terraform
- جمعبندی
- سوالات متداول

مرحله اول: نصب Terraform روی سرور مجازی
اولین کار نصب Terraformروی سرور VPS میباشد.
برای شروع نصب، سیستم را با دستور زیر بهروزرسانی کنید:
sudo apt update
در گام بعد، برای نصب Terraform، باید پکیج زیر را نصب کنید:
sudo apt install -y software-properties-common
با این پکیج میتوانید مخازن اضافی را مدیریت کرده، سپس مخزن (repository) رسمی HashiCorp را با دستور زیر به سرور اضافه کنید:
sudo apt-add-repository ppa:deadsnakes/ppa
اکنون مخزن (repository) را مجددا بهروزرسانی کنید:
sudo apt update
سپس، با دستور زیر Terraform را نصب کنید:
sudo apt install terraform
برای اینکه مطمئن شوید نصب بهدرستی انجام شده باشد، نسخهی نصب شده را با دستور زیر بررسی کنید:
terraform --version
در صورت نصب درست، نسخه Terraform را مشاهده خواهید کرد.
با سرور مجازی لینوکس لیارا، قدرت، سرعت و امنیت را یکجا داشته باشید!
✅ منابع اختصاصی و مقیاسپذیر✅ استقرار سریع بدون پیچیدگی ✅ قیمت مقرونبهصرفه
خرید سرور مجازی لینوکس ساعتی لیارا
مرحله دوم: پیکربندی کوبرنتیز مدیریت شده
بعد از اینکه Terraform را نصب کردید و آماده استفاده شد، اولین قدم ایجاد یک دایرکتوری جدید روی آن است. برای اینکه بتوانید فایلهای پیکربندی Terraform را داخل آن ذخیره کنید، محل دقیق این دایرکتوری مهم نیست؛ تنها نکتهای که اهمیت دارد این است که هر دایرکتوری شامل یک پیکربندی واحد از Terraform باشد.
ساختار پیکربندی Terraform
برای مدیریت منابع با استفاده از Terraform، باید ساختار خاصی را برای پیکربندیها رعایت کنیم. با این ساختار، منابع و تنظیمات بهصورت سازماندهی شده و منطقی پیادهسازی میشوند.
حالا برای شروع میتوانید از نمونههای عمومی Terraform برای راهاندازی کوبرنتیز مدیریت شده استفاده کنید.
برای مثال مخزن گیتهاب Terraform Kubernetes شامل نمونههای زیادی برای راهاندازی کلاستر Kubernetes میباشد که میتوانید از آنها استفاده کنید. همچنین برای راحتی بیشتر میتوانید از ابزار آنلاین download-directory.github.io برای دانلود دایرکتوریهای Terraform استفاده کنید.
پیکربندی کلاستر بهصورت ماژولار و منظم داخل فایلهای جداگانه قرار گرفته که هر کدام مسئول بخشی خاص از فرایند ساخت کلاستر هستند.
این فایلها معمولا شامل موارد زیر هستند:
فایل main.tf
این فایل جایی است که منابع داخل کلاستر را داخل آن تعریف میکنید:
- Namespace
- Secret یا ConfigMap
- Deployment و Service
مثال:
resource "kubernetes_namespace" "example" {
metadata {
name = "my-app"
}
}
resource "kubernetes_deployment" "nginx" {
metadata {
name = "nginx-deploy"
namespace = kubernetes_namespace.example.metadata[0].name
}
...
}
فایل provider.t
داخل این کلاستر مشخص میکنید که Terraform از Provider رسمی kubernetes
استفاده کند و نحوه اتصال به کلاستر نیز از طریق فایل تنظیمات kubeconfig مشخص میشود. این فایل معمولا در مسیر ~/.kube/config
قرار دارد و اطلاعات دسترسی به کلاستر را در خودش نگهمیدارد.
فایل variables.tf
در این فایل متغییرهایی که ممکن است نیاز داشته باشید را تعریف میکنید.
مثال:
variable "namespace_name" {
description = "The name of the Kubernetes namespace"
type = string
default = "my-app"
}
فایل outputs.tf
بعد از اینکه دستور terraform apply
را اجرا کردید و منابع ساخته شدند، فایل outputs.tf
، اطلاعات مهمی از منابع ساخته شده را به شما نشان میدهد.
توضیح بیشتر:
در فایل provider.tf
تعدادی مقادیر پیشفرض گذاشته شده که باعث میشوند به کلاستر Kubernetes که در همین پیکربندی، تعریف کردید، متصل شود. این اتصال معمولا از طریق فایل ~/.kube/config
انجام میشود.
اما میتوانید از روشهای دیگر مثل تعریف مستقیم گواهیها (client_certificate
, client_key
, cluster_ca_certificate
) هم استفاده کنید. اگر هم لازم شد میتوانید این فایلها را طبق نیاز خود تغییر دهید.
برای آشنایی کامل با کوبرنتیز (Kubernetes) و چگونگی کارکرد آن، مقاله زیر را از دست ندهید.
کوبرنتیز (Kubernetes) چیست؟
مرحله سوم: راهاندازی کلاستر با Terraform
تا این مرحله تمام فایلهای پیکربندی را آماده کردهاید، حالا وقت آن است که با Terraform شروع به کار کنید.
اول از همه با دستور زیر باید دایرکتوری پروژهتان (همان فولدری که فایلهای .tf را در آن قرار دادهاید.) را مقداردهی اولیه کنید:
terraform init
سپس Terraform، افزونههای لازم را دانلود میکند. خروجی باید مشابه زیر باشد:
Initializing the backend...
Initializing provider plugins...
- Finding latest version of hashicorp/local...
- Finding latest version of hashicorp/kubernetes...
- Finding upcloudltd/upcloud versions matching ">= 2.11.0"...
- Installing hashicorp/local v2.4.0...
- Installed hashicorp/local v2.4.0 (signed by HashiCorp)
- Installing hashicorp/kubernetes v2.22.0...
- Installed hashicorp/kubernetes v2.22.0 (signed by HashiCorp)
- Installing upcloudltd/upcloud v2.12.0...
- Installed upcloudltd/upcloud v2.12.0 (self-signed, key ID 60B4E1988F222907)
Partner and community providers are signed by their developers.
If you'd like to know more about provider signing, you can read about it here:
https://www.terraform.io/docs/cli/plugins/signing.html
Terraform has created a lock file .terraform.lock.hcl to record the provider
selections it made above. Include this file in your version control repository
so that Terraform can guarantee to make the same selections by default when
you run "terraform init" in the future.
Terraform has been successfully initialized!
You may now begin working with Terraform. Try running "terraform plan" to see
any changes that are required for your infrastructure. All Terraform commands
should now work.
If you ever set or change modules or backend configuration for Terraform,
rerun this command to reinitialize your working directory. If you forget, other
commands will detect it and remind you to do so if necessary.
حالا برای تست اینکه پیکربندی آماده است تا استقرار پیدا کند، دستور terraform plan
را اجرا کنید:
terraform plan
خروجی:
Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the
following symbols:
+ create
<- read (data resources)
Terraform will perform the following actions:
# data.upcloud_kubernetes_cluster.example will be read during apply
# (config refers to values not yet known)
...
Plan: 4 to add, 0 to change, 0 to destroy.
Changes to Outputs:
+ cluster_id = (known after apply)
در آخر اگر همه چیز درست باشد و Terraform هیچ مشکلی گزارش نکرد، میتوانید عملیات استقرار را با اجرای دستور زیر انجام دهید:
terraform apply
پس از اجرای دستور بالا، یک نمونه از تغییرات پیشنهادی به شما نشان داده میشود، در واقع Terraform از شما میپرسد که آیا میخواهید تغییرات پیشنهادی را انجام دهید یا خیر؟ برای تائید عملیات استقرار باید کلمه yes را وارد کنید:
Terraform will perform the following actions:
# upcloud_kubernetes_cluster.example_cluster will be created
+ resource "upcloud_kubernetes_cluster" "example_cluster" {
...
}
Plan: 1 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.
پس از تائید، فرایند استقرار شروع میشود و اجرای دستور terraform apply
باعث ایجاد یک شبکه، یک کلاستر و یک namespace در کلاستر جدید میشود.
تبریک، حالا باید یک کلاستر مدیریتشده کاملا عملیاتی روی سرور VPS خود داشته باشید که فقط منتظر آن است که یک بارکاری (workload) روی آن اجرا شود. از اینجا میتوانید اپلیکیشنها و سرویسهای خود را بهراحتی روی این کلاستر مستقر کنید و مدیریت خودکار را بهصورت کامل تجربه کنید.
همین الان، بدون کمترین پیچیدگی، سرور مجازی خودتون رو در کمتر از ۳۰ ثانیه، راهاندازی کنید.
✅ عملکرد پایدار ✅ ترافیک نامحدود ✅ هزینه بهصرفه
خرید سرور مجازی ابری
جمعبندی
در این آموزش مرحلهبهمرحله یاد گرفتیم چطور با استفاده از ابزار Terraform، یک کلاستر Kubernetes مدیریت شده را روی سرور مجازی راهاندازی کنیم. ساختار پیکربندی را در چند فایل ساده مثل main.tf
و provider.tf
تعریف کردیم و با چند دستور، کلاستر را بالا آوردیم.
برای آشنایی کامل با نحوه راهاندازی کلاستر K3s Kubernetes در اوبونتو 22.04 مقاله زیر را میتوانید مطالعه کنید.
نحوه راهاندازی کلاستر K3s Kubernetes
سوالات متداول
Terraform چیست؟
Terraform یک ابزار متنباز برای تعریف و مدیریت زیرساختها بهصورت کد (Infrastructure as Code) است.
فرق کوبرنتیز مدیریتشده با کوبرنتیز عادی چیست؟
در کوبرنتیز مدیریتشده دیگر نیازی به کنترل نودها نیست و همه چیز توسط سرویسدهنده انجام میشود و شما فقط روی استقرار متمرکز خواهید شد.
چرا از Terraform برای ساخت کلاستر استفاده کنم؟
Terraform یک ابزار قدرتمند برای خودکارسازی زیرساخت میباشد. بدون خطای انسانی میتوانید زیرساخت خود را بارها راهاندازی کنید.
بعد از ساخت کلاستر، چطور میتونم اپلیکیشنهایم را روش اجرا کنم؟
وقتی کلاستر آماده شد، میتوانید با استفاده از kubectl
به آن وصل شده و فایلهای YAML مربوط به دیپلویمنتهاتان را روی آن اجرا کنید.
برای آموزش نصب و راهاندازی Kubernetes روی سرور فیزیکی (بدون مجازیسازی)، مقاله زیر را میتوانید مطالعه کنید.
نحوه نصب و راهاندازی Kubernetes