أقدم انتباهك إلى برنامج تعليمي لتوليد الوصول إلى مجموعة Kubernetes باستخدام Dex و dex-k8s-Authentator و GitHub.
الدردشة المحلية من Kubernetes باللغة الروسية تیلیجرام
مقدمة
نستخدم Kubernetes لإنشاء بيئات ديناميكية لفريق التطوير وضمان الجودة. لذلك نريد منحهم حق الوصول إلى الكتلة لكل من لوحة القيادة و kubectl. على عكس OpenShift نفسه ، لا تملك Vanilla Kubernetes مصادقة أصلية ، لذلك نستخدم أدوات الجهات الخارجية لهذا الغرض.
حاولنا استخدام Google OIDC ، لكننا للأسف فشلت لبدء المجموعات ، لذلك كان التكامل مع GitHub مناسبًا لنا تمامًا. بدون تعيين المجموعة ، لن يكون من الممكن إنشاء سياسات RBAC قائمة على المجموعة.
إذن ، كيف تعمل عملية ترخيص Kubernetes في التمثيل المرئي:
عملية التفويض
مزيد من التفاصيل ونقطة بنقطة:
يقوم المستخدم بتسجيل الدخول إلى dex-k8s-Authenticator (login.k8s.example.com)
يقوم dex-k8s-Authenticator بإعادة توجيه الطلب إلى Dex (dex.k8s.example.com)
يقوم Dex بإعادة التوجيه إلى صفحة تسجيل الدخول إلى GitHub
ينشئ GitHub معلومات التفويض المطلوبة ويعيدها إلى Dex
يمرر Dex المعلومات المستلمة إلى المصادقة dex-k8s
يحصل المستخدم على رمز OIDC المميز من GitHub
يضيف dex-k8s-Authentator رمزًا مميزًا إلى kubeconfig
kubectl يمرر الرمز المميز إلى KubeAPIServer
KubeAPIServer على أساس الرمز الذي تم تمريره يعيد الوصول إلى kubectl
يصل المستخدم من kubectl
الإجراءات التحضيرية
بالطبع ، لدينا بالفعل مجموعة Kubernetes مثبتة (k8s.example.com) ، وكذلك HELM المثبتة مسبقًا. لدينا أيضًا منظمة على GitHub (super-org).
إذا لم يكن لديك HELM ، فقم بتثبيته بسيطة جدا.
نحتاج أولاً إلى إعداد GitHub.
انتقل إلى صفحة إعدادات المؤسسة ، (https://github.com/organizations/super-org/settings/applications) وأنشئ تطبيقًا جديدًا (تطبيق OAuth المعتمد):
أنشئ تطبيقًا جديدًا على GitHub
املأ الحقول بعناوين URL المطلوبة ، على سبيل المثال:
رابط الصفحة الرئيسية: https://dex.k8s.example.com
عنوان URL لمعاودة الاتصال: https://dex.k8s.example.com/callback
كن حذرًا مع الروابط ، فمن المهم ألا تفقد الشرطة المائلة.
استجابة للنموذج المكتمل ، سيقوم GitHub بإنشاء ملف Client ID и Client secret، احفظها في مكان آمن ، فستكون مفيدة لنا (على سبيل المثال ، نستخدم ملفات قبو لحفظ الأسرار):
اذهب إلى صفحة تسجيل الدخولhttps://login.k8s.example.com) وقم بتسجيل الدخول باستخدام حساب GitHub:
صفحة التفويض
تمت إعادة توجيه صفحة التفويض إلى GitHub
اتبع التعليمات التي تم إنشاؤها للوصول
بعد النسخ واللصق من صفحة الويب ، يمكننا استخدام kubectl لإدارة موارد المجموعة الخاصة بنا:
kubectl get po
NAME READY STATUS RESTARTS AGE
mypod 1/1 Running 0 3d
kubectl delete po mypod
Error from server (Forbidden): pods "mypod" is forbidden: User "[email protected]" cannot delete pods in the namespace "default"
وهو يعمل ، يمكن لجميع مستخدمي GitHub في مؤسستنا رؤية الموارد وتسجيل الدخول إلى البودات ، لكن ليس لديهم إذن بتغييرها.