ہم ترقی اور QA ٹیم کے لیے متحرک ماحول بنانے کے لیے Kubernetes کا استعمال کرتے ہیں۔ لہذا ہم انہیں ڈیش بورڈ اور kubectl دونوں کے لیے کلسٹر تک رسائی دینا چاہتے ہیں۔ OpenShift کے برعکس، vanilla Kubernetes میں مقامی تصدیق نہیں ہے، لہذا ہم اس کے لیے فریق ثالث کے ٹولز استعمال کرتے ہیں۔
GitHub - صرف اس وجہ سے کہ ہم اپنی کمپنی میں GitHub استعمال کرتے ہیں۔
ہم نے گوگل او آئی ڈی سی کو استعمال کرنے کی کوشش کی، لیکن بدقسمتی سے ہم ناکام ان کو گروپس کے ساتھ شروع کرنے کے لیے، اس لیے GitHub کے ساتھ انضمام ہمارے لیے کافی مناسب تھا۔ گروپ میپنگ کے بغیر، گروپوں کی بنیاد پر RBAC پالیسیاں بنانا ممکن نہیں ہوگا۔
تو، ہمارا Kubernetes اجازت دینے کا عمل بصری نمائندگی میں کیسے کام کرتا ہے:
اجازت دینے کا عمل
تھوڑی سی مزید تفصیل اور پوائنٹ بہ نقطہ:
صارف dex-k8s-authenticator میں لاگ ان ہوتا ہے (login.k8s.example.com)
dex-k8s-authenticator درخواست کو ڈیکس (dex.k8s.example.com)
ڈیکس GitHub لاگ ان پیج پر ری ڈائریکٹ کرتا ہے۔
GitHub اجازت کی ضروری معلومات تیار کرتا ہے اور اسے Dex پر واپس کرتا ہے۔
Dex موصول ہونے والی معلومات کو dex-k8s-authenticator کو دیتا ہے۔
صارف کو GitHub سے OIDC ٹوکن ملتا ہے۔
dex-k8s-authenticator kubeconfig میں ٹوکن شامل کرتا ہے۔
kubectl ٹوکن KubeAPIServer کو دیتا ہے۔
KubeAPIServer پاس شدہ ٹوکن کی بنیاد پر kubectl تک رسائی واپس کرتا ہے۔
صارف کو کیوبیکٹل سے رسائی حاصل ہوتی ہے۔
تیاری کے اقدامات
یقینا، ہمارے پاس پہلے سے ہی ایک Kubernetes کلسٹر انسٹال ہے (k8s.example.com)، اور پہلے سے انسٹال شدہ HELM کے ساتھ بھی آتا ہے۔ GitHub (super-org) پر ہماری ایک تنظیم بھی ہے۔
اگر آپ کے پاس HELM نہیں ہے تو اسے انسٹال کریں۔ بہت آسان.
سب سے پہلے ہمیں GitHub سیٹ اپ کرنے کی ضرورت ہے۔
تنظیم کی ترتیبات کے صفحے پر جائیں، (https://github.com/organizations/super-org/settings/applications) اور ایک نئی ایپلیکیشن بنائیں (مجاز OAuth ایپ):
GitHub پر ایک نئی ایپلیکیشن بنانا
ضروری URLs کے ساتھ کھیتوں کو پُر کریں، مثال کے طور پر:
لنکس کے ساتھ محتاط رہیں، یہ ضروری ہے کہ سلیشز کو ضائع نہ کریں۔
ایک مکمل فارم کے جواب میں، 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 صارفین وسائل دیکھ سکتے ہیں اور پوڈ میں لاگ ان کر سکتے ہیں، لیکن ان کے پاس انہیں تبدیل کرنے کے حقوق نہیں ہیں۔