Use Azure tags in خدمة Azure Kubernetes ‏(AKS)

مع خدمة Azure Kubernetes ‏(AKS)، يمكنك تعيين Azure العلامات على مجموعة AKS ومواردها ذات الصلة باستخدام Azure Resource Manager و Azure CLI. يمكنك أيضا استخدام كوبيرنيتس (Kubernetes) لتعيين علامات Azure لبعض الموارد. تعد Azure العلامات موردا مفيدا لتتبع العمليات التجارية، مثل chargeback.

تشرح هذه المقالة كيفية تعيين علامات Azure لمجموعات AKS والموارد ذات الصلة.

قبل البدء

راجع المعلومات التالية قبل البدء:

  • تنطبق العلامات التي تم تعيينها على نظام مجموعة AKS على جميع الموارد المتعلقة بالمجموعة، ولكن ليس تجمعات العقد. هذه العملية تستبدل قيم المفاتيح الموجودة.
  • العلامات التي تم تعيينها على تجمع عقدة فحسب تنطبق على الموارد المتعلقة بتجمع العقدة هذا. هذه العملية تستبدل قيم المفاتيح الموجودة. الموارد خارج تجمع العقدة هذا لا تتأثر، بما في ذلك الموارد لبقية المجموعة وتجمعات العقد الأخرى.
  • عناوين IP العامة والملفات والأقراص يمكن أن تحتوي على علامات تم تعيينها بواسطة Kubernetes من خلال بيان Kubernetes. بالنسبة للأقراص والملفات التي يتم إنشاؤها عبر StorageClass، يتم تطبيق معامل tags على مورد Azure الأساسي عندما يقوم AKS بتوفير الحجم. تحديث الإصدار StorageClass اللاحق يؤثر فقط على الأحجام التي تم توفيرها حديثا. عند إزالة عناوين IP أو الملفات أو الأقراص العامة من خلال Kubernetes، تتم إزالة أي علامات تم تعيينها بواسطة Kubernetes. لا تتأثر العلامات الموجودة على تلك الموارد التي لا يتتبعها Kubernetes.

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

  • إصدار Azure CLI 2.0.59 أو أحدث. للعثور على الإصدار الخاص بك، قم بتشغيل az --version. إذا كنت بحاجة لتثبيته أو تحديث نسختك، راجع تثبيت Azure CLI.
  • Kubernetes الإصدار 1.20 أو أحدث.

القيود

  • وسوم Azure تحتوي على مفاتيح غير حساسة لعلامات الحروف للعمليات، مثل عند استرجاع علامة عن طريق البحث عن المفتاح. في هذه الحالة، يتم تحديث علامة بالمفتاح المحدد أو استردادها بغض النظر عن الغلاف. قيم العلامة حساسة لحالة الأحرف.
  • في AKS، إذا تم تعيين علامات متعددة مع مفاتيح متطابقة لكن بشكل كتابة مختلف، العلامات المستخدمة بالترتيب الأبجدي. على سبيل المثال، {"Key1": "val1", "kEy1": "val2", "key1": "val3"} ينتج Key1 ويتم val1 تعيينه.
  • بالنسبة للموارد المشتركة، لا يمكن للعلامات تحديد الانقسام في استخدام الموارد بمفردها.
  • بالنسبة للأقراص والملفات التي تدعم وحدة تخزين مستمرة من Kubernetes، PersistentVolume تكون المواصفات ثابتة بعد الإنشاء. تعديل أو تحديث ملف موجود PersistentVolume لتغيير الوسوم أو سمات الحجم الأخرى يفشل في ذلك.
  • تحديث العلامات مباشرة على مورد Azure الأساسي لا يزامن قيم الوسوم مع Kubernetes PersistentVolume YAML أو البيانات الوصفية.

وسوم Azure وعناقيد AKS

عند إنشاء أو تحديث عنقود AKS باستخدام معامل --tags، يتم تعيين العلامات Azure التالية التي حددتها:

  • مجموعة AKS نفسها والموارد ذات الصلة:
    • جدول مسار
    • عنوان IP عام
    • موازن التحميل
    • مجموعة أمان الشبكة
    • الشبكة الظاهرية
    • kubelet msi المدار بواسطة AKS
    • الوظيفة الإضافية التي تديرها AKS msi
    • Private DNS المنطقة المرتبطة ب التجمع الخاص
    • نقطة النهاية الخاصة المقترنة بالمجموعة الخاصة
  • مجموعة موارد العقدة

إشعار

Azure Private DNS يدعم فقط 15 علامة. لمزيد من المعلومات، راجع موارد العلامة.

إنشاء علامات أو تحديثها على نظام مجموعة AKS

قم بإنشاء مجموعة AKS جديدة

هام

إذا كنت تستخدم موارد موجودة عند إنشاء مجموعة جديدة، مثل عنوان IP أو جدول التوجيه، فإن az aks create الأمر يحل محل مجموعة العلامات. إذا قمت بحذف نظام المجموعة لاحقا، فستتم إزالة أي علامات تم تعيينها بواسطة نظام المجموعة.

  1. أنشئ مجموعة وخصص Azure وسوم باستخدام أمر az aks create مع معامل --tags.

    إشعار

    لتعيين العلامات على تجمع العقدة الأولي، ومجموعة مقياس الجهاز الظاهري، وكل مثيل لمجموعة مقياس الجهاز الظاهري المقترن بتجمع العقدة الأولي، يمكنك أيضا تعيين المعلمة --nodepool-tags .

    az aks create \
        --resource-group myResourceGroup \
        --name myAKSCluster \
        --tags dept=IT costcenter=9999 \
        --generate-ssh-keys
    
  2. تحقق من تطبيق العلامات على نظام المجموعة والموارد ذات الصلة باستخدام az aks show الأمر .

    az aks show --resource-group myResourceGroup --name myAKSCluster --query '[tags]'
    

    يظهر إخراج المثال التالي العلامات المطبقة على نظام المجموعة:

    {
      "clusterTags": {
        "dept": "IT",
        "costcenter": "9999"
      }
    }
    

تحديث نظام مجموعة AKS موجود

هام

يؤدي تعيين العلامات على نظام مجموعة باستخدام az aks update الأمر إلى الكتابة فوق مجموعة العلامات. على سبيل المثال، إذا كانت مجموعتك تحتوي على العلامات dept=IT و costcenter=9999، وكنت تستخدم az aks update مع فريق العلامات =alpha و costcenter=1234، فإن القائمة الجديدة للعلامات ستكون team=alpha و costcenter=1234.

  1. تحديث العلامات على نظام مجموعة موجود باستخدام az aks update الأمر مع المعلمة --tags .

    az aks update \
        --resource-group myResourceGroup \
        --name myAKSCluster \
        --tags team=alpha costcenter=1234
    
  2. تحقق من تطبيق العلامات على نظام المجموعة والموارد ذات الصلة باستخدام az aks show الأمر .

    az aks show --resource-group myResourceGroup --name myAKSCluster --query '[tags]'
    

    يظهر إخراج المثال التالي العلامات المطبقة على نظام المجموعة:

    {
      "clusterTags": {
        "team": "alpha",
        "costcenter": "1234"
      }
    }
    

إضافة علامات إلى تجمعات العقد

يمكنك تطبيق وسم Azure على مجموعة عقد جديدة أو موجودة في عنقود AKS الخاص بك. يتم تطبيق العلامات المطبقة على تجمع عقدة على كل عقدة داخل تجمع العقدة ويتم استمرارها من خلال الترقيات. كما يتم تطبيق العلامات على العقد الجديدة المضافة إلى تجمع عقدة أثناء عمليات توسعة أفقية. يمكن أن تساعد إضافة علامة في مهام مثل تتبع النهج أو تقدير التكلفة.

عند إنشاء تجمع عقدة أو تحديثه باستخدام المعلمة --tags ، يتم تعيين العلامات التي تحددها إلى الموارد التالية:

  • تجمع العقدة.
  • مجموعة مقياس الجهاز الظاهري وكل مثيل لمجموعة مقياس الجهاز الظاهري المرتبط بتجمع العقدة.

إنشاء تجمع عقدة جديد

  1. أنشئ تجمع عقد مع وسم Azure باستخدام أمر az aks nodepool add مع معامل --tags.

    az aks nodepool add \
        --resource-group myResourceGroup \
        --cluster-name myAKSCluster \
        --name tagnodepool \
        --node-count 1 \
        --tags abtest=a costcenter=5555 \
        --no-wait
    
  2. تحقق من تطبيق العلامات على تجمع العقدة az aks show باستخدام الأمر .

    az aks show --resource-group myResourceGroup --name myAKSCluster --query 'agentPoolProfiles[].{nodepoolName:name,tags:tags}'
    

    يظهر إخراج المثال التالي العلامات المطبقة على تجمع العقدة:

    [
      {
        "nodepoolName": "nodepool1",
        "tags": null
      },
      {
        "nodepoolName": "tagnodepool",
        "tags": {
          "abtest": "a",
          "costcenter": "5555"
        }
      }
    ]
    

تحديث تجمع عقدة موجود

هام

يؤدي تعيين العلامات على تجمع عقدة az aks nodepool update باستخدام الأمر إلى الكتابة فوق مجموعة العلامات. على سبيل المثال، إذا كان تجمع العقدة يحتوي على العلامات abtest=a وcostcenter=5555، وتستخدم az aks nodepool update مع العلامات appversion=0.0.2 وcostcenter=4444، فإن القائمة الجديدة للعلامات ستكون appversion=0.0.2 وcostcenter=4444.

  1. قم بتحديث مجموعة العقد بعلامة Azure باستخدام أمر az aks nodepool update.

    az aks nodepool update \
        --resource-group myResourceGroup \
        --cluster-name myAKSCluster \
        --name tagnodepool \
        --tags appversion=0.0.2 costcenter=4444 \
        --no-wait
    
  2. تحقق من تطبيق العلامات على تجمع العقدة باستخدام az aks show الأمر .

    az aks show --resource-group myResourceGroup --name myAKSCluster --query 'agentPoolProfiles[].{nodepoolName:name,tags:tags}'
    

    يظهر إخراج المثال التالي العلامات المطبقة على تجمع العقدة:

    [
      {
        "nodepoolName": "nodepool1",
        "tags": null
      },
      {
        "nodepoolName": "tagnodepool",
        "tags": {
          "appversion": "0.0.2",
          "costcenter": "4444"
        }
      }
    ]
    

إضافة علامات باستخدام Kubernetes

هام

يؤدي تعيين العلامات على الملفات والأقراص وIPs العامة باستخدام Kubernetes إلى تحديث مجموعة العلامات. على سبيل المثال، إذا كان القرص يحتوي على العلامات dept=IT وcostcenter=5555، وكنت تستخدم Kubernetes لتعيين فريق العلامات =beta وcostcenter=3333، ستكون قائمة العلامات الجديدة dept=IT وteam=beta وcostcenter=3333.

تحتفظ أي تحديثات تجريها على العلامات من خلال Kubernetes بالقيمة التي تم تعيينها من خلال Kubernetes. على سبيل المثال، إذا كان القرص يحتوي على العلامات dept=IT وcostcenter=5555 التي تم تعيينها بواسطة Kubernetes، وتستخدم المدخل لتعيين فريق العلامات team=beta وcostcenter=3333، ستكون قائمة العلامات الجديدة dept=IT وteam=beta وcostcenter=5555. إذا أزلت بعد ذلك القرص من خلال Kubernetes، فسيكون لدى القرص فريق العلامة =beta.

بالنسبة للأقراص والملفات التي تدعم وحدة تخزين دائمة، tags تكون القيمة في a StorageClass إعداد وقت التجهيز. بعد إنشاء الحجم، يصبح التخصص PersistentVolume غير قابل للتغيير، لذا فإن تعديل أو تحديث ال PV لتغيير العلامات أو سمات الحجم الأخرى يفشل. التغييرات التي تجريها مباشرة على مورد Azure الأساسي لا تزامن مع ملف YAML أو البيانات الوصفية في PV.

يمكنك تطبيق علامات Azure على عناوين IP العامة والأقراص والملفات باستخدام ملف Kubernetes.

  • بالنسبة إلى عناوين IP العامة، استخدم service.beta.kubernetes.io/azure-pip-tags ضمن التعليقات التوضيحية. على سبيل المثال:

    apiVersion: v1
    kind: Service
    metadata:
      annotations:
        service.beta.kubernetes.io/azure-pip-tags: costcenter=3333,team=beta
    spec:
      ...
    
  • بالنسبة للملفات والأقراص، استخدم العلامات ضمن المعلمات. على سبيل المثال:

    ---
    apiVersion: storage.k8s.io/v1
    ...
    parameters:
      ...
      tags: costcenter=3333,team=beta
    ...
    

تحديث العلامات للأحجام الدائمة الموجودة

لتحديث العلامات لحجم دائم مدعوم بالقرص أو مدعوم بالملفات، قم بتحديث العلامات على المورد Azure الأساسي بدلا من تحرير PersistentVolume. هذه العملية لا تقطع التركيبات أو الكبسولات أو الوصول إلى البيانات الموجودة.

  • بالنسبة للوحدات الدائمة المدعومة ب Azure Disk، قم بتحديث القرص المدار مباشرة. على سبيل المثال:

    az disk update \
        --name myManagedDisk \
        --resource-group MC_myResourceGroup_myAKSCluster_eastus \
        --set tags.abc=ABC123
    
  • بالنسبة للأحجام الدائمة المدعومة من ملفات Azure، قم بتحديث حساب التخزين مباشرة. على سبيل المثال:

    az storage account update \
        --name mystorageaccount \
        --resource-group MC_myResourceGroup_myAKSCluster_eastus \
        --set tags.abc=ABC123
    

التغييرات تؤثر StorageClass فقط على الأحجام التي تم توفيرها حديثا ولا تحدث الأحجام الدائمة الموجودة.

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

تعرف على المزيد حول استخدام التسميات في نظام مجموعة AKS.