Integrazzjoni ta' Kubernetes Dashboard u Utenti GitLab
Kubernetes Dashboard huwa għodda faċli biex tużah biex tikseb informazzjoni aġġornata dwar il-grupp li qed jaħdem tiegħek u timmaniġġjaha bi sforz minimu. Tibda tapprezzah saħansitra aktar meta l-aċċess għal dawn il-kapaċitajiet huwa meħtieġ mhux biss minn amministraturi/inġiniera DevOps, iżda wkoll minn dawk li huma inqas imdorrijin mal-console u/jew m'għandhomx il-ħsieb li jittrattaw l-intricacies kollha tal-interazzjoni ma 'kubectl u utilitajiet oħra. Dan ġara magħna: l-iżviluppaturi riedu aċċess rapidu għall-interface tal-web Kubernetes, u peress li nużaw GitLab, is-soluzzjoni ġiet b'mod naturali.
Għaliex dan?
L-iżviluppaturi diretti jistgħu jkunu interessati f'għodda bħal K8s Dashboard għal ħidmiet ta' debugging. Xi drabi trid tara zkuk u riżorsi, u xi kultant toqtol il-miżwed, iskala Deployments/StatefulSets, u anke tmur fil-console tal-kontejners (hemm ukoll talbiet li għalihom, madankollu, hemm mod ieħor - pereżempju, permezz kubectl-debug).
Barra minn hekk, hemm mument psikoloġiku għall-maniġers meta jridu jħarsu lejn il-cluster - biex jaraw li "kollox huwa aħdar", u b'hekk iserrħu rashom li "kollox qed jaħdem" (li, ovvjament, huwa relattiv ħafna... iżda dan huwa lil hinn mill-ambitu tal-artikolu).
Bħala sistema standard CI għandna applikati GitLab: l-iżviluppaturi kollha jużawha wkoll. Għalhekk, biex jipprovdulhom aċċess, kien loġiku li jintegraw Dashboard mal-kontijiet GitLab.
Ser ninnota wkoll li nużaw NGINX Ingress. Jekk taħdem ma 'oħrajn soluzzjonijiet tad-dħul, ser ikollok bżonn issib b'mod indipendenti analogi ta' annotazzjonijiet għall-awtorizzazzjoni.
Nippruvaw l-integrazzjoni
Installazzjoni tad-dashboard
Attenzjoni: Jekk se tirrepeti l-passi hawn taħt, imbagħad - biex tevita operazzjonijiet bla bżonn - l-ewwel aqra għas-subintestatura li jmiss.
Peress li nużaw din l-integrazzjoni f'ħafna installazzjonijiet, awtomatizzajna l-installazzjoni tagħha. Is-sorsi meħtieġa għal dan huma ppubblikati fi repożitorju speċjali ta’ GitHub. Huma bbażati fuq konfigurazzjonijiet YAML kemmxejn modifikati minn repożitorju uffiċjali tad-Dashboard, kif ukoll skript Bash għal skjerament malajr.
L-iskript jinstalla Dashboard fil-cluster u jikkonfigurah għall-integrazzjoni ma' GitLab:
$ ./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
Madankollu, qabel ma tużah, trid tmur fuq GitLab: Admin area → Applikazzjonijiet - u żid applikazzjoni ġdida għall-panel futur. Ejja nsejħulha “kubernetes dashboard”:
Bħala riżultat taż-żieda tiegħu, GitLab se jipprovdi l-hashes:
Huma dawk li jintużaw bħala argumenti għall-iskrittura. Bħala riżultat, l-installazzjoni tidher bħal din:
$ 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
Illum jew għada kollox se jibda, madankollu awtorizzazzjoni mhux se taħdem immedjatament! Il-fatt hu li fl-immaġni użata (is-sitwazzjoni f'immaġini oħra hija simili) il-proċess ta 'qbid ta' redirect fis-callback huwa implimentat b'mod żbaljat. Din iċ-ċirkustanza twassal għall-fatt li oauth iħassar il-cookie li l-oauth innifsu jipprovdilna...
Il-problema tissolva billi tibni l-immaġni tal-awth tiegħek b'garża.
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
Issa tista 'tibni l-immaġni u timbottaha fil-GitLab tagħna. Li jmiss fi manifests/kube-dashboard-oauth2-proxy.yaml indika l-użu ta 'l-immaġini mixtieqa (ibiddilha ma' tiegħek):
image: docker.io/colemickens/oauth2_proxy:latest
Jekk għandek reġistru li huwa magħluq b'awtorizzazzjoni, tinsiex iżżid l-użu ta 'sigriet għall-immaġini tal-ġibda:
Wasal iż-żmien li tmur fid-Dashboard u ssib buttuna ta' login pjuttost arkajka:
Wara li tikklikkja fuqha, GitLab isellemna, u joffri li jidħol fil-paġna tas-soltu tiegħu (naturalment, jekk qabel ma dħilniex hemm):
Aħna nilloggjaw bil-kredenzjali tal-GitLab - u kollox isir:
Dwar il-karatteristiċi tad-Dashboard
Jekk int żviluppatur li ma ħadimx ma' Kubernetes qabel, jew sempliċement għal xi raġuni ma ltaqax ma' Dashboard qabel, se nispjega xi wħud mill-kapaċitajiet tiegħu.
L-ewwelnett, tista 'tara li "kollox huwa aħdar":
Dejta aktar dettaljata hija wkoll disponibbli għall-imżiewed, bħal varjabbli ambjentali, immaġni mniżżla, argumenti tat-tnedija, u l-istat tagħhom:
L-iskjeramenti għandhom status viżibbli:
...u dettalji oħra:
... u hemm ukoll il-ħila li tiskala l-iskjerament:
Ir-riżultat ta 'din l-operazzjoni:
Fost karatteristiċi utli oħra li diġà ssemmew fil-bidu tal-artiklu hemm il-wiri ta' zkuk:
... u l-funzjoni biex tidħol fil-console tal-kontenitur tal-pod magħżul:
Pereżempju, tista' wkoll tħares lejn il-limiti/talbiet fuq in-nodi:
Naturalment, dawn mhumiex il-kapaċitajiet kollha tal-panel, imma nittama li tieħu l-idea ġenerali.
Żvantaġġi ta 'integrazzjoni u Dashboard
Fl-integrazzjoni deskritta m'hemm l-ebda kontroll tal-aċċess. Biha, l-utenti kollha bi kwalunkwe aċċess għal GitLab jiksbu aċċess għad-Dashboard. Huma għandhom l-istess aċċess fid-Dashboard innifsu, li jikkorrispondi għad-drittijiet tad-Dashboard innifsu, li huma definiti fl-RBAC. Ovvjament, dan mhux adattat għal kulħadd, iżda għall-każ tagħna rriżulta li kien biżżejjed.
Fost l-iżvantaġġi notevoli fid-Dashboard innifsu, ninnota dan li ġej:
huwa impossibbli li tidħol fil-console tal-kontenitur init;
huwa impossibbli li jiġu editjati Deployments u StatefulSets, għalkemm dan jista 'jiġi ffissat fi ClusterRole;
Il-kompatibilità tad-Dashboard mal-aħħar verżjonijiet ta' Kubernetes u l-futur tal-proġett iqajmu mistoqsijiet.
L-aħħar problema jistħoqqilha attenzjoni speċjali.
Status tad-dashboard u alternattivi
Tabella ta' kompatibilità tad-dashboard mar-rilaxxi ta' Kubernetes, ippreżentata fl-aħħar verżjoni tal-proġett (v1.10.1), mhux kuntent ħafna:
Minkejja dan, hemm (diġà adottat f'Jannar) PR #3476, li tħabbar appoġġ għal K8s 1.13. Barra minn hekk, fost il-kwistjonijiet tal-proġett tista 'ssib referenzi għal utenti li jaħdmu mal-panel f'K8s 1.14. Fl-aħħarnett, jimpenja fil-bażi tal-kodiċi tal-proġett ma tieqafx. Allura (mill-inqas!) L-istatus attwali tal-proġett mhuwiex ħażin daqs kemm jista 'jidher l-ewwel mit-tabella ta' kompatibilità uffiċjali.
Fl-aħħarnett, hemm alternattivi għal Dashboard. Fosthom:
K8Dash — interface żagħżugħa (l-ewwel impenji jmorru lura għal Marzu ta’ din is-sena), li diġà joffri karatteristiċi tajbin, bħal rappreżentazzjoni viżiva tal-istatus attwali tal-cluster u l-ġestjoni tal-oġġetti tiegħu. Pożizzjonat bħala "interface f'ħin reali", għaliex jaġġorna awtomatikament id-dejta murija mingħajr ma teħtieġ li jġedded il-paġna fil-browser.
OpenShift Console - interface tal-web minn Red Hat OpenShift, li, madankollu, se ġġib żviluppi oħra tal-proġett fil-cluster tiegħek, li mhux adattat għal kulħadd.
Kubernator huwa proġett interessanti, maħluq bħala interface ta 'livell aktar baxx (minn Dashboard) bil-kapaċità li tara l-oġġetti kollha tal-cluster. Madankollu, jidher li l-iżvilupp tiegħu waqaf.
Polaris - biss il-ġurnata l-oħra ħabbar proġett li jgħaqqad il-funzjonijiet ta 'panel (juri l-istat attwali tal-cluster, iżda ma jimmaniġġjax l-oġġetti tiegħu) u awtomatika "validazzjoni tal-aħjar prattiki" (jiċċekkja l-cluster għall-korrettezza tal-konfigurazzjonijiet ta' Deployments li qed jaħdmu fih).
Minflok il-konklużjonijiet
Dashboard hija għodda standard għall-clusters ta' Kubernetes li naqdu. L-integrazzjoni tagħha ma 'GitLab saret ukoll parti mill-installazzjoni default tagħna, peress li ħafna żviluppaturi huma eċċitati dwar il-kapaċitajiet li għandhom ma' dan il-panel.
Kubernetes Dashboard perjodikament għandu alternattivi mill-komunità Open Source (u aħna kuntenti li nqisuhom), iżda f'dan l-istadju nibqgħu b'din is-soluzzjoni.