kubeconfig و Contexts و Users
الهدف من الدرس
Section titled “الهدف من الدرس”ستتعلم بنية kubeconfig، معنى cluster و user و context، وكيف تجعل namespace الافتراضي واضحا قبل أي عملية حساسة.
الفكرة ببساطة
Section titled “الفكرة ببساطة”kubeconfig هو الملف الذي يخبر kubectl: أين الـ API Server؟ من هو المستخدم؟ وما context الحالي الذي يربط المستخدم بالـ cluster والـ namespace؟
البنية
Section titled “البنية”apiVersion: v1kind: Configclusters: - name: dev cluster: server: https://dev.example.comusers: - name: bakry user: token: REDACTEDcontexts: - name: dev-bakry context: cluster: dev user: bakry namespace: devcurrent-context: dev-bakryأوامر يومية
Section titled “أوامر يومية”kubectl config get-contextskubectl config current-contextkubectl config use-context dev-bakrykubectl config set-context --current --namespace=devkubectl config view --minifyExpected output:
CURRENT NAME CLUSTER AUTHINFO NAMESPACE* dev-bakry dev bakry devقواعد أمان
Section titled “قواعد أمان”| القاعدة | السبب |
|---|---|
| لا تشارك kubeconfig كامل | يحتوي معلومات وصول حساسة |
| استخدم أسماء contexts واضحة | مثل prod-admin و dev-readonly |
| اضبط namespace الافتراضي | يقلل أوامر -n الخاطئة |
| استخدم صلاحيات محدودة | RBAC يجب أن يحكم ما يمكن فعله |
Lab: تثبيت namespace آمن للـ context الحالي
الهدف: قراءة context الحالي وضبط namespace افتراضي ثم التأكد قبل تنفيذ أمر.
Prerequisites
Section titled “Prerequisites”- kubeconfig يعمل.
kubectl config current-contextkubectl create namespace dev --dry-run=client -o yaml | kubectl apply -f -kubectl config set-context --current --namespace=devkubectl config view --minify --output 'jsonpath={..namespace}'kubectl get podsExpected output
Section titled “Expected output”devNo resources found in dev namespace.Cleanup
Section titled “Cleanup”kubectl config set-context --current --namespace=defaultkubectl delete namespace devأخطاء شائعة
Section titled “أخطاء شائعة”| الخطأ | العلاج |
|---|---|
| العمل على prod بالخطأ | استخدم أسماء contexts واضحة وأظهرها في prompt |
Forbidden رغم أن cluster يعمل | افحص user و RBAC |
| namespace غير متوقع | افحص kubectl config view --minify |