مشاركة عبر


موفر Azure Key Vault لبرنامج تشغيل CSI لمخزن الأسرار لتكوين Azure Kubernetes Service (AKS) وخيارات استكشاف الأخطاء وإصلاحها

اتبع الخطوات الواردة في استخدام موفر Azure Key Vault لبرنامج تشغيل Secrets Store CSI في نظام مجموعة AKS وتوفير هوية للوصول إلى موفر Azure Key Vault لبرنامج تشغيل Secrets Store CSI في AKS. بمجرد إكمال هذه الخطوات، يمكنك تطبيق تكوينات إضافية أو إجراء استكشاف الأخطاء وإصلاحها.

خيارات الإعداد

تمكين التدوير التلقائي وتعطيله

بمجرد تمكين التدوير التلقائي لموفر أسرار Azure Key Vault، فإنه يحدث تحميل الجراب وسر Kubernetes المحدد في secretObjects مجال SecretProviderClass. يقوم بذلك عن طريق الاستقصاء عن التغييرات بشكل دوري، استنادا إلى الفاصل الزمني لاستطلاع التدوير الذي حددته. الفاصل الزمني الافتراضي لاستطلاع الاستدارة دقيقتان.

عند تحديث بيانات سرية في مخزن بيانات سرية خارجية بعد النشر الأولي للجراب، يتم تحديث Kubernetes Secret وpod mount بشكل دوري اعتمادا على كيفية استهلاك التطبيق للبيانات السرية.

  • تحميل Kubernetes Secret كحجم: استخدم ميزات البيانات السرية ل K8s للتناوب التلقائي والمزامنة لبرنامج تشغيل CSI لمخزن الأسرار. يحتاج التطبيق إلى مراقبة التغييرات من وحدة تخزين Kubernetes Secret المحملة. عندما يقوم برنامج تشغيل CSI بتحديث Kubernetes Secret، يتم تحديث محتويات وحدة التخزين المقابلة تلقائيا أيضا.

  • يقرأ التطبيق البيانات من نظام ملفات الحاوية: استخدم ميزة التدوير لبرنامج تشغيل CSI لمخزن الأسرار. يحتاج التطبيق إلى مراقبة تغيير الملف من وحدة التخزين التي تم تحميلها بواسطة برنامج تشغيل CSI.

  • استخدم بيانات Kubernetes السرية لمتغير بيئة: أعد تشغيل pod للحصول على أحدث بيانات سرية كمتغير بيئة. استخدم أداة مثل Reloader لمشاهدة التغييرات على Kubernetes Secret المتزامن وإجراء ترقيات متجددة على pods.

تمكين التدوير التلقائي على نظام مجموعة AKS جديد

  • تمكين التدوير التلقائي للبيانات السرية على مجموعة جديدة باستخدام az aks create الأمر وتمكين enable-secret-rotation الوظيفة الإضافية.

    az aks create \
        --name myAKSCluster2 \
        --resource-group myResourceGroup \
        --enable-addons azure-keyvault-secrets-provider \
        --enable-secret-rotation \
        --generate-ssh-keys
    

تمكين التدوير التلقائي على نظام مجموعة AKS موجود

  • تحديث نظام مجموعة موجود لتمكين التدوير التلقائي للبيانات السرية باستخدام az aks addon update الأمر والمعلمة enable-secret-rotation .

    az aks addon update --resource-group myResourceGroup --name myAKSCluster2 --addon azure-keyvault-secrets-provider --enable-secret-rotation
    

تحديد فاصل زمني مخصص للتناوب

  • حدد فاصلا زمنيا مخصصا للتناوب باستخدام az aks addon update الأمر مع المعلمة rotation-poll-interval .

    az aks addon update --resource-group myResourceGroup --name myAKSCluster2 --addon azure-keyvault-secrets-provider --enable-secret-rotation --rotation-poll-interval 5m
    

تعطيل التدوير التلقائي

لتعطيل التدوير التلقائي، تحتاج أولا إلى تعطيل الوظيفة الإضافية. بعد ذلك، يمكنك إعادة تمكين الوظيفة الإضافية بدون المعلمة enable-secret-rotation .

  1. تعطيل الوظيفة الإضافية لموفر البيانات السرية باستخدام az aks addon disable الأمر .

    az aks addon disable --resource-group myResourceGroup --name myAKSCluster2 --addon azure-keyvault-secrets-provider
    
  2. إعادة تمكين الوظيفة الإضافية لموفر البيانات السرية دون المعلمة enable-secret-rotation az aks addon enable باستخدام الأمر .

    az aks addon enable --resource-group myResourceGroup --name myAKSCluster2 --addon azure-keyvault-secrets-provider
    

إذا كنت تستخدم SecretProviderClassبالفعل ، يمكنك تحديث الوظيفة الإضافية دون تعطيلها أولا باستخدام az aks addon enable دون تحديد المعلمة enable-secret-rotation .

مزامنة المحتوى المثبت مع سر Kubernetes

إشعار

أمثلة YAML في هذا القسم غير مكتملة. تحتاج إلى تعديلها لدعم الطريقة التي اخترتها للوصول إلى هوية key vault الخاصة بك. للحصول على التفاصيل، راجع توفير هوية للوصول إلى موفر Azure Key Vault لبرنامج تشغيل CSI لمخزن الأسرار.

قد ترغب في إنشاء سر Kubernetes لعكس محتوى البيانات السرية المثبتة. تتم مزامنة أسرارك بعد بدء تشغيل جراب لتحميلها. عند حذف pods التي تستهلك الأسرار، يتم أيضا حذف سر Kubernetes الخاص بك.

  • مزامنة المحتوى الذي تم تحميله مع سر Kubernetes باستخدام secretObjects الحقل عند إنشاء SecretProviderClass لتعريف الحالة المطلوبة لسر Kubernetes، كما هو موضح في المثال التالي YAML.

    apiVersion: secrets-store.csi.x-k8s.io/v1
    kind: SecretProviderClass
    metadata:
      name: azure-sync
    spec:
      provider: azure
      secretObjects:                              # [OPTIONAL] SecretObjects defines the desired state of synced Kubernetes secret objects
      - data:
        - key: username                           # data field to populate
          objectName: foo1                        # name of the mounted content to sync; this could be the object name or the object alias
        secretName: foosecret                     # name of the Kubernetes secret object
        type: Opaque                              # type of Kubernetes secret object (for example, Opaque, kubernetes.io/tls)
    

    إشعار

    تأكد من أن objectName في secretObjects الحقل يطابق اسم ملف المحتوى الذي تم تحميله. إذا استخدمت objectAlias بدلاً من ذلك، يجب أن تتطابق مع الاسم المستعار للكائن.

تعيين متغيرات البيئة للإشارة إلى بيانات Kubernetes السرية

إشعار

يوضح مثال YAML الوصول إلى سر من خلال متغيرات env و volume/volumeMount. هذا الاختبار هو لأغراض التوضيح فقط. سيستخدم التطبيق النموذجي أسلوبا واحدا أو آخر. ومع ذلك، يجب أن تدرك أنه لكي يتوفر سر من خلال متغيرات env، يجب أولا تحميله بواسطة جراب واحد على الأقل.

  • راجع سر Kubernetes الذي تم إنشاؤه حديثا عن طريق تعيين متغير بيئة في جراب الخاص بك، كما هو موضح في المثال التالي YAML.

    kind: Pod
    apiVersion: v1
    metadata:
      name: busybox-secrets-store-inline
    spec:
      containers:
        - name: busybox
          image: registry.k8s.io/e2e-test-images/busybox:1.29-1
          command:
            - "/bin/sleep"
            - "10000"
          volumeMounts:
          - name: secrets-store01-inline
            mountPath: "/mnt/secrets-store"
            readOnly: true
          env:
          - name: SECRET_USERNAME
            valueFrom:
              secretKeyRef:
                name: foosecret
                key: username
      volumes:
        - name: secrets-store01-inline
          csi:
            driver: secrets-store.csi.k8s.io
            readOnly: true
            volumeAttributes:
              secretProviderClass: "azure-sync"
    

الوصول إلى المقاييس

موفر Azure Key Vault

يتم تقديم المقاييس عبر Prometheus من المنفذ 8898، ولكن هذا المنفذ لا يتعرض خارج pod افتراضياً.

  • الوصول إلى المقاييس عبر المضيف المحلي باستخدام kubectl port-forward.

    kubectl port-forward -n kube-system ds/aks-secrets-store-provider-azure 8898:8898 & curl localhost:8898/metrics
    
المقاييس التي يوفرها موفر Azure Key Vault لبرنامج تشغيل Secrets Store CSI
مقياس ‏‏الوصف علامات
keyvault_request توزيع المدة التي استغرقها الحصول على من خزنة المفاتيح. os_type=<runtime os>، provider=azure، object_name=<keyvault object name>، ، object_type=<keyvault object type>error=<error if failed>
grpc_request توزيع المدة التي استغرقتها طلبات gRPC. os_type=<runtime os>، provider=azure، grpc_method=<rpc full method>، ، grpc_code=<grpc status code>grpc_message=<grpc status message>

أسرار مخزن برنامج تشغيل الجهازStore CSI

يتم تقديم المقاييس من المنفذ 8095، ولكن لا يتم عرض هذا المنفذ خارج الجراب بشكل افتراضي.

  • الوصول إلى المقاييس عبر المضيف المحلي باستخدام kubectl port-forward.

    kubectl port-forward -n kube-system ds/aks-secrets-store-csi-driver 8095:8095 &
    curl localhost:8095/metrics
    
المقاييس التي يوفرها برنامج تشغيل Secrets Store CSI
مقياس ‏‏الوصف علامات
total_node_publish العدد الإجمالي لطلبات تحميل وحدة التخزين الناجحة. os_type=<runtime os>, provider=<provider name>
total_node_unpublish العدد الإجمالي لطلبات إلغاء تحميل وحدة التخزين الناجحة. os_type=<runtime os>
total_node_publish_error العدد الإجمالي للأخطاء مع طلبات تحميل وحدة التخزين. os_type=<runtime os>، ، provider=<provider name>error_type=<error code>
total_node_unpublish_error العدد الإجمالي للأخطاء مع طلبات إلغاء تحميل وحدة التخزين. os_type=<runtime os>
total_sync_k8s_secret العدد الإجمالي للأسرار Kubernetes التي تمت مزامنتها. os_type=<runtime os, provider=<provider name>
sync_k8s_secret_duration_sec توزيع المدة التي استغرقها مزامنة سر Kubernetes. os_type=<runtime os>
total_rotation_reconcile العدد الإجمالي لتسوية التدوير. os_type=<runtime os>, rotated=<true or false>
total_rotation_reconcile_error العدد الإجمالي للتناوب يتم التوفيق بينه وبين الأخطاء. os_type=<runtime os>، ، rotated=<true or false>error_type=<error code>
total_rotation_reconcile_error توزيع المدة التي استغرقها تدوير محتوى مخزن البيانات السرية للجرابات. os_type=<runtime os>

الترحيل من المصدر المفتوح إلى برنامج تشغيل CSI لمخزن الأسرار المدار بواسطة AKS

  1. قم بإلغاء تثبيت برنامج تشغيل CSI لمخزن الأسرار مفتوح المصدر باستخدام الأمر التالي helm delete .

    helm delete <release name>
    

    إشعار

    إذا قمت بتثبيت برنامج التشغيل والموفر باستخدام عناوين YAMLs للتوزيع، يمكنك حذف المكونات باستخدام الأمر التالي kubectl delete .

    # Delete AKV provider pods from Linux nodes
    kubectl delete -f https://raw.githubusercontent.com/Azure/secrets-store-csi-driver-provider-azure/master/deployment/provider-azure-installer.yaml
    
    # Delete AKV provider pods from Windows nodes
    kubectl delete -f https://raw.githubusercontent.com/Azure/secrets-store-csi-driver-provider-azure/master/deployment/provider-azure-installer-windows.yaml
    
  2. قم بترقية نظام مجموعة AKS الحالي باستخدام الميزة باستخدام az aks enable-addons الأمر .

    az aks enable-addons --addons azure-keyvault-secrets-provider --name myAKSCluster --resource-group myResourceGroup
    

استكشاف الأخطاء وإصلاحها

للحصول على خطوات استكشاف الأخطاء وإصلاحها، راجع استكشاف أخطاء موفر Azure Key Vault وإصلاحها لبرنامج تشغيل CSI لمخزن الأسرار.

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

لمعرفة المزيد حول موفر Azure Key Vault لبرنامج تشغيل Secrets Store CSI، راجع الموارد التالية: