ProHoster > Blog > Ma'muriyat > Kubernetes boshqaruv paneli va GitLab foydalanuvchilarining integratsiyasi
Kubernetes boshqaruv paneli va GitLab foydalanuvchilarining integratsiyasi
Kubernetes Dashboard - bu ishlayotgan klasteringiz haqida so'nggi ma'lumotlarni olish va uni minimal kuch bilan boshqarish uchun ishlatish uchun qulay vosita. Ushbu imkoniyatlardan foydalanish nafaqat ma'murlar/DevOps muhandislari, balki konsolga kamroq o'rganib qolgan va/yoki kubectl va bilan ishlashning barcha nozikliklari bilan shug'ullanish niyatida bo'lmaganlar uchun ham zarur bo'lganda, siz buni yanada ko'proq qadrlay boshlaysiz. boshqa kommunal xizmatlar. Bu biz bilan sodir bo'ldi: ishlab chiquvchilar Kubernetes veb-interfeysiga tezkor kirishni xohlashdi va biz GitLab-dan foydalanganimiz sababli, yechim o'z-o'zidan paydo bo'ldi.
Nima uchun bu?
To'g'ridan-to'g'ri ishlab chiquvchilarni disk raskadrovka vazifalari uchun K8s Dashboard kabi vosita qiziqtirishi mumkin. Ba'zan siz jurnallar va resurslarni ko'rishni, ba'zan esa podlarni o'ldirishni, Deployments/StatefulSets-ni o'lchashni va hatto konteyner konsoliga o'tishni xohlaysiz (shuningdek, so'rovlar mavjud, ammo boshqa yo'l ham bor - masalan, orqali kubectl-debug).
Bundan tashqari, menejerlar uchun klasterga qarashni xohlaydigan psixologik moment bor - "hamma narsa yashil" ekanligini ko'rish va shu bilan o'zlarini "hamma narsa ishlayotganiga" ishontirish (bu, albatta, juda nisbiy ... lekin bu maqola doirasidan tashqarida ).
Standart CI tizimi sifatida bizda mavjud qo'llaniladi GitLab: barcha ishlab chiquvchilar ham undan foydalanadilar. Shuning uchun ularga kirishni ta'minlash uchun asboblar panelini GitLab hisoblari bilan birlashtirish mantiqan to'g'ri edi.
Shuni ham ta'kidlaymanki, biz NGINX Ingress-dan foydalanamiz. Agar siz boshqalar bilan ishlasangiz kirish yechimlari, avtorizatsiya uchun izohlarning analoglarini mustaqil ravishda topishingiz kerak bo'ladi.
Integratsiyaga urinish
Boshqaruv panelini o'rnatish
ogohlantirish: Agar siz quyidagi amallarni takrorlamoqchi bo'lsangiz, unda - keraksiz operatsiyalardan qochish uchun - avval keyingi sarlavhani o'qing.
Ushbu integratsiyani ko'plab o'rnatishlarda qo'llaganimiz sababli, biz uni o'rnatishni avtomatlashtirdik. Buning uchun kerakli manbalar nashr etilgan maxsus GitHub ombori. Ular biroz o'zgartirilgan YAML konfiguratsiyalariga asoslangan Dashboard rasmiy ombori, shuningdek, tezkor joylashtirish uchun Bash skripti.
Skript asboblar panelini klasterga o'rnatadi va uni GitLab bilan integratsiya qilish uchun sozlaydi:
$ ./ctl.sh
Usage: ctl.sh [OPTION]... --gitlab-url GITLAB_URL --oauth2-id ID --oauth2-secret SECRET --dashboard-url DASHBOARD_URL
Install kubernetes-dashboard to Kubernetes cluster.
Mandatory arguments:
-i, --install install into 'kube-system' namespace
-u, --upgrade upgrade existing installation, will reuse password and host names
-d, --delete remove everything, including the namespace
--gitlab-url set gitlab url with schema (https://gitlab.example.com)
--oauth2-id set OAUTH2_PROXY_CLIENT_ID from gitlab
--oauth2-secret set OAUTH2_PROXY_CLIENT_SECRET from gitlab
--dashboard-url set dashboard url without schema (dashboard.example.com)
Optional arguments:
-h, --help output this message
Biroq, uni ishlatishdan oldin siz GitLab-ga o'tishingiz kerak: Administrator maydoni → Ilovalar - va kelajakdagi panel uchun yangi dastur qo'shing. Keling, buni "kubernetes asboblar paneli" deb ataymiz:
Uni qo'shish natijasida GitLab xeshlarni taqdim etadi:
Ular skriptga dalil sifatida ishlatiladiganlardir. Natijada, o'rnatish quyidagicha ko'rinadi:
Shundan so'ng, hamma narsa boshlanganligini tekshiramiz:
$ kubectl -n kube-system get pod | egrep '(dash|oauth)'
kubernetes-dashboard-76b55bc9f8-xpncp 1/1 Running 0 14s
oauth2-proxy-5586ccf95c-czp2v 1/1 Running 0 14s
Biroq, ertami-kechmi hamma narsa boshlanadi avtorizatsiya darhol ishlamaydi! Gap shundaki, foydalanilgan rasmda (boshqa rasmlardagi vaziyat o'xshash) qayta qo'ng'iroqda qayta yo'naltirishni ushlash jarayoni noto'g'ri amalga oshirilgan. Bu holat oauthning o'zi bizga taqdim etgan cookie faylini o'chirib tashlashiga olib keladi...
Muammoni yamoq yordamida o'zingizning rasmingizni yaratish orqali hal qilinadi.
Oauth-ni tuzatish va qayta o'rnatish
Buning uchun biz quyidagi Docker faylidan foydalanamiz:
diff --git a/dist.sh b/dist.sh
index a00318b..92990d4 100755
--- a/dist.sh
+++ b/dist.sh
@@ -14,25 +14,13 @@ goversion=$(go version | awk '{print $3}')
sha256sum=()
echo "... running tests"
-./test.sh
+#./test.sh
-for os in windows linux darwin; do
- echo "... building v$version for $os/$arch"
- EXT=
- if [ $os = windows ]; then
- EXT=".exe"
- fi
- BUILD=$(mktemp -d ${TMPDIR:-/tmp}/oauth2_proxy.XXXXXX)
- TARGET="oauth2_proxy-$version.$os-$arch.$goversion"
- FILENAME="oauth2_proxy-$version.$os-$arch$EXT"
- GOOS=$os GOARCH=$arch CGO_ENABLED=0
- go build -ldflags="-s -w" -o $BUILD/$TARGET/$FILENAME || exit 1
- pushd $BUILD/$TARGET
- sha256sum+=("$(shasum -a 256 $FILENAME || exit 1)")
- cd .. && tar czvf $TARGET.tar.gz $TARGET
- mv $TARGET.tar.gz $DIR/dist
- popd
-done
+os='linux'
+echo "... building v$version for $os/$arch"
+TARGET="oauth2_proxy-$version.$os-$arch.$goversion"
+GOOS=$os GOARCH=$arch CGO_ENABLED=0
+ go build -ldflags="-s -w" -o ./dist/oauth2_proxy || exit 1
checksum_file="sha256sum.txt"
cd $DIR/dists
diff --git a/oauthproxy.go b/oauthproxy.go
index 21e5dfc..df9101a 100644
--- a/oauthproxy.go
+++ b/oauthproxy.go
@@ -381,7 +381,9 @@ func (p *OAuthProxy) SignInPage(rw http.ResponseWriter, req *http.Request, code
if redirect_url == p.SignInPath {
redirect_url = "/"
}
-
+ if req.FormValue("rd") != "" {
+ redirect_url = req.FormValue("rd")
+ }
t := struct {
ProviderName string
SignInMessage string
Endi siz rasmni yaratishingiz va uni GitLab-ga surishingiz mumkin. Keyingisi manifests/kube-dashboard-oauth2-proxy.yaml kerakli tasvirdan foydalanishni ko'rsating (uni o'zingiz bilan almashtiring):
image: docker.io/colemickens/oauth2_proxy:latest
Agar sizda avtorizatsiya bilan yopilgan ro'yxatga olish kitobi bo'lsa, rasmlarni tortib olish uchun sirni qo'shishni unutmang:
imagePullSecrets:
- name: gitlab-registry
... va ro'yxatga olish kitobi uchun sirni qo'shing:
Boshqaruv paneliga o'tish va juda eskirgan kirish tugmachasini topish vaqti keldi:
Uni bosgandan so'ng, GitLab bizni kutib oladi va o'zining odatiy sahifasiga kirishni taklif qiladi (albatta, agar biz u erga ilgari kirmagan bo'lsak):
Biz GitLab hisob ma'lumotlari bilan tizimga kirdik - va hamma narsa bajarildi:
Boshqaruv paneli xususiyatlari haqida
Agar siz ilgari Kubernetes bilan ishlamagan ishlab chiquvchi bo'lsangiz yoki oddiygina biron sababga ko'ra oldin asboblar panelini uchratmagan bo'lsangiz, men uning ba'zi imkoniyatlarini tasvirlab beraman.
Birinchidan, siz "hamma narsa yashil" ekanligini ko'rishingiz mumkin:
Atrof-muhit o'zgaruvchilari, yuklab olingan rasm, ishga tushirish argumentlari va ularning holati kabi batafsil ma'lumotlar pods uchun ham mavjud:
O'rnatishlar ko'rinadigan holatlarga ega:
... va boshqa tafsilotlar:
... shuningdek, joylashtirishni kengaytirish imkoniyati ham mavjud:
Ushbu operatsiyaning natijasi:
Maqolaning boshida aytib o'tilgan boshqa foydali xususiyatlar qatorida jurnallarni ko'rish:
... va tanlangan podning konteyner konsoliga kirish funksiyasi:
Masalan, siz tugunlardagi cheklovlar/so'rovlarni ham ko'rishingiz mumkin:
Albatta, bu panelning barcha imkoniyatlari emas, lekin umid qilamanki, siz umumiy fikrni olasiz.
Integratsiya va asboblar panelining kamchiliklari
Ta'riflangan integratsiyada yo'q kirish nazorati. Uning yordamida GitLab-ga kirish huquqiga ega bo'lgan barcha foydalanuvchilar boshqaruv paneliga kirish huquqiga ega bo'ladi. Ular asboblar panelining o'zida bir xil kirish huquqiga ega, bu asboblar panelining huquqlariga mos keladi RBACda aniqlanadi. Shubhasiz, bu hamma uchun mos emas, lekin bizning holatlarimiz uchun bu etarli bo'lib chiqdi.
Boshqaruv panelidagi sezilarli kamchiliklar orasida men quyidagilarni ta'kidlayman:
init konteynerining konsoliga kirishning iloji yo'q;
Deployments va StatefulSets-ni tahrirlash mumkin emas, garchi buni ClusterRole-da tuzatish mumkin;
Boshqaruv panelining Kubernetes-ning so'nggi versiyalari bilan mosligi va loyihaning kelajagi savollarni tug'diradi.
Oxirgi muammo alohida e'tiborga loyiqdir.
Boshqaruv paneli holati va muqobil variantlar
Loyihaning so'nggi versiyasida taqdim etilgan Kubernetes relizlari bilan asboblar paneli moslik jadvali (v1.10.1), unchalik xursand emas:
Shunga qaramay, mavjud (allaqachon yanvar oyida qabul qilingan) PR № 3476, bu K8s 1.13-ni qo'llab-quvvatlashni e'lon qiladi. Bundan tashqari, loyiha masalalari orasida K8s 1.14 da panel bilan ishlaydigan foydalanuvchilarga havolalarni topishingiz mumkin. Nihoyat, majburiyat oladi loyihaning kod bazasiga kirish to'xtamaydi. Shunday qilib (hech bo'lmaganda!) Loyihaning haqiqiy holati birinchi navbatda rasmiy muvofiqlik jadvalida ko'rinadigan darajada yomon emas.
Va nihoyat, asboblar paneliga alternativalar mavjud. Ular orasida:
K8Dash — yosh interfeys (birinchi topshiriqlar shu yilning martiga to‘g‘ri keladi), u allaqachon klasterning joriy holatini vizual tarzda ko‘rsatish va uning ob’ektlarini boshqarish kabi yaxshi funksiyalarni taqdim etadi. "Real vaqt interfeysi" sifatida joylashtirilgan, chunki brauzerda sahifani yangilashni talab qilmasdan ko'rsatilgan ma'lumotlarni avtomatik ravishda yangilaydi.
OpenShift konsoli - Red Hat OpenShift veb-interfeysi, ammo bu sizning klasteringizga loyihaning boshqa ishlanmalarini olib keladi, bu hamma uchun mos emas.
Kubernator barcha klaster ob'ektlarini ko'rish imkoniyatiga ega bo'lgan past darajadagi (boshqarish panelidan) interfeys sifatida yaratilgan qiziqarli loyihadir. Biroq, uning rivojlanishi to'xtaganga o'xshaydi.
Polaris - boshqa kuni e'lon qilindi panel funktsiyalarini birlashtirgan loyiha (klasterning joriy holatini ko'rsatadi, lekin uning ob'ektlarini boshqarmaydi) va avtomatik "eng yaxshi amaliyotlarni tekshirish" (klasterni unda ishlaydigan joylashtirish konfiguratsiyasining to'g'riligini tekshiradi).
Xulosalar o'rniga
Boshqaruv paneli biz xizmat qiladigan Kubernetes klasterlari uchun standart vositadir. Uning GitLab bilan integratsiyasi ham standart o'rnatishimizning bir qismiga aylandi, chunki ko'plab ishlab chiquvchilar ushbu panel bilan ega bo'lgan imkoniyatlardan xursand.
Kubernetes asboblar panelida vaqti-vaqti bilan Ochiq manbalar hamjamiyatining muqobil variantlari mavjud (va biz ularni ko'rib chiqishdan mamnunmiz), ammo bu bosqichda biz ushbu yechim bilan qolamiz.