موفر 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
.
تعطيل الوظيفة الإضافية لموفر البيانات السرية باستخدام
az aks addon disable
الأمر .az aks addon disable --resource-group myResourceGroup --name myAKSCluster2 --addon azure-keyvault-secrets-provider
إعادة تمكين الوظيفة الإضافية لموفر البيانات السرية دون المعلمة
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
قم بإلغاء تثبيت برنامج تشغيل 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
قم بترقية نظام مجموعة 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، راجع الموارد التالية:
Azure Kubernetes Service