البرنامج التعليمي: نشر تطبيق WordPress على AKS مع قاعدة بيانات Azure ل MySQL - خادم مرن

ينطبق على: قاعدة بيانات Azure ل MySQL - خادم مرن

في هذا البرنامج التعليمي، يمكنك نشر تطبيق WordPress قابل للتطوير مؤمن عبر HTTPS على نظام مجموعة Azure Kubernetes Service (AKS) مع خادم Azure Database for MySQL المرن باستخدام Azure CLI. خدمة Azur Kubernetes AKSهي خدمة مُدارة توفر لك سرعة نشر نظام المجموعات وإدارتها. خادم Azure Database for MySQL المرن هو خدمة قاعدة بيانات مدارة بالكامل مصممة لتوفير مزيد من التحكم الدقيق والمرونة على وظائف إدارة قاعدة البيانات وإعدادات التكوين.

إشعار

يفترض هذا البرنامج التعليمي فهما أساسيا لمفاهيم Kubernetes وWordPress وMySQL.

إذا لم يكن لديك اشتراك في Azure، فأنشئ حساب Azure مجاني قبل أن تبدأ. حاليا، باستخدام حساب Azure المجاني، يمكنك تجربة Azure Database for MySQL - Flexible Server مجانا لمدة 12 شهرا. لمزيد من المعلومات، راجع تجربة Azure Database for MySQL - Flexible Server مجانا.

المتطلبات الأساسية

قبل البدء، تأكد من تسجيل الدخول إلى Azure CLI وحدد اشتراكا لاستخدامه مع CLI. تأكد من تثبيت Helm.

إشعار

إذا كنت تقوم بتشغيل الأوامر في هذا البرنامج التعليمي محليا بدلا من Azure Cloud Shell، فقم بتشغيل الأوامر كمسؤول.

تعريف متغيرات البيئة

الخطوة الأولى في هذا البرنامج التعليمي هي تحديد متغيرات البيئة.

export SSL_EMAIL_ADDRESS="$(az account show --query user.name --output tsv)"
export NETWORK_PREFIX="$(($RANDOM % 253 + 1))"
export RANDOM_ID="$(openssl rand -hex 3)"
export MY_RESOURCE_GROUP_NAME="myWordPressAKSResourceGroup$RANDOM_ID"
export REGION="westeurope"
export MY_AKS_CLUSTER_NAME="myAKSCluster$RANDOM_ID"
export MY_PUBLIC_IP_NAME="myPublicIP$RANDOM_ID"
export MY_DNS_LABEL="mydnslabel$RANDOM_ID"
export MY_VNET_NAME="myVNet$RANDOM_ID"
export MY_VNET_PREFIX="10.$NETWORK_PREFIX.0.0/16"
export MY_SN_NAME="mySN$RANDOM_ID"
export MY_SN_PREFIX="10.$NETWORK_PREFIX.0.0/22"
export MY_MYSQL_DB_NAME="mydb$RANDOM_ID"
export MY_MYSQL_ADMIN_USERNAME="dbadmin$RANDOM_ID"
export MY_MYSQL_ADMIN_PW="$(openssl rand -base64 32)"
export MY_MYSQL_SN_NAME="myMySQLSN$RANDOM_ID"
export MY_MYSQL_HOSTNAME="$MY_MYSQL_DB_NAME.mysql.database.azure.com"
export MY_WP_ADMIN_PW="$(openssl rand -base64 32)"
export MY_WP_ADMIN_USER="wpcliadmin"
export FQDN="${MY_DNS_LABEL}.${REGION}.cloudapp.azure.com"

إنشاء مجموعة موارد

مجموعة الموارد عبارة عن حاوية منطقية يتم فيها توزيع موارد Azure وإدارتها. يجب وضع كافة الموارد في مجموعة موارد. ينشئ الأمر التالي مجموعة موارد مع المعلمات و $REGION المعرفة $MY_RESOURCE_GROUP_NAME مسبقا.

az group create \
    --name $MY_RESOURCE_GROUP_NAME \
    --location $REGION

النتائج:

{
  "id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/myWordPressAKSResourceGroupXXX",
  "location": "eastus",
  "managedBy": null,
  "name": "testResourceGroup",
  "properties": {
    "provisioningState": "Succeeded"
  },
  "tags": null,
  "type": "Microsoft.Resources/resourceGroups"
}

إشعار

موقع مجموعة الموارد هو المكان الذي يتم تخزين بيانات التعريف لمجموعة الموارد فيه. كما أنه المكان الذي يتم فيه تشغيل مواردك في Azure إذا لم تحدد منطقة أخرى أثناء إنشاء الموارد.

إنشاء شبكة ظاهرية وشبكة فرعية

الشبكة الظاهرية هي اللبنة الأساسية للشبكات الخاصة في Azure. تتيح شبكة Azure الظاهرية لموارد Azure مثل الأجهزة الظاهرية الاتصال بأمان مع بعضها البعض والإنترنت.

az network vnet create \
    --resource-group $MY_RESOURCE_GROUP_NAME \
    --location $REGION \
    --name $MY_VNET_NAME \
    --address-prefix $MY_VNET_PREFIX \
    --subnet-name $MY_SN_NAME \
    --subnet-prefixes $MY_SN_PREFIX

النتائج:

{
  "newVNet": {
    "addressSpace": {
      "addressPrefixes": [
        "10.210.0.0/16"
      ]
    },
    "enableDdosProtection": false,
    "id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/myWordPressAKSResourceGroupXXX/providers/Microsoft.Network/virtualNetworks/myVNetXXX",
    "location": "eastus",
    "name": "myVNet210",
    "provisioningState": "Succeeded",
    "resourceGroup": "myWordPressAKSResourceGroupXXX",
    "subnets": [
      {
        "addressPrefix": "10.210.0.0/22",
        "delegations": [],
        "id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/myWordPressAKSResourceGroupXXX/providers/Microsoft.Network/virtualNetworks/myVNetXXX/subnets/mySNXXX",
        "name": "mySN210",
        "privateEndpointNetworkPolicies": "Disabled",
        "privateLinkServiceNetworkPolicies": "Enabled",
        "provisioningState": "Succeeded",
        "resourceGroup": "myWordPressAKSResourceGroupXXX",
        "type": "Microsoft.Network/virtualNetworks/subnets"
      }
    ],
    "type": "Microsoft.Network/virtualNetworks",
    "virtualNetworkPeerings": []
  }
}

إنشاء مثيل خادم مرن لقاعدة بيانات Azure ل MySQL

خادم Azure Database for MySQL المرن عبارة عن خدمة مدارة يمكنك استخدامها لتشغيل خوادم MySQL المتوفرة بشكل كبير وإدارتها وتوسيع نطاقها في السحابة. إنشاء مثيل خادم مرن ل Azure Database for MySQL باستخدام الأمر az mysql flexible-server create . قد يحتوي الخادم على قواعد بيانات متعددة. ينشئ الأمر التالي خادما باستخدام الإعدادات الافتراضية للخدمة والقيم المتغيرة من السياق المحلي ل Azure CLI:

az mysql flexible-server create \
    --admin-password $MY_MYSQL_ADMIN_PW \
    --admin-user $MY_MYSQL_ADMIN_USERNAME \
    --auto-scale-iops Disabled \
    --high-availability Disabled \
    --iops 500 \
    --location $REGION \
    --name $MY_MYSQL_DB_NAME \
    --database-name wordpress \
    --resource-group $MY_RESOURCE_GROUP_NAME \
    --sku-name Standard_B2s \
    --storage-auto-grow Disabled \
    --storage-size 20 \
    --subnet $MY_MYSQL_SN_NAME \
    --private-dns-zone $MY_DNS_LABEL.private.mysql.database.azure.com \
    --tier Burstable \
    --version 8.0.21 \
    --vnet $MY_VNET_NAME \
    --yes -o JSON

النتائج:

{
  "databaseName": "wordpress",
  "host": "mydbxxx.mysql.database.azure.com",
  "id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/myWordPressAKSResourceGroupXXX/providers/Microsoft.DBforMySQL/flexibleServers/mydbXXX",
  "location": "East US",
  "resourceGroup": "myWordPressAKSResourceGroupXXX",
  "skuname": "Standard_B2s",
  "subnetId": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/myWordPressAKSResourceGroupXXX/providers/Microsoft.Network/virtualNetworks/myVNetXXX/subnets/myMySQLSNXXX",
  "username": "dbadminxxx",
  "version": "8.0.21"
}

يحتوي الخادم الذي تم إنشاؤه على السمات التالية:

  • يتم إنشاء قاعدة بيانات فارغة جديدة عند توفير الخادم لأول مرة.
  • تم تحديد اسم الخادم واسم المستخدم المسؤول وكلمة مرور المسؤول واسم مجموعة الموارد والموقع بالفعل في بيئة السياق المحلي ل shell السحابة وهي في نفس موقع مجموعة الموارد ومكونات Azure الأخرى.
  • الإعدادات الافتراضية للخدمة لتكوينات الخادم المتبقية هي طبقة الحوسبة (قابلة للاندفاع) وحجم الحساب/SKU (Standard_B2s) وفترة الاحتفاظ بالنسخ الاحتياطي (سبعة أيام) وإصدار MySQL (8.0.21).
  • أسلوب الاتصال الافتراضي هو الوصول الخاص (تكامل الشبكة الظاهرية) مع شبكة ظاهرية مرتبطة وشبكة فرعية تم إنشاؤها تلقائيا.

إشعار

لا يمكن تغيير طريقة الاتصال بعد إنشاء الخادم. على سبيل المثال، إذا قمت بتحديد Private access (VNet Integration) أثناء الإنشاء، فلا يمكنك التغيير إلى Public access (allowed IP addresses) بعد الإنشاء. نوصي بشدة بإنشاء خادم مع وصول خاص للوصول بأمان إلى الخادم الخاص بك باستخدام تكامل VNet. تعرف على المزيد حول الوصول الخاص في مقالة المفاهيم.

إذا كنت ترغب في تغيير أي إعدادات افتراضية، فراجع الوثائق المرجعية ل Azure CLI للحصول على القائمة الكاملة لمعلمات CLI القابلة للتكوين.

تحقق من قاعدة بيانات Azure ل MySQL - حالة الخادم المرن

يستغرق الأمر بضع دقائق لإنشاء قاعدة بيانات Azure ل MySQL - الخادم المرن والموارد الداعمة.

runtime="10 minute"; endtime=$(date -ud "$runtime" +%s); while [[ $(date -u +%s) -le $endtime ]]; do STATUS=$(az mysql flexible-server show -g $MY_RESOURCE_GROUP_NAME -n $MY_MYSQL_DB_NAME --query state -o tsv); echo $STATUS; if [ "$STATUS" = 'Ready' ]; then break; else sleep 10; fi; done

تكوين معلمات الخادم في قاعدة بيانات Azure ل MySQL - الخادم المرن

يمكنك إدارة Azure Database for MySQL - تكوين الخادم المرن باستخدام معلمات الخادم. يتم تكوين معلمات الخادم بالقيمة الافتراضية والمستحسنة عند إنشاء الخادم.

لإظهار تفاصيل حول معلمة معينة لخادم، قم بتشغيل الأمر az mysql flexible-server parameter show.

تعطيل قاعدة بيانات Azure ل MySQL - معلمة اتصال SSL للخادم المرن لتكامل WordPress

يمكنك أيضا تعديل قيمة معلمات خادم معينة لتحديث قيم التكوين الأساسية لمحرك خادم MySQL. لتحديث معلمة الخادم، استخدم الأمر az mysql flexible-server parameter set.

az mysql flexible-server parameter set \
    -g $MY_RESOURCE_GROUP_NAME \
    -s $MY_MYSQL_DB_NAME \
    -n require_secure_transport -v "OFF" -o JSON

النتائج:

{
  "allowedValues": "ON,OFF",
  "currentValue": "OFF",
  "dataType": "Enumeration",
  "defaultValue": "ON",
  "id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/myWordPressAKSResourceGroupXXX/providers/Microsoft.DBforMySQL/flexibleServers/mydbXXX/configurations/require_secure_transport",
  "isConfigPendingRestart": "False",
  "isDynamicConfig": "True",
  "isReadOnly": "False",
  "name": "require_secure_transport",
  "resourceGroup": "myWordPressAKSResourceGroupXXX",
  "source": "user-override",
  "systemData": null,
  "type": "Microsoft.DBforMySQL/flexibleServers/configurations",
  "value": "OFF"
}

إنشاء نظام مجموعة AKS

لإنشاء نظام مجموعة AKS مع Container Insights، استخدم الأمر az aks create مع معلمة مراقبة --enable-addons . ينشئ المثال التالي مجموعة تمكين منطقة التوفر ذات التحجيم التلقائي تسمى myAKSCluster:

يستغرق هذا الإجراء بضع دقائق.

export MY_SN_ID=$(az network vnet subnet list --resource-group $MY_RESOURCE_GROUP_NAME --vnet-name $MY_VNET_NAME --query "[0].id" --output tsv)

az aks create \
    --resource-group $MY_RESOURCE_GROUP_NAME \
    --name $MY_AKS_CLUSTER_NAME \
    --auto-upgrade-channel stable \
    --enable-cluster-autoscaler \
    --enable-addons monitoring \
    --location $REGION \
    --node-count 1 \
    --min-count 1 \
    --max-count 3 \
    --network-plugin azure \
    --network-policy azure \
    --vnet-subnet-id $MY_SN_ID \
    --no-ssh-key \
    --node-vm-size Standard_DS2_v2 \
    --service-cidr 10.255.0.0/24 \
    --dns-service-ip 10.255.0.10 \
    --zones 1 2 3

إشعار

عند إنشاء مجموعة AKS، يتم إنشاء مجموعة موارد ثانية تلقائيا لتخزين موارد AKS. لمزيد من المعلومات، يمكنك الاطلاع على إجابة سؤال لماذا يتم إنشاء مجموعتي موارد باستخدام AKS ؟

الاتصال بنظام المجموعة

لإدارة نظام مجموعة Kubernetes، استخدم سطر أوامر العميل Kubernetes، kubectl. kubectl والذي سيكون مثبتًا بالفعل في حال كنت تستخدم Azure Cloud Shell. يتم تثبيت kubectl المثال التالي محليا باستخدام الأمر az aks install-cli .

   if ! [ -x "$(command -v kubectl)" ]; then az aks install-cli; fi

بعد ذلك، قم بتكوين kubectl للاتصال بمجموعة Kubernetes باستخدام الأمر az aks get-credentials . هذا الأمر يقوم بتحميل بيانات الاعتماد وضبط Kubernetes CLI لاستخدامها. يستخدم ~/.kube/configالأمر ، الموقع الافتراضي لملف تكوين Kubernetes. يمكنك تحديد موقع مختلف لملف تكوين Kubernetes باستخدام وسيطة --file .

تحذير

سيقوم هذا الأمر بالكتابة فوق أي بيانات اعتماد موجودة بنفس الإدخال.

az aks get-credentials --resource-group $MY_RESOURCE_GROUP_NAME --name $MY_AKS_CLUSTER_NAME --overwrite-existing

للتحقق من الاتصال بالمجموعة الخاصة بك، استخدم الأمر kubectl get لإرجاع قائمة العُقد العنقودية.

kubectl get nodes

تثبيت وحدة تحكم دخول NGINX

يمكنك تكوين وحدة تحكم الدخول باستخدام عنوان IP عام ثابت. يبقى عنوان IP العام الثابت إذا قمت بحذف وحدة تحكم الدخول. لا يبقى عنوان IP إذا قمت بحذف نظام مجموعة AKS. عند ترقية وحدة تحكم الدخول الخاصة بك، يجب تمرير معلمة إلى إصدار Helm للتأكد من أن خدمة وحدة التحكم في الدخول على دراية بموازن التحميل الذي سيتم تخصيصه لها. لكي تعمل شهادات HTTPS بشكل صحيح، استخدم تسمية DNS لتكوين اسم مجال مؤهل بالكامل (FQDN) لعنوان IP لوحدة تحكم الدخول. يجب أن يتبع FQDN هذا النموذج: $MY_DNS_LABEL. AZURE_REGION_NAME.cloudapp.azure.com.

export MY_STATIC_IP=$(az network public-ip create --resource-group MC_${MY_RESOURCE_GROUP_NAME}_${MY_AKS_CLUSTER_NAME}_${REGION} --location ${REGION} --name ${MY_PUBLIC_IP_NAME} --dns-name ${MY_DNS_LABEL} --sku Standard --allocation-method static --version IPv4 --zone 1 2 3 --query publicIp.ipAddress -o tsv)

بعد ذلك، يمكنك إضافة مستودع ingress-nginx Helm، وتحديث ذاكرة التخزين المؤقت لمستودع Helm Chart المحلي، وتثبيت ingress-nginx addon عبر Helm. يمكنك تعيين تسمية DNS مع --set controller.service.annotations." service.beta.kubernetes.io/azure-dns-label-name"="<DNS_LABEL>" المعلمة إما عند نشر وحدة تحكم الدخول لأول مرة أو في وقت لاحق. في هذا المثال، يمكنك تحديد عنوان IP العام الخاص بك الذي قمت بإنشائه في الخطوة السابقة باستخدام المعلمة --set controller.service.loadBalancerIP="<STATIC_IP>".

    helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
    helm repo update
    helm upgrade --install --cleanup-on-fail --atomic ingress-nginx ingress-nginx/ingress-nginx \
        --namespace ingress-nginx \
        --create-namespace \
        --set controller.service.annotations."service\.beta\.kubernetes\.io/azure-dns-label-name"=$MY_DNS_LABEL \
        --set controller.service.loadBalancerIP=$MY_STATIC_IP \
        --set controller.service.annotations."service\.beta\.kubernetes\.io/azure-load-balancer-health-probe-request-path"=/healthz \
        --wait --timeout 10m0s

إضافة إنهاء HTTPS إلى المجال المخصص

في هذه المرحلة من البرنامج التعليمي، لديك تطبيق ويب AKS مع NGINX كوحدة تحكم دخول ومجال مخصص يمكنك استخدامه للوصول إلى التطبيق الخاص بك. الخطوة التالية هي إضافة شهادة SSL إلى المجال بحيث يمكن للمستخدمين الوصول إلى التطبيق الخاص بك بأمان عبر https.

إعداد مدير الشهادات

لإضافة HTTPS، سنستخدم Cert Manager. Cert Manager هو أداة مصدر مفتوح للحصول على شهادات SSL وإدارتها لنشر Kubernetes. يحصل Cert Manager على شهادات من المصدرين العموميين الشائعين والمصدرين الخاصين، ويضمن أن الشهادات صالحة ومحدثة، ويحاول تجديد الشهادات في وقت تم تكوينه قبل انتهاء صلاحيتها.

  1. لتثبيت cert-manager، يجب علينا أولا إنشاء مساحة اسم لتشغيلها فيها. يقوم هذا البرنامج التعليمي بتثبيت cert-manager في مساحة اسم cert-manager. يمكنك تشغيل cert-manager في مساحة اسم مختلفة، ولكن يجب إجراء تعديلات على بيانات التوزيع.

    kubectl create namespace cert-manager
    
  2. يمكننا الآن تثبيت cert-manager. يتم تضمين جميع الموارد في ملف بيان YAML واحد. قم بتثبيت ملف البيان باستخدام الأمر التالي:

    kubectl apply -f https://github.com/jetstack/cert-manager/releases/download/v1.7.0/cert-manager.crds.yaml
    
  3. أضف التسمية certmanager.k8s.io/disable-validation: "true" إلى مساحة اسم مدير الشهادة عن طريق تشغيل ما يلي. يسمح هذا بإنشاء موارد النظام التي يتطلبها cert-manager ل bootstrap TLS في مساحة الاسم الخاصة به.

    kubectl label namespace cert-manager certmanager.k8s.io/disable-validation=true
    

الحصول على شهادة عبر مخططات Helm

Helm هي أداة توزيع Kubernetes لأتمتة إنشاء التطبيقات والخدمات وتغليفها وتكوينها ونشرها إلى مجموعات Kubernetes.

يوفر مدير الشهادات مخططات Helm كطريقة من الدرجة الأولى للتثبيت على Kubernetes.

  1. أضف مستودع Jetstack Helm. هذا المستودع هو المصدر الوحيد المدعوم لمخططات إدارة الشهادات. هناك مرايا ونسخ أخرى عبر الإنترنت، ولكن تلك غير رسمية ويمكن أن تشكل خطرا أمنيا.

    helm repo add jetstack https://charts.jetstack.io
    
  2. تحديث ذاكرة التخزين المؤقت لمستودع Helm Chart المحلي.

    helm repo update
    
  3. تثبيت ملحق Cert-Manager عبر Helm.

    helm upgrade --install --cleanup-on-fail --atomic \
        --namespace cert-manager \
        --version v1.7.0 \
        --wait --timeout 10m0s \
        cert-manager jetstack/cert-manager
    
  4. تطبيق ملف YAML لمصدر الشهادة. ClusterIssuers هي موارد Kubernetes التي تمثل المراجع المصدقة (CAs) التي يمكنها إنشاء شهادات موقعة عن طريق احترام طلبات توقيع الشهادة. تتطلب جميع شهادات مدير الشهادات مصدر مرجعي في حالة استعداد لمحاولة تنفيذ الطلب. يمكنك العثور على المصدر الذي نحن عليه في cluster-issuer-prod.yml file.

    cluster_issuer_variables=$(<cluster-issuer-prod.yaml)
    echo "${cluster_issuer_variables//\$SSL_EMAIL_ADDRESS/$SSL_EMAIL_ADDRESS}" | kubectl apply -f -
    

إنشاء فئة تخزين مخصصة

تناسب فئات التخزين الافتراضية السيناريوهات الأكثر شيوعا، ولكن ليس كلها. بالنسبة لبعض الحالات، قد ترغب في تخصيص فئة التخزين الخاصة بك مع المعلمات الخاصة بك. على سبيل المثال، استخدم البيان التالي لتكوين mountOptions لمشاركة الملف. القيمة الافتراضية ل fileMode وdirMode هي 0755 لمشاركات الملفات المحملة في Kubernetes. يمكنك تحديد خيارات التحميل المختلفة على كائن فئة التخزين.

kubectl apply -f wp-azurefiles-sc.yaml

نشر وورد لنظام مجموعة AKS

في هذا البرنامج التعليمي، نستخدم مخطط Helm موجود ل WordPress تم إنشاؤه بواسطة Bitnami. يستخدم مخطط Bitnami Helm قاعدة بيانات MariaDB محلية كقاعدة بيانات، لذلك نحتاج إلى تجاوز هذه القيم لاستخدام التطبيق مع قاعدة بيانات Azure ل MySQL. يمكنك تجاوز القيم والإعدادات المخصصة للملف helm-wp-aks-values.yaml .

  1. أضف مستودع Wordpress Bitnami Helm.

    helm repo add bitnami https://charts.bitnami.com/bitnami
    
  2. تحديث ذاكرة التخزين المؤقت لمستودع مخطط Helm المحلي.

    helm repo update
    
  3. تثبيت حمل عمل Wordpress عبر Helm.

    helm upgrade --install --cleanup-on-fail \
        --wait --timeout 10m0s \
        --namespace wordpress \
        --create-namespace \
        --set wordpressUsername="$MY_WP_ADMIN_USER" \
        --set wordpressPassword="$MY_WP_ADMIN_PW" \
        --set wordpressEmail="$SSL_EMAIL_ADDRESS" \
        --set externalDatabase.host="$MY_MYSQL_HOSTNAME" \
        --set externalDatabase.user="$MY_MYSQL_ADMIN_USERNAME" \
        --set externalDatabase.password="$MY_MYSQL_ADMIN_PW" \
        --set ingress.hostname="$FQDN" \
        --values helm-wp-aks-values.yaml \
        wordpress bitnami/wordpress
    

النتائج:

Release "wordpress" does not exist. Installing it now.
NAME: wordpress
LAST DEPLOYED: Tue Oct 24 16:19:35 2023
NAMESPACE: wordpress
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
CHART NAME: wordpress
CHART VERSION: 18.0.8
APP VERSION: 6.3.2

** Please be patient while the chart is being deployed **

Your WordPress site can be accessed through the following DNS name from within your cluster:

    wordpress.wordpress.svc.cluster.local (port 80)

To access your WordPress site from outside the cluster follow the steps below:

1. Get the WordPress URL and associate WordPress hostname to your cluster external IP:

   export CLUSTER_IP=$(minikube ip) # On Minikube. Use: `kubectl cluster-info` on others K8s clusters
   echo "WordPress URL: https://mydnslabelxxx.eastus.cloudapp.azure.com/"
   echo "$CLUSTER_IP  mydnslabelxxx.eastus.cloudapp.azure.com" | sudo tee -a /etc/hosts
    export CLUSTER_IP=$(minikube ip) # On Minikube. Use: `kubectl cluster-info` on others K8s clusters
    echo "WordPress URL: https://mydnslabelxxx.eastus.cloudapp.azure.com/"
    echo "$CLUSTER_IP  mydnslabelxxx.eastus.cloudapp.azure.com" | sudo tee -a /etc/hosts

2. Open a browser and access WordPress using the obtained URL.

3. Login with the following credentials below to see your blog:

    echo Username: wpcliadmin
    echo Password: $(kubectl get secret --namespace wordpress wordpress -o jsonpath="{.data.wordpress-password}" | base64 -d)

تصفح توزيع AKS المؤمن عبر HTTPS

قم بتشغيل الأمر التالي للحصول على نقطة نهاية HTTPS للتطبيق الخاص بك:

إشعار

غالبا ما يستغرق نشر شهادة SSL من دقيقتين إلى 3 دقائق وحوالي 5 دقائق لجعل جميع النسخ المتماثلة ل WordPress POD جاهزة ويمكن الوصول إلى الموقع بالكامل عبر https.

runtime="5 minute"
endtime=$(date -ud "$runtime" +%s)
while [[ $(date -u +%s) -le $endtime ]]; do
    export DEPLOYMENT_REPLICAS=$(kubectl -n wordpress get deployment wordpress -o=jsonpath='{.status.availableReplicas}');
    echo Current number of replicas "$DEPLOYMENT_REPLICAS/3";
    if [ "$DEPLOYMENT_REPLICAS" = "3" ]; then
        break;
    else
        sleep 10;
    fi;
done

تحقق من تسليم محتوى WordPress بشكل صحيح باستخدام الأمر التالي:

if curl -I -s -f https://$FQDN > /dev/null ; then 
    curl -L -s -f https://$FQDN 2> /dev/null | head -n 9
else 
    exit 1
fi;

النتائج:

{
<!DOCTYPE html>
<html lang="en-US">
<head>
        <meta charset="UTF-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name='robots' content='max-image-preview:large' />
<title>WordPress on AKS</title>
<link rel="alternate" type="application/rss+xml" title="WordPress on AKS &raquo; Feed" href="https://mydnslabelxxx.eastus.cloudapp.azure.com/feed/" />
<link rel="alternate" type="application/rss+xml" title="WordPress on AKS &raquo; Comments Feed" href="https://mydnslabelxxx.eastus.cloudapp.azure.com/comments/feed/" />
}

قم بزيارة موقع الويب من خلال عنوان URL التالي:

echo "You can now visit your web server at https://$FQDN"

تنظيف الموارد (اختياري)

لتجنب رسوم Azure، يجب تنظيف الموارد غير الضرورية. عندما لم تعد بحاجة إلى نظام المجموعة، استخدم الأمر az group delete لإزالة مجموعة الموارد وخدمة الحاوية وجميع الموارد ذات الصلة.

إشعار

عند حذف نظام المجموعة، لا تتم إزالة أساس خدمة Microsoft Entra المستخدم بواسطة نظام مجموعة AKS. للحصول على خطوات حول كيفية إزالة أساس الخدمة، راجع الاعتبارات الأساسية لخدمة AKS وحذفها. في حال استخدمت هوية مُدارة، فستتم إدارة الهوية بواسطة النظام الأساسي ولا تتطلب الإزالة.

الخطوات التالية