برنامه نویسی

نصب افزونه Dapr برای سرویس Azure Kubernetes با Terraform

Summarize this content to 400 words in Persian Lang
به عنوان بخشی از خوشه AKS که برای توسعه شخصی خود می سازم، به این نتیجه رسیدم که نصب افزونه Dapr بر روی خوشه ام ارزشمند باشد. برنامه‌های افزودنی AKS یک تجربه مبتنی بر مدیریت منابع Azure را برای نصب و مدیریت سرویس‌های مختلف مانند Dapr در خوشه شما ارائه می‌کنند.

از آنجایی که من کلاستر خود را با استفاده از Terraform ساختم، تصمیم گرفتم افزونه Dapr را نیز با استفاده از Terraform پیکربندی کنم. در این مقاله، در مورد اینکه چگونه می‌توانیم خوشه AKS خود را پیکربندی کنیم تا بتوانیم برنامه‌های افزودنی را روی آن نصب کنیم، چگونه پسوند کلاستر Dapr کار می‌کند، صحبت خواهم کرد و سپس توضیح می‌دهم که چگونه می‌توانیم پسوند Dapr خود را در Terraform پیکربندی کنیم.

اولین کاری که باید انجام دهیم این است که مطمئن شویم خوشه AKS ما یک هویت مدیریت شده دارد. برنامه های افزودنی خوشه با خوشه های مبتنی بر خدمات اصلی کار نمی کنند.

در Terraform، ما می توانیم خوشه AKS خود را با یک هویت مدیریت شده مانند زیر ایجاد کنیم:

resource “azurerm_kubernetes_cluster” “aks” {
name = var.aks_name
location = var.location
resource_group_name = var.rg_name
dns_prefix = var.aks_name
role_based_access_control_enabled = true
tags = var.tags

default_node_pool {
name = “default”
node_count = var.node_count
vm_size = var.vm_size
}

identity {
type = “UserAssigned”
identity_ids = [ var.identity_ids ] }

network_profile {
network_plugin = “kubenet”
load_balancer_sku = “standard”
}

monitor_metrics {
annotations_allowed = null
labels_allowed = null
}

linux_profile {
admin_username = var.username
ssh_key {
key_data = var.ssh_public_key
}
}
}

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

من این را به عنوان یک ماژول محلی پیاده سازی کرده ام، بنابراین در من main.tf فایلی که از آن عبور می کنم identity_ids به عنوان شناسه هویت مدیریت شده من:

module “user_assigned_identity” {
source = “../modules/user-assigned-identity”
name = var.user_assigned_identity_name
location = var.location
rg_name = module.resource-group.name
tags = var.tags
}

module “aks” {
source = “../modules/aks-cluster”
rg_name = module.resource-group.name
location = module.resource-group.location
tags = var.tags
username = var.aks_username
ssh_public_key = module.ssh-key.key_data
vm_size = var.vm_size
node_count = var.node_count
identity_ids = module.user_assigned_identity.user_assinged_identity_id
aks_name = var.aks_name
}

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

کار دیگری که باید انجام دهیم این است که چند ارائه دهنده منابع را در اشتراک Azure خود ثبت کنیم. این نسبتاً ساده است زیرا فقط چند دستور AZ CLI است:

az provider register –namespace Microsoft.ContainerService –wait
az provider register –namespace Microsoft.KubernetesConfiguration –wait

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

هنگامی که این همه راه اندازی شد، می توانیم به پیکربندی افزونه Dapr در خوشه AKS خود نگاه کنیم. اما ابتدا، اجازه دهید ابتدا نحوه عملکرد پسوند Dapr را مورد بحث قرار دهیم.

برنامه افزودنی Dapr طرح کنترل Dapr را در خوشه AKS ما ارائه می کند و خدمات زیر را ایجاد می کند:

dapr-operator = این به‌روزرسانی‌های مؤلفه و نقاط پایانی سرویس‌های Kubernetes را برای Dapr مدیریت می‌کند (فروشگاه دولتی، میخانه/فرعی‌ها و غیره)

dapr-sidecar-injector = این Dapr را به غلاف‌های استقرار مشروح تزریق می‌کند و متغیرهای محیطی را اضافه می‌کند تا برنامه‌ها بتوانند با Dapr بدون کدگذاری سخت مقادیر پورت Dapr ارتباط برقرار کنند.

dapr-placement = این فقط برای بازیگران استفاده می‌شود و جداول نگاشتی ایجاد می‌کند که نمونه‌های بازیگر را به پادها ترسیم می‌کند.

dapr-sentry = این mTLS بین سرویس ها را مدیریت می کند و به عنوان یک مرجع گواهی عمل می کند.

هنگامی که Dapr روی خوشه ما نصب شد، می‌توانیم برنامه‌هایی را با استفاده از APIهای بلوک ساختمانی Dapr با افزودن حاشیه‌نویسی به استقرارهایمان توسعه دهیم.

حال بیایید نگاهی بیندازیم که چگونه می‌توانیم افزونه خود را با استفاده از Terraform ایجاد کنیم.

پسوندهای خوشه AKS در ارائه دهنده AzureRm در دسترس هستند. من همچنین این را به عنوان ماژول پیاده‌سازی کرده‌ام (فقط در صورتی که برنامه‌های افزودنی دیگری وجود داشته باشد که می‌خواهم روی خوشه نصب کنم):

resource “azurerm_kubernetes_cluster_extension” “ext” {
name = var.ext_name
cluster_id = var.cluster_id
extension_type = var.extension_type
release_train = “Stable”
configuration_settings = var.configuration_settings
}

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

برای ماژول من، من فقط می خواهم متغیرهای زیر را در من منتقل کنم variables.tf فایل:

variable “ext_name” {
type = string
description = “The name of the AKS extension”
}

variable “cluster_id” {
type = string
description = “The ID of the AKS cluster to install the extension”
}

variable “extension_type” {
type = string
description = “The type of the extension”
}

variable “configuration_settings” {
type = map
description = “The configuration settings for the extension”
default = {}
}

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

بیایید این را تجزیه کنیم:

ext_name نام پسوند خوشه Kubernetes ما است.

cluster_id شناسه خوشه Kubernetes ما را مشخص می کند که برنامه افزودنی ما روی آن نصب خواهد شد.

extension_type نوع افزونه ای که قرار است نصب شود را مشخص می کند.

configuration_settings یک ویژگی تنظیمات پیکربندی اختیاری هستند که می توانیم از آنها برای پیکربندی جفت نام-مقدار برای برنامه افزودنی استفاده کنیم.

در ماژول ما، من در حال کدگذاری سخت هستم release_train ارزش بودن Stable. این نیز می تواند باشد Preview، که می تواند برای آزمایش ویژگی های جدید خوب باشد، اما برای موارد استفاده تولید مناسب نیست.

هنگامی که ماژول ما تعریف شد، فقط یک مورد از پیاده سازی آن در ما است main.tf فایل مانند این:

module “dapr-extension” {
source = “../modules/aks-extension”
extension_type = var.dapr_extension_type
cluster_id = module.aks.aks_id
ext_name = var.dapr_extension_name
}

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

و سپس مقداری را در ما تنظیم کنید variables.tf فایل

variable “dapr_extension_name” {
type = string
description = “The name of the Dapr extension”
default = “dapr”
}

variable “dapr_extension_type” {
default = “Microsoft.Dapr”
type = string
description = “The type of the Dapr extension”
}

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

هنگامی که خوشه AKS ما مستقر شد، باید برنامه افزودنی خود را در پورتال پیکربندی کنیم.

فضای نام جدیدی به نام dapr-system همچنین در خوشه AKS ما ایجاد خواهد شد.

و در فضای نام خود، باید آن را ببینیم dapr-sentry، dapr-operator، dapr-sidecar-injector، و dapr-monitoring-metrics استقرارها

نصب برنامه های افزودنی AKS با Terraform نسبتاً ساده است. انجام این کار از طریق Terraform به ما این مزیت را می‌دهد که افزونه‌های خود را برای خوشه AKS خود به‌صورت اعلامی نصب کنیم، به‌جای اینکه آن را به‌طور ضروری از طریق ابزارهایی مانند AZ CLI پیکربندی کنیم. حتی اگر افزونه Dapr را نصب کردم، می‌توانیم افزونه‌هایی را برای Flux، Azure Machine Learning و موارد دیگر نصب کنیم.

اگر می خواهید در مورد آنها بیشتر بدانید، می توانید در اینجا بیشتر بخوانید

اگر در این مورد سوالی دارید، لطفا با من در توییتر تماس بگیرید @willvelida

تا دفعه بعد، کد نویسی مبارک! 🤓🖥️

به عنوان بخشی از خوشه AKS که برای توسعه شخصی خود می سازم، به این نتیجه رسیدم که نصب افزونه Dapr بر روی خوشه ام ارزشمند باشد. برنامه‌های افزودنی AKS یک تجربه مبتنی بر مدیریت منابع Azure را برای نصب و مدیریت سرویس‌های مختلف مانند Dapr در خوشه شما ارائه می‌کنند.

از آنجایی که من کلاستر خود را با استفاده از Terraform ساختم، تصمیم گرفتم افزونه Dapr را نیز با استفاده از Terraform پیکربندی کنم. در این مقاله، در مورد اینکه چگونه می‌توانیم خوشه AKS خود را پیکربندی کنیم تا بتوانیم برنامه‌های افزودنی را روی آن نصب کنیم، چگونه پسوند کلاستر Dapr کار می‌کند، صحبت خواهم کرد و سپس توضیح می‌دهم که چگونه می‌توانیم پسوند Dapr خود را در Terraform پیکربندی کنیم.

اولین کاری که باید انجام دهیم این است که مطمئن شویم خوشه AKS ما یک هویت مدیریت شده دارد. برنامه های افزودنی خوشه با خوشه های مبتنی بر خدمات اصلی کار نمی کنند.

در Terraform، ما می توانیم خوشه AKS خود را با یک هویت مدیریت شده مانند زیر ایجاد کنیم:

resource "azurerm_kubernetes_cluster" "aks" {
  name = var.aks_name
  location = var.location
  resource_group_name = var.rg_name
  dns_prefix = var.aks_name
  role_based_access_control_enabled = true
  tags = var.tags

  default_node_pool {
    name = "default"
    node_count = var.node_count
    vm_size = var.vm_size
  }

  identity {
    type = "UserAssigned"
    identity_ids = [ var.identity_ids ]
  }

  network_profile {
    network_plugin = "kubenet"
    load_balancer_sku = "standard"
  }

  monitor_metrics {
    annotations_allowed = null
    labels_allowed = null
  }

  linux_profile {
    admin_username = var.username
    ssh_key {
      key_data = var.ssh_public_key
    }
  }
}
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

من این را به عنوان یک ماژول محلی پیاده سازی کرده ام، بنابراین در من main.tf فایلی که از آن عبور می کنم identity_ids به عنوان شناسه هویت مدیریت شده من:

module "user_assigned_identity" {
  source   = "../modules/user-assigned-identity"
  name     = var.user_assigned_identity_name
  location = var.location
  rg_name  = module.resource-group.name
  tags     = var.tags
}

module "aks" {
  source         = "../modules/aks-cluster"
  rg_name        = module.resource-group.name
  location       = module.resource-group.location
  tags           = var.tags
  username       = var.aks_username
  ssh_public_key = module.ssh-key.key_data
  vm_size        = var.vm_size
  node_count     = var.node_count
  identity_ids   = module.user_assigned_identity.user_assinged_identity_id
  aks_name       = var.aks_name
}
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

کار دیگری که باید انجام دهیم این است که چند ارائه دهنده منابع را در اشتراک Azure خود ثبت کنیم. این نسبتاً ساده است زیرا فقط چند دستور AZ CLI است:

az provider register --namespace Microsoft.ContainerService --wait 
az provider register --namespace Microsoft.KubernetesConfiguration --wait
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

هنگامی که این همه راه اندازی شد، می توانیم به پیکربندی افزونه Dapr در خوشه AKS خود نگاه کنیم. اما ابتدا، اجازه دهید ابتدا نحوه عملکرد پسوند Dapr را مورد بحث قرار دهیم.

برنامه افزودنی Dapr طرح کنترل Dapr را در خوشه AKS ما ارائه می کند و خدمات زیر را ایجاد می کند:

  • dapr-operator = این به‌روزرسانی‌های مؤلفه و نقاط پایانی سرویس‌های Kubernetes را برای Dapr مدیریت می‌کند (فروشگاه دولتی، میخانه/فرعی‌ها و غیره)
  • dapr-sidecar-injector = این Dapr را به غلاف‌های استقرار مشروح تزریق می‌کند و متغیرهای محیطی را اضافه می‌کند تا برنامه‌ها بتوانند با Dapr بدون کدگذاری سخت مقادیر پورت Dapr ارتباط برقرار کنند.
  • dapr-placement = این فقط برای بازیگران استفاده می‌شود و جداول نگاشتی ایجاد می‌کند که نمونه‌های بازیگر را به پادها ترسیم می‌کند.
  • dapr-sentry = این mTLS بین سرویس ها را مدیریت می کند و به عنوان یک مرجع گواهی عمل می کند.

هنگامی که Dapr روی خوشه ما نصب شد، می‌توانیم برنامه‌هایی را با استفاده از APIهای بلوک ساختمانی Dapr با افزودن حاشیه‌نویسی به استقرارهایمان توسعه دهیم.

حال بیایید نگاهی بیندازیم که چگونه می‌توانیم افزونه خود را با استفاده از Terraform ایجاد کنیم.

پسوندهای خوشه AKS در ارائه دهنده AzureRm در دسترس هستند. من همچنین این را به عنوان ماژول پیاده‌سازی کرده‌ام (فقط در صورتی که برنامه‌های افزودنی دیگری وجود داشته باشد که می‌خواهم روی خوشه نصب کنم):

resource "azurerm_kubernetes_cluster_extension" "ext" {
  name = var.ext_name
  cluster_id = var.cluster_id
  extension_type = var.extension_type
  release_train = "Stable"
  configuration_settings = var.configuration_settings
}
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

برای ماژول من، من فقط می خواهم متغیرهای زیر را در من منتقل کنم variables.tf فایل:

variable "ext_name" {
  type = string
  description = "The name of the AKS extension"
}

variable "cluster_id" {
  type = string
  description = "The ID of the AKS cluster to install the extension"
}

variable "extension_type" {
  type = string
  description = "The type of the extension"
}

variable "configuration_settings" {
  type = map
  description = "The configuration settings for the extension"
  default = {}
}
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

بیایید این را تجزیه کنیم:

  • ext_name نام پسوند خوشه Kubernetes ما است.
  • cluster_id شناسه خوشه Kubernetes ما را مشخص می کند که برنامه افزودنی ما روی آن نصب خواهد شد.
  • extension_type نوع افزونه ای که قرار است نصب شود را مشخص می کند.
  • configuration_settings یک ویژگی تنظیمات پیکربندی اختیاری هستند که می توانیم از آنها برای پیکربندی جفت نام-مقدار برای برنامه افزودنی استفاده کنیم.

در ماژول ما، من در حال کدگذاری سخت هستم release_train ارزش بودن Stable. این نیز می تواند باشد Preview، که می تواند برای آزمایش ویژگی های جدید خوب باشد، اما برای موارد استفاده تولید مناسب نیست.

هنگامی که ماژول ما تعریف شد، فقط یک مورد از پیاده سازی آن در ما است main.tf فایل مانند این:

module "dapr-extension" {
  source         = "../modules/aks-extension"
  extension_type = var.dapr_extension_type
  cluster_id     = module.aks.aks_id
  ext_name       = var.dapr_extension_name
}
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

و سپس مقداری را در ما تنظیم کنید variables.tf فایل

variable "dapr_extension_name" {
  type        = string
  description = "The name of the Dapr extension"
  default     = "dapr"
}

variable "dapr_extension_type" {
  default     = "Microsoft.Dapr"
  type        = string
  description = "The type of the Dapr extension"
}
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

هنگامی که خوشه AKS ما مستقر شد، باید برنامه افزودنی خود را در پورتال پیکربندی کنیم.

توضیحات تصویر

فضای نام جدیدی به نام dapr-system همچنین در خوشه AKS ما ایجاد خواهد شد.

توضیحات تصویر

و در فضای نام خود، باید آن را ببینیم dapr-sentry، dapr-operator، dapr-sidecar-injector، و dapr-monitoring-metrics استقرارها

توضیحات تصویر

نصب برنامه های افزودنی AKS با Terraform نسبتاً ساده است. انجام این کار از طریق Terraform به ما این مزیت را می‌دهد که افزونه‌های خود را برای خوشه AKS خود به‌صورت اعلامی نصب کنیم، به‌جای اینکه آن را به‌طور ضروری از طریق ابزارهایی مانند AZ CLI پیکربندی کنیم. حتی اگر افزونه Dapr را نصب کردم، می‌توانیم افزونه‌هایی را برای Flux، Azure Machine Learning و موارد دیگر نصب کنیم.

اگر می خواهید در مورد آنها بیشتر بدانید، می توانید در اینجا بیشتر بخوانید

اگر در این مورد سوالی دارید، لطفا با من در توییتر تماس بگیرید @willvelida

تا دفعه بعد، کد نویسی مبارک! 🤓🖥️

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا