راه اندازی یک خوشه AWS EKS با استفاده از Terraform: راهنمای مبتدی دوستانه
Summarize this content to 400 words in Persian Lang Amazon Elastic Kubernetes Service (EKS) اجرای Kubernetes را در AWS بدون نیاز به نصب یا راه اندازی هواپیمای کنترل Kubernetes خود ساده می کند. در این راهنما، من شما را از طریق ایجاد یک خوشه EKS با استفاده از Terraform راهنمایی میکنم – ابزار زیرساخت به عنوان کد (IaC) که به ارائه خودکار کمک میکند.
در پایان این پست، یک خوشه Kubernetes کاملاً عملیاتی در حال اجرا در AWS خواهید داشت. بیایید شروع کنیم!
پیش نیازها
قبل از ادامه، مطمئن شوید که موارد زیر را نصب کرده اید:
AWS CLI: برای تعامل با خدمات AWS از ترمینال خود.
Terraform: برای مدیریت زیرساخت AWS به عنوان کد.
همچنین برای ایجاد VPC ها، خوشه های EKS و گروه های امنیتی به یک حساب AWS با مجوزهای کافی نیاز دارید.
مرحله 1: اعتبارنامه AWS را پیکربندی کنید
ابتدا AWS CLI را با کلیدهای دسترسی خود با اجرای دستور زیر پیکربندی کنید:
aws configure
AWS خود را وارد کنید Access Key ID، Secret Access Key، Default region name، و Default output format. اطمینان حاصل کنید که کاربر یا نقش IAM که استفاده می کنید مجوزهای لازم برای ایجاد خوشه های EKS را دارد.
مرحله 2: با استفاده از Terraform یک VPC ایجاد کنید
یک فایل به نام ایجاد کنید vpc.tf برای تعریف تنظیمات شبکه این پیکربندی یک ابر خصوصی مجازی (VPC) با هر دو زیر شبکه خصوصی و عمومی ایجاد می کند و پشتیبانی DNS را فعال می کند.
data “aws_availability_zones” “azs” {}
module “vpc” {
source = “terraform-aws-modules/vpc/aws”
version = “5.13.0”
name = var.vpc_name
cidr = var.vpc_cidr
azs = data.aws_availability_zones.azs.names
private_subnets = [“10.0.1.0/24”, “10.0.2.0/24”]
public_subnets = [“10.0.101.0/24”, “10.0.102.0/24”]
enable_nat_gateway = true
single_nat_gateway = true
enable_dns_hostnames = true
enable_dns_support = true
tags = {
Name = var.vpc_name
“kubernetes.io/cluster/${var.eks_name}” = “shared”
}
private_subnet_tags = {
“kubernetes.io/cluster/${var.eks_name}” = “shared”
“kubernetes.io/role/internal-elb” = “1”
}
public_subnet_tags = {
“kubernetes.io/cluster/${var.eks_name}” = “shared”
“kubernetes.io/role/elb” = “1”
}
}
مرحله 3: متغیرها را تعریف کنید
یک فایل ایجاد کنید variables.tf برای تعریف متغیرهای قابل استفاده مجدد مانند نام VPC، بلوک CIDR و نام خوشه EKS. به این ترتیب، می توانید به راحتی این مقادیر را بدون تغییر در پیکربندی هسته تنظیم کنید.
variable “aws_region” {
description = “AWS region”
default = “us-east-1”
}
variable “vpc_name” {
description = “VPC name”
type = string
}
variable “vpc_cidr” {
description = “VPC CIDR”
default = “10.0.0.0/16”
}
variable “eks_name” {
description = “AWS EKS Cluster name”
type = string
}
variable “sg_name” {
description = “Security group name”
default = “aws-eks-sg”
}
مرحله 4: ایجاد گروه های امنیتی
اکنون، بیایید گروه های امنیتی را تنظیم کنیم که دسترسی شبکه به خوشه EKS را کنترل می کنند. یک فایل ایجاد کنید security-groups.tf با محتوای زیر:
resource “aws_security_group” “eks-sg” {
name = var.sg_name
vpc_id = module.vpc.vpc_id
}
resource “aws_security_group_rule” “eks-sg-ingress” {
description = “allow inbound traffic from eks”
type = “ingress”
from_port = 0
to_port = 0
protocol = -1
security_group_id = aws_security_group.eks-sg.id
cidr_blocks = [“49.43.153.70/32”]
}
resource “aws_security_group_rule” “eks-sg-egress” {
description = “allow outbound traffic to eks”
type = “egress”
from_port = 0
to_port = 0
protocol = -1
security_group_id = aws_security_group.eks-sg.id
cidr_blocks = [“0.0.0.0/0”]
}
مرحله 5: EKS Cluster را تنظیم کنید
با تکمیل تنظیمات شبکه و امنیت، یک فایل ایجاد کنید eks.tf برای تعریف گروه های خوشه و گره EKS.
module “eks” {
source = “terraform-aws-modules/eks/aws”
version = “~> 20.0”
cluster_name = var.eks_name
cluster_version = “1.30”
enable_irsa = true
vpc_id = module.vpc.vpc_id
subnet_ids = module.vpc.private_subnets
tags = {
cluster = “my-eks-cluster”
}
# EKS Managed Node Group(s)
eks_managed_node_group_defaults = {
ami_type = “AL2_x86_64”
instance_types = [“t2.micro”]
vpc_security_group_ids = [aws_security_group.eks-sg.id]
}
eks_managed_node_groups = {
node_group = {
min_size = 2
max_size = 3
desired_size = 2
}
}
}
مرحله 6: فایل های Terraform و Provider را ایجاد کنید
همچنین برای راه اندازی مناسب به Terraform و فایل های ارائه دهنده زیر نیاز دارید:
terraform.tf
terraform {
required_providers {
aws = {
source = “hashicorp/aws”
version = “~> 5.0”
}
}
}
provider.tf
provider “aws” {
region = var.aws_region
}
output.tf
output “cluster_id” {
description = “AWS EKS Cluster ID”
value = module.eks.cluster_id
}
output “cluster_endpoint” {
description = “AWS EKS Cluster Endpoint”
value = module.eks.cluster_endpoint
}
output “cluster_security_group_id” {
description = “Security group ID of the control plane in the cluster”
value = module.eks.cluster_security_group_id
}
output “region” {
description = “AWS region”
value = var.aws_region
}
output “oidc_provider_arn” {
value = module.eks.oidc_provider_arn
}
مرحله 7: Terraform را راه اندازی کنید
دستور زیر را برای مقداردهی اولیه Terraform و دانلود ارائه دهندگان لازم اجرا کنید:
terraform init
مرحله 8: اعتبارسنجی و برنامه ریزی
قبل از اعمال پیکربندی، آن را تایید کرده و تغییرات را پیشنمایش کنید:
terraform validate
terraform plan
مرحله 9: پیکربندی Terraform را اعمال کنید
خوشه EKS و VPC مربوطه را با:
terraform apply
این فرآیند تقریباً 15 دقیقه طول خواهد کشید. پس از اتمام، کلاستر AWS EKS خود را راه اندازی و اجرا خواهید کرد.
مرحله 10: Cluster را در کنسول AWS تأیید کنید
سر به کنسول مدیریت AWS، پیمایش کنید به EX، و تأیید کنید که خوشه شما فهرست شده است.
مرحله 11: پیکربندی دسترسی خوشه (مرحله دستی)
پس از آماده شدن خوشه EKS، باید دسترسی را برای کاربران یا نقش های IAM خود پیکربندی کنید:
در کنسول AWS، به آن بروید EKS > خوشه شما > پیکربندی > دسترسی.
را کلیک کنید نقش اضافه کنید یا کاربر اضافه کنید.
را ارائه دهید ARN اصلی IAM.
را انتخاب کنید تایپ کنید (نقش یا کاربر)، ارائه الف نام کاربریو a را انتخاب کنید نام خط مشی (به عنوان مثال، Admin یا ViewOnly).
را تعریف کنید محدوده دسترسی.
کلیک کنید سیاست را اضافه کنید و پیکربندی را نهایی کنید.
این مرحله به کاربران یا نقشها اجازه میدهد تا با استفاده از احراز هویت مبتنی بر IAM با خوشه Kubernetes تعامل داشته باشند.
مرحله 12: گره ها را در تب Compute تأیید کنید
برای بررسی اینکه آیا گره ها آماده و در حال اجرا هستند:
برو به محاسبه کنید برگه خوشه در کنسول AWS.
اطمینان حاصل کنید که گره های کارگر قابل مشاهده هستند.
مرحله 13: از طریق CLI به کلاستر دسترسی پیدا کنید
هنگامی که خوشه راه اندازی شد، با استفاده از AWS CLI با اجرای:
aws eks update-kubeconfig –name <cluster-name> –region <aws-region>
این دستور شما را پیکربندی می کند kubectl زمینه برای استفاده از خوشه جدید EKS.
مرحله 14: منابع را پاکسازی کنید
برای جلوگیری از هزینههای غیرمنتظره، منابعی را که ایجاد کردهاید در زمانی که دیگر مورد نیاز نیستند حذف کنید:
terraform destroy
نتیجه گیری
شما با استفاده از Terraform یک خوشه AWS EKS را با موفقیت راه اندازی کردید! این راهنما یک رویکرد ساده برای فراهم کردن زیرساخت های ابری ارائه می دهد و تضمین می کند که می توانید به سرعت با Kubernetes در AWS شروع کنید.
با خیال راحت پیکربندی را بر اساس نیاز خود سفارشی کنید و به خاطر داشته باشید که پس از اتمام کار، منابع را پاکسازی کنید تا از هزینه های غیر ضروری جلوگیری کنید. ترافورمینگ مبارک!
Amazon Elastic Kubernetes Service (EKS) اجرای Kubernetes را در AWS بدون نیاز به نصب یا راه اندازی هواپیمای کنترل Kubernetes خود ساده می کند. در این راهنما، من شما را از طریق ایجاد یک خوشه EKS با استفاده از Terraform راهنمایی میکنم – ابزار زیرساخت به عنوان کد (IaC) که به ارائه خودکار کمک میکند.
در پایان این پست، یک خوشه Kubernetes کاملاً عملیاتی در حال اجرا در AWS خواهید داشت. بیایید شروع کنیم!
پیش نیازها
قبل از ادامه، مطمئن شوید که موارد زیر را نصب کرده اید:
- AWS CLI: برای تعامل با خدمات AWS از ترمینال خود.
- Terraform: برای مدیریت زیرساخت AWS به عنوان کد.
همچنین برای ایجاد VPC ها، خوشه های EKS و گروه های امنیتی به یک حساب AWS با مجوزهای کافی نیاز دارید.
مرحله 1: اعتبارنامه AWS را پیکربندی کنید
ابتدا AWS CLI را با کلیدهای دسترسی خود با اجرای دستور زیر پیکربندی کنید:
aws configure
AWS خود را وارد کنید Access Key ID
، Secret Access Key
، Default region name
، و Default output format
. اطمینان حاصل کنید که کاربر یا نقش IAM که استفاده می کنید مجوزهای لازم برای ایجاد خوشه های EKS را دارد.
مرحله 2: با استفاده از Terraform یک VPC ایجاد کنید
یک فایل به نام ایجاد کنید vpc.tf
برای تعریف تنظیمات شبکه این پیکربندی یک ابر خصوصی مجازی (VPC) با هر دو زیر شبکه خصوصی و عمومی ایجاد می کند و پشتیبانی DNS را فعال می کند.
data "aws_availability_zones" "azs" {}
module "vpc" {
source = "terraform-aws-modules/vpc/aws"
version = "5.13.0"
name = var.vpc_name
cidr = var.vpc_cidr
azs = data.aws_availability_zones.azs.names
private_subnets = ["10.0.1.0/24", "10.0.2.0/24"]
public_subnets = ["10.0.101.0/24", "10.0.102.0/24"]
enable_nat_gateway = true
single_nat_gateway = true
enable_dns_hostnames = true
enable_dns_support = true
tags = {
Name = var.vpc_name
"kubernetes.io/cluster/${var.eks_name}" = "shared"
}
private_subnet_tags = {
"kubernetes.io/cluster/${var.eks_name}" = "shared"
"kubernetes.io/role/internal-elb" = "1"
}
public_subnet_tags = {
"kubernetes.io/cluster/${var.eks_name}" = "shared"
"kubernetes.io/role/elb" = "1"
}
}
مرحله 3: متغیرها را تعریف کنید
یک فایل ایجاد کنید variables.tf
برای تعریف متغیرهای قابل استفاده مجدد مانند نام VPC، بلوک CIDR و نام خوشه EKS. به این ترتیب، می توانید به راحتی این مقادیر را بدون تغییر در پیکربندی هسته تنظیم کنید.
variable "aws_region" {
description = "AWS region"
default = "us-east-1"
}
variable "vpc_name" {
description = "VPC name"
type = string
}
variable "vpc_cidr" {
description = "VPC CIDR"
default = "10.0.0.0/16"
}
variable "eks_name" {
description = "AWS EKS Cluster name"
type = string
}
variable "sg_name" {
description = "Security group name"
default = "aws-eks-sg"
}
مرحله 4: ایجاد گروه های امنیتی
اکنون، بیایید گروه های امنیتی را تنظیم کنیم که دسترسی شبکه به خوشه EKS را کنترل می کنند. یک فایل ایجاد کنید security-groups.tf
با محتوای زیر:
resource "aws_security_group" "eks-sg" {
name = var.sg_name
vpc_id = module.vpc.vpc_id
}
resource "aws_security_group_rule" "eks-sg-ingress" {
description = "allow inbound traffic from eks"
type = "ingress"
from_port = 0
to_port = 0
protocol = -1
security_group_id = aws_security_group.eks-sg.id
cidr_blocks = ["49.43.153.70/32"]
}
resource "aws_security_group_rule" "eks-sg-egress" {
description = "allow outbound traffic to eks"
type = "egress"
from_port = 0
to_port = 0
protocol = -1
security_group_id = aws_security_group.eks-sg.id
cidr_blocks = ["0.0.0.0/0"]
}
مرحله 5: EKS Cluster را تنظیم کنید
با تکمیل تنظیمات شبکه و امنیت، یک فایل ایجاد کنید eks.tf
برای تعریف گروه های خوشه و گره EKS.
module "eks" {
source = "terraform-aws-modules/eks/aws"
version = "~> 20.0"
cluster_name = var.eks_name
cluster_version = "1.30"
enable_irsa = true
vpc_id = module.vpc.vpc_id
subnet_ids = module.vpc.private_subnets
tags = {
cluster = "my-eks-cluster"
}
# EKS Managed Node Group(s)
eks_managed_node_group_defaults = {
ami_type = "AL2_x86_64"
instance_types = ["t2.micro"]
vpc_security_group_ids = [aws_security_group.eks-sg.id]
}
eks_managed_node_groups = {
node_group = {
min_size = 2
max_size = 3
desired_size = 2
}
}
}
مرحله 6: فایل های Terraform و Provider را ایجاد کنید
همچنین برای راه اندازی مناسب به Terraform و فایل های ارائه دهنده زیر نیاز دارید:
terraform.tf
terraform {
required_providers {
aws = {
source = "hashicorp/aws"
version = "~> 5.0"
}
}
}
provider.tf
provider "aws" {
region = var.aws_region
}
output.tf
output "cluster_id" {
description = "AWS EKS Cluster ID"
value = module.eks.cluster_id
}
output "cluster_endpoint" {
description = "AWS EKS Cluster Endpoint"
value = module.eks.cluster_endpoint
}
output "cluster_security_group_id" {
description = "Security group ID of the control plane in the cluster"
value = module.eks.cluster_security_group_id
}
output "region" {
description = "AWS region"
value = var.aws_region
}
output "oidc_provider_arn" {
value = module.eks.oidc_provider_arn
}
مرحله 7: Terraform را راه اندازی کنید
دستور زیر را برای مقداردهی اولیه Terraform و دانلود ارائه دهندگان لازم اجرا کنید:
terraform init
مرحله 8: اعتبارسنجی و برنامه ریزی
قبل از اعمال پیکربندی، آن را تایید کرده و تغییرات را پیشنمایش کنید:
terraform validate
terraform plan
مرحله 9: پیکربندی Terraform را اعمال کنید
خوشه EKS و VPC مربوطه را با:
terraform apply
این فرآیند تقریباً 15 دقیقه طول خواهد کشید. پس از اتمام، کلاستر AWS EKS خود را راه اندازی و اجرا خواهید کرد.
مرحله 10: Cluster را در کنسول AWS تأیید کنید
سر به کنسول مدیریت AWS، پیمایش کنید به EX، و تأیید کنید که خوشه شما فهرست شده است.
مرحله 11: پیکربندی دسترسی خوشه (مرحله دستی)
پس از آماده شدن خوشه EKS، باید دسترسی را برای کاربران یا نقش های IAM خود پیکربندی کنید:
- در کنسول AWS، به آن بروید EKS > خوشه شما > پیکربندی > دسترسی.
- را کلیک کنید نقش اضافه کنید یا کاربر اضافه کنید.
- را ارائه دهید ARN اصلی IAM.
- را انتخاب کنید تایپ کنید (نقش یا کاربر)، ارائه الف نام کاربریو a را انتخاب کنید نام خط مشی (به عنوان مثال، Admin یا ViewOnly).
- را تعریف کنید محدوده دسترسی.
- کلیک کنید سیاست را اضافه کنید و پیکربندی را نهایی کنید.
این مرحله به کاربران یا نقشها اجازه میدهد تا با استفاده از احراز هویت مبتنی بر IAM با خوشه Kubernetes تعامل داشته باشند.
مرحله 12: گره ها را در تب Compute تأیید کنید
برای بررسی اینکه آیا گره ها آماده و در حال اجرا هستند:
- برو به محاسبه کنید برگه خوشه در کنسول AWS.
- اطمینان حاصل کنید که گره های کارگر قابل مشاهده هستند.
مرحله 13: از طریق CLI به کلاستر دسترسی پیدا کنید
هنگامی که خوشه راه اندازی شد، با استفاده از AWS CLI با اجرای:
aws eks update-kubeconfig --name <cluster-name> --region <aws-region>
این دستور شما را پیکربندی می کند kubectl
زمینه برای استفاده از خوشه جدید EKS.
مرحله 14: منابع را پاکسازی کنید
برای جلوگیری از هزینههای غیرمنتظره، منابعی را که ایجاد کردهاید در زمانی که دیگر مورد نیاز نیستند حذف کنید:
terraform destroy
نتیجه گیری
شما با استفاده از Terraform یک خوشه AWS EKS را با موفقیت راه اندازی کردید! این راهنما یک رویکرد ساده برای فراهم کردن زیرساخت های ابری ارائه می دهد و تضمین می کند که می توانید به سرعت با Kubernetes در AWS شروع کنید.
با خیال راحت پیکربندی را بر اساس نیاز خود سفارشی کنید و به خاطر داشته باشید که پس از اتمام کار، منابع را پاکسازی کنید تا از هزینه های غیر ضروری جلوگیری کنید. ترافورمینگ مبارک!