تخطَّ إلى المحتوى

kubeconfig و Contexts و Users

ستتعلم بنية kubeconfig، معنى cluster و user و context، وكيف تجعل namespace الافتراضي واضحا قبل أي عملية حساسة.

kubeconfig هو الملف الذي يخبر kubectl: أين الـ API Server؟ من هو المستخدم؟ وما context الحالي الذي يربط المستخدم بالـ cluster والـ namespace؟

apiVersion: v1
kind: Config
clusters:
- name: dev
cluster:
server: https://dev.example.com
users:
- name: bakry
user:
token: REDACTED
contexts:
- name: dev-bakry
context:
cluster: dev
user: bakry
namespace: dev
current-context: dev-bakry
Terminal window
kubectl config get-contexts
kubectl config current-context
kubectl config use-context dev-bakry
kubectl config set-context --current --namespace=dev
kubectl config view --minify

Expected output:

CURRENT NAME CLUSTER AUTHINFO NAMESPACE
* dev-bakry dev bakry dev
القاعدةالسبب
لا تشارك kubeconfig كامليحتوي معلومات وصول حساسة
استخدم أسماء contexts واضحةمثل prod-admin و dev-readonly
اضبط namespace الافتراضييقلل أوامر -n الخاطئة
استخدم صلاحيات محدودةRBAC يجب أن يحكم ما يمكن فعله

Lab: تثبيت namespace آمن للـ context الحالي

المستوى: مبتدئ الوقت: 20 دقيقة الأدوات: kubectl

الهدف: قراءة context الحالي وضبط namespace افتراضي ثم التأكد قبل تنفيذ أمر.

  • kubeconfig يعمل.
Terminal window
kubectl config current-context
kubectl create namespace dev --dry-run=client -o yaml | kubectl apply -f -
kubectl config set-context --current --namespace=dev
kubectl config view --minify --output 'jsonpath={..namespace}'
kubectl get pods
dev
No resources found in dev namespace.
Terminal window
kubectl config set-context --current --namespace=default
kubectl delete namespace dev
الخطأالعلاج
العمل على prod بالخطأاستخدم أسماء contexts واضحة وأظهرها في prompt
Forbidden رغم أن cluster يعملافحص user و RBAC
namespace غير متوقعافحص kubectl config view --minify