برنامه نویسی

استقرار Node-Red در نمونه کانتینر Azure

این راهنما دستورالعمل‌هایی را برای استقرار برنامه Node-Red در پلتفرم Azure، استفاده از نمونه‌های کانتینر Azure، رجیستری کانتینر Azure و حساب ذخیره‌سازی Azure ارائه می‌دهد.

Azure Container Instance چیست؟

نمونه‌های کانتینر Azure (ACI) یک سرویس مدیریت‌شده است که به شما امکان می‌دهد کانتینرها را مستقیماً روی ابر عمومی Microsoft Azure اجرا کنید، بدون نیاز به استفاده از ماشین‌های مجازی (VM)

برای اطلاعات بیشتر در مورد نمونه های کانتینر Azure، اسناد رسمی را در این لینک بررسی کنید: مستندات نمونه کانتینر Azure.

Azure Container Registry چیست؟

Azure Container Registry یک سرویس ثبت خصوصی برای ساخت، ذخیره و مدیریت تصاویر کانتینر و مصنوعات مرتبط است.

برای اطلاعات بیشتر در مورد رجیستری کانتینر آزور، اسناد رسمی را در این لینک بررسی کنید: اسناد ثبت کانتینر لاجورد.

حساب Azure Storage چیست؟

پلت فرم Azure Storage راه حل ذخیره سازی ابری مایکروسافت برای سناریوهای مدرن ذخیره سازی داده است. Azure Storage ذخیره سازی بسیار در دسترس، بسیار مقیاس پذیر، بادوام و ایمن را برای انواع اشیاء داده در ابر ارائه می دهد. اشیاء داده Azure Storage از هر نقطه از جهان از طریق HTTP یا HTTPS از طریق REST API قابل دسترسی هستند.

برای اطلاعات بیشتر در مورد حساب Azure Storage، اسناد رسمی را در این لینک بررسی کنید: مستندات حساب Azure Storage.

راه اندازی:

قبل از شروع، مطمئن شوید که یک حساب Azure با اشتراک فعال دارید

مرحله 1:

وارد حساب Azure خود شوید

az login

مرحله 2:

  • یک رجیستری کانتینر ایجاد کنید و تصویر Node-RED را در رجیستری کانتینر ذخیره کنید

  • از Node-RED 1.0، مخزن در Docker Hub به تغییر نام داده شد nodered/node-red.

  • با استفاده از Azure CLI وارد رجیستری شوید

az acr login --name myregistry
docker login myregistry.azurecr.io

اگر با ایجاد Azure Container Registry (ACR) آشنا نیستید، می توانید برای دستورالعمل های گام به گام با استفاده از پورتال Azure به لینک زیر مراجعه کنید: شروع به کار با Azure Container Registry

مرحله 3:

یک اشتراک فایل Azure ایجاد کنید:

اسکریپت زیر را اجرا کنید تا یک حساب ذخیره سازی برای میزبانی اشتراک فایل و خود اشتراک ایجاد کنید. نام حساب ذخیره سازی باید در سطح جهانی منحصر به فرد باشد، بنابراین اسکریپت یک مقدار تصادفی به رشته پایه اضافه می کند.

# Change these parameters as needed
RESOURCE_GROUP=myResourceGroup
STORAGE_ACCOUNT_NAME=storageaccount$RANDOM
LOCATION=eastus
FILE_SHARE_NAME=node-red-share
IMAGE=testingregistrydevops.azurecr.io/node-red:latest
ACI_NAME=node-red

# Create the storage account with the parameters
az storage account create \
    --resource-group $RESOURCE_GROUP \
    --name $STORAGE_ACCOUNT_NAME \
    --location $LOCATION \
    --sku Standard_LRS

# Create the file share
az storage share-rm create \
    --resource-group $RESOURCE_GROUP \
    --storage-account $STORAGE_ACCOUNT_NAME \
    --name $FILE_SHARE_NAME \
    --quota 1024 \
    --enabled-protocols SMB \
    --output table

مرحله 4:

دریافت اعتبار ذخیره سازی:

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

  • نام حساب ذخیره سازی – اگر از اسکریپت قبلی استفاده کرده اید، نام حساب ذخیره سازی در آن ذخیره می شود $STORAGE_ACCOUNT_NAME متغیر برای دیدن نام اکانت، تایپ کنید:
echo $STORAGE_ACCOUNT_NAME
  • نام را به اشتراک بگذارید– این مقدار قبلاً شناخته شده است (به عنوان تعریف شده است node-red-share در اسکریپت قبل). برای دیدن نام اشتراک فایل
echo $FILE_SHARE_NAME
  • کلید حساب ذخیره سازی – این مقدار را می توان با استفاده از دستور زیر پیدا کرد:
STORAGE_KEY=$(az storage account keys list --resource-group $RESOURCE_GROUP --account-name $STORAGE_ACCOUNT_NAME --query "[0].value" --output tsv)
echo $STORAGE_KEY

مرحله 5:

استقرار حجم محفظه و نصب – CLI:

برای نصب اشتراک‌گذاری فایل Azure به‌عنوان حجم در یک ظرف با استفاده از Azure CLI، هنگام ایجاد کانتینر با az container create، محل نصب اشتراک‌گذاری و حجم را مشخص کنید. اگر مراحل قبلی را دنبال کردید، می‌توانید اشتراکی را که قبلا ایجاد کرده‌اید با استفاده از دستور زیر برای ایجاد یک کانتینر Mount کنید:

#!/usr/bin/env bash

RESOURCE_GROUP=MyResourceGroup
STORAGE_ACCOUNT_NAME=storageaccount$RANDOM
LOCATION=eastus
FILE_SHARE_NAME=node-red-share
IMAGE=testingregistrydevops.azurecr.io/node-red:latest
ACI_NAME=node-red

# Function to handle errors
handle_error() {
    echo "Error: $1" >&2
    exit 1
}

# Azure Login
az login || handle_error "Failed to login to Azure"

# ACR Login
az acr login --name testingregistrydevops.azurecr.io || handle_error "Failed to login to ACR"

# Check if Resource Group exists
if az group show --name $RESOURCE_GROUP &>/dev/null; then
    echo "Resource group '$RESOURCE_GROUP' already exists."
else
    # Creating Resource Group
    az group create --name $RESOURCE_GROUP --location $LOCATION || handle_error "Failed to create resource group"
    echo "Resource group '$RESOURCE_GROUP' created."
fi

# Check if Storage Account exists
if az storage account show --name $STORAGE_ACCOUNT_NAME --resource-group $RESOURCE_GROUP &>/dev/null; then
    echo "Storage account '$STORAGE_ACCOUNT_NAME' already exists."
else
    # Creating Storage Account
    az storage account create \
        --resource-group $RESOURCE_GROUP \
        --name $STORAGE_ACCOUNT_NAME \
        --location $LOCATION \
        --sku Standard_LRS || handle_error "Failed to create storage account"
    echo "Storage account '$STORAGE_ACCOUNT_NAME' created."
fi

# Creating File Share
echo "Creating file share '$FILE_SHARE_NAME'..."
if az storage share-rm create \
    --resource-group $RESOURCE_GROUP \
    --storage-account $STORAGE_ACCOUNT_NAME \
    --name $FILE_SHARE_NAME \
    --quota 1024 \
    --enabled-protocols SMB \
    --output table &>/dev/null; then
    echo "File share '$FILE_SHARE_NAME' created successfully."
else
    handle_error "Failed to create file share '$FILE_SHARE_NAME'"
fi

# Fetch Storage Account Key
STORAGE_ACCOUNT_KEY=$(az storage account keys list --resource-group $RESOURCE_GROUP --account-name $STORAGE_ACCOUNT_NAME --query "[0].value" --output tsv)
echo $STORAGE_ACCOUNT_KEY

# Creating Azure Container Instance for Node-Red
if az container show --resource-group $RESOURCE_GROUP --name $ACI_NAME &>/dev/null; then
    echo "Azure Container Instance '$ACI_NAME' already exists."
else
    # Creating Azure Container Instance for Node-Red
    az container create \
        --resource-group $RESOURCE_GROUP \
        --name $ACI_NAME \
        --image $IMAGE \
        --dns-name-label unique-acidemo-label \
        --ports 1880 \
        --azure-file-volume-account-name $STORAGE_ACCOUNT_NAME \
        --azure-file-volume-account-key $STORAGE_ACCOUNT_KEY \
        --azure-file-volume-share-name $FILE_SHARE_NAME \
        --azure-file-volume-mount-path /aci/logs/ || handle_error "Failed to create container instance"

    echo "Azure Container Instance '$ACI_NAME' created."
fi


این --dns-name-label مقدار باید در منطقه Azure که در آن نمونه کانتینر را ایجاد می کنید منحصر به فرد باشد

با استفاده از Bash

شما می توانید دستورات فوق را ترکیب کرده و اسکریپت bash را برای ایجاد یک نمونه کانتینر Azure برای Node-RED اجرا کنید.
در اینجا اسکریپت bash برای Node-RED آمده است


پس از اجرای فایل، می توانید با استفاده از public IP یا Fully Qualified Domain Name (FQDN) نمونه کانتینر لاجوردی.

استقرار Node-Red در نمونه کانتینر Azure

علاوه بر این، می توانید بررسی کنید که آیا اشتراک فایل به درستی با استفاده از نمونه های کانتینر Azure (ACI) نصب شده است یا خیر.

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

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

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

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

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