انتقل إلى المحتوى
نسخة تجريبية

الأسرار والإعدادات في Kubernetes

يضمّ قسم الأسرار والإعدادات في المجموعة الأسرار (Secrets) وملفات ConfigMaps التي تقرؤها أحمال عملك: عناوين قواعد البيانات ومفاتيح الـ API والإعدادات وما شابهها. اختر مساحة أسماء، ثم تبويب الأسرار أو تبويب ConfigMaps.

إنشاء واحد

  1. افتح قسم الأسرار والإعدادات في المجموعة واختر مساحة الأسماء.
  2. اختر سرّ جديد أو ConfigMap جديد، وأعطه اسمًا.
  3. أضف المفاتيح وقيمها، صفًا لكل مفتاح، أو اختر لصق ملف .env والصق أسطرًا بصيغة KEY=value. المفتاح الموجود في القائمة يأخذ القيمة الملصوقة.
  4. اختر إنشاء.

تتّسع كل قيمة لسطر واحد. وللمفاتيح والأحجام حدود.

الأسرار المحمية

يكون السرّ الجديد محميًا. بعد حفظه تعرض لوحة التحكم أسماء مفاتيحه وأحجامها ووقت آخر تغيير له، ولا تعرض قيمه أبدًا. لتغيير قيمة اكتب قيمة جديدة؛ والمفتاح الذي تتركه فارغًا يحتفظ بقيمته.

أوقف محمي لترى قيم السرّ في لوحة التحكم، خلف زر إظهار لكل مفتاح. ويستطيع كل من يحقّ له تغيير السرّ أن ينشئه غير محمي أو أن يعيد حمايته. أما إيقاف الحماية عن سرّ محمي فلا يقدر عليه إلا مدير المجموعة، ويسجّل سجلّ التدقيق من فعل ذلك.

تخفي الحماية القيم في لوحة التحكم، لكنها لا تمنع من يسمح له دوره في المجموعة بقراءة الأسرار باستخدام kubectl: يستطيع ذلك المديرون والمحرّرون، ولا يستطيعه المشاهدون. انظر الوصول إلى مجموعات Kubernetes.

يُحفظ هذا الاختيار على السرّ نفسه، في التعليق التوضيحي sahabti.com/protected. والسرّ الذي لا يحمله يُعدّ محميًا.

ملفات ConfigMaps ليست سرية، لذا تظهر قيمها دائمًا.

تغيير واحد أو حذفه

اختر واحدًا من القائمة لترى مفاتيحه، ثم تعديل أو حذف. يضيف التعديل مفاتيح أو يستبدلها أو يزيلها، ويترك الباقي كما هو. وتُفتح القيمة ذات الأسطر المتعددة، مثل ملف إعدادات، في مربع أكبر. ولا يمكن الكتابة فوق مفتاح ثنائي في ConfigMap، بل إبقاؤه أو إزالته فقط. وإن غيّره أحد بعد أن فتحته، تخبرك لوحة التحكم بذلك وتحمّل النسخة الجديدة مع إبقاء ما كتبته؛ فاحفظ مجددًا. ويطلب منك الحذف أن تكتب تأكيد.

تقرأ الحاويات الأسرار وملفات ConfigMaps عند بدئها. بعد أي تغيير، أعد تشغيل أحمال العمل التي تستخدمه:

bash
kubectl rollout restart deployment/web

استخدامه في Deployment

يعرض كل سرّ وكل ConfigMap مقتطفات للنسخ: كل المفاتيح كمتغيّرات بيئة، ومفتاح واحد كمتغيّر بيئة، وكل المفاتيح كملفات. ومعًا:

yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: web
spec:
  selector:
    matchLabels:
      app: web
  template:
    metadata:
      labels:
        app: web
    spec:
      containers:
        - name: web
          image: nginx:1.27-alpine
          envFrom:
            - secretRef:
                name: app-env
            - configMapRef:
                name: app-config
          env:
            - name: API_TOKEN
              valueFrom:
                secretKeyRef:
                  name: app-env
                  key: API_TOKEN
            - name: LOG_LEVEL
              valueFrom:
                configMapKeyRef:
                  name: app-config
                  key: LOG_LEVEL
          volumeMounts:
            - name: app-config
              mountPath: /etc/app-config
              readOnly: true
      volumes:
        - name: app-config
          configMap:
            name: app-config

من يستطيع ماذا

الدورالأسرارملفات ConfigMaps
مديرالإنشاء والتغيير والحذف، وإيقاف الحمايةالإنشاء والتغيير والحذف
محرّرالإنشاء والتغيير والحذف، في كل مساحات الأسماء عدا مساحات النظامالإنشاء والتغيير والحذف، في كل مساحات الأسماء عدا مساحات النظام
مشاهدلا شيء: لا تظهر الأسرارالقراءة، مع القيم

يجري كل تغيير باسمك وبدورك في المجموعة. ولا تظهر هنا مساحات النظام (kube-system وkube-public وkube-node-lease والمساحتان اللتان تعمل فيهما البوابة المُدارة). ولا تستطيع مفاتيح الـ API ولا التطبيقات المتصلة ولا PromptOps قراءة الأسرار وملفات ConfigMaps هنا ولا تغييرها، فلا تصل قيمها أبدًا إلى مزوّد ذكاء اصطناعي.

ما أُنشئ في مكان آخر

يُعرض كل سرّ وكل ConfigMap في مساحة الأسماء، وكذلك ما لم تنشئه لوحة التحكم: ما أنشأه Helm أو kubectl أو المجموعة نفسها مثل kube-root-ca.crt، وأنواع أخرى من الأسرار مثل شهادات TLS ورموز حسابات الخدمة وبيانات الدخول إلى سجلات الحاويات. وعلى كل منها شارة تبيّن مصدرها. وتضع لوحة التحكم على ما تنشئه التسمية app.kubernetes.io/managed-by: sahabti-console.

يمكنك تعديل أي ConfigMap أو سرّ من مفاتيح وقيم (Opaque) أيًا كانت الجهة التي أنشأته. ويحذّرك المحرّر أولًا: قد تستبدل الجهة التي أنشأته تغييرك، وقد يكون ذلك نشرك التالي إن جاء من Helm. ويُبقي التعديل تسمياته وتعليقاته التوضيحية كما هي، فيظل تابعًا لـ Helm أو للجهة التي أنشأته. ومثل أي سرّ لا يحمل ذلك التعليق التوضيحي، يُعدّ السرّ القادم من مكان آخر محميًا: تبقى قيمه مخفية، ويحتفظ المفتاح الذي تتركه فارغًا بقيمته. ولا تحذف لوحة التحكم إلا ما أنشأته، فاحذف الباقي بالطريقة التي أُنشئ بها.

وتبقى هذه للقراءة فقط، فغيّرها بالطريقة التي أُنشئت بها: kube-root-ca.crt وسجلات إصدارات Helm نفسها وكل نوع آخر من الأسرار وما تديره المنصّة داخل المجموعة. وتُخفى سجلات إصدارات Helm وkube-root-ca.crt إلى أن تشغّل إظهار كائنات النظام فوق القائمة.

الحدود

المفاتيح200 لكل سرّ أو ConfigMap
القيم1 ميبيبايت إجمالًا لكل سرّ أو ConfigMap، وهو حدّ المجموعة نفسها
أسماء المفاتيحأحرف إنجليزية وأرقام و- و_ و.، حتى 253 حرفًا، وليست . ولا تبدأ بـ ..
المعروضأول 250 في مساحة الأسماء
التغييرات60 في الدقيقة لكل شخص، و120 في الدقيقة لكل مجموعة
القراءاتتُحسب ضمن حدّ اللوحة: 240 في الدقيقة لكل شخص، و600 في الدقيقة لكل مجموعة

ما تحتفظ به المنصّة

لا شيء من القيم. تنتقل القيم من متصفّحك إلى واجهة المجموعة عبر اتصالات مشفّرة، ولا تخزّنها المنصّة ولا تحتفظ بها مؤقتًا ولا تسجّلها. ويسجّل سجلّ التدقيق من أنشأ أي سرّ أو ConfigMap أو غيّره أو حذفه، مع أسماء مفاتيحه ودون قيمه أبدًا. ومثل كل كائن في المجموعة، تدخل الأسرار وملفات ConfigMaps في النسخ الاحتياطية المشفّرة لحالة المجموعة، لذا يبقى ما حُذف منها في تلك النسخ حتى تنتهي صلاحيتها.