Diqqətinizə Dex, dex-k8s-authenticator və GitHub-dan istifadə edərək Kubernetes klasterinə giriş yaratmaq üçün dərsliyi təqdim edirəm.
Rusdilli Kubernetes-dən yerli mem söhbət edir Teleqram
Giriş
İnkişaf və QA komandası üçün dinamik mühitlər yaratmaq üçün Kubernetes-dən istifadə edirik. Beləliklə, biz onlara həm tablosuna, həm də kubectl üçün klasterə giriş vermək istəyirik. OpenShift-dən fərqli olaraq, vanil Kubernetes-in yerli autentifikasiyası yoxdur, buna görə də bunun üçün üçüncü tərəf alətlərindən istifadə edirik.
GitHub - sadəcə olaraq şirkətimizdə GitHub istifadə etdiyimiz üçün
Google OIDC-dən istifadə etməyə çalışdıq, amma təəssüf ki, biz uğursuz onları qruplarla başlamaq üçün GitHub ilə inteqrasiya bizə çox uyğun gəldi. Qrup xəritəsi olmadan, qruplara əsaslanan RBAC siyasətlərini yaratmaq mümkün olmayacaq.
Beləliklə, Kubernetes icazə prosesimiz vizual təqdimatda necə işləyir:
Avtorizasiya prosesi
Bir az daha ətraflı və nöqtə nöqtə:
İstifadəçi dex-k8s-authenticator-a daxil olur (login.k8s.example.com)
GitHub lazımi icazə məlumatını yaradır və onu Dex-ə qaytarır
Dex alınan məlumatı dex-k8s-authenticator-a ötürür
İstifadəçi GitHub-dan OIDC tokeni alır
dex-k8s-authenticator kubeconfig-ə işarə əlavə edir
kubectl tokeni KubeAPIServer-ə ötürür
KubeAPIServer ötürülən token əsasında kubectl-ə girişləri qaytarır
İstifadəçi kubectl-dən giriş əldə edir
Hazırlıq işləri
Əlbəttə, bizdə artıq Kubernetes klasteri quraşdırılıb (k8s.example.com) və həmçinin əvvəlcədən quraşdırılmış HELM ilə gəlir. GitHub-da (super-org) təşkilatımız da var.
Əgər sizdə HELM yoxdursa, onu quraşdırın çox sadə.
Əvvəlcə GitHub-u qurmalıyıq.
Təşkilat parametrləri səhifəsinə keçin, (https://github.com/organizations/super-org/settings/applications) və yeni proqram yaradın (Authorized OAuth App):
GitHub-da yeni proqram yaradılması
Sahələri lazımi URL-lərlə doldurun, məsələn:
Əsas səhifə URL: https://dex.k8s.example.com
Avtorizasiya geri zəng URL: https://dex.k8s.example.com/callback
Tamamlanmış formaya cavab olaraq GitHub yaradacaq Client ID и Client secret, onları təhlükəsiz yerdə saxlayın, onlar bizim üçün faydalı olacaqlar (məsələn, istifadə edirik Sərdaba sirləri saxlamaq üçün):
Giriş səhifəsinə keçin (https://login.k8s.example.com) və GitHub hesabınızdan istifadə edərək daxil olun:
Giriş səhifəsi
Giriş səhifəsi GitHub-a yönləndirildi
Giriş əldə etmək üçün yaradılan təlimatları izləyin
Veb səhifədən kopyala-yapışdırdıqdan sonra klaster resurslarımızı idarə etmək üçün kubectl-dən istifadə edə bilərik:
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"
Və bu işləyir, təşkilatımızdakı bütün GitHub istifadəçiləri resursları görə bilər və podlara daxil ola bilər, lakin onları dəyişdirmək hüququ yoxdur.