Kubernetes Dashboard eta GitLab erabiltzaileen integrazioa
Kubernetes Dashboard tresna erabilerraza da zure kluster exekutatzen ari den informazio eguneratua lortzeko eta gutxieneko esfortzuarekin kudeatzeko. Are gehiago estimatzen hasten zara gaitasun horietarako sarbidea administratzaile/DevOps ingeniariek ez ezik, kontsolarekin hain ohituta daudenek eta/edo kubectl eta kubectl-ekin elkarreraginaren zailtasun guztiei aurre egiteko asmorik ez dutenek ere. beste utilitate batzuk. Hori gertatu zen gurekin: garatzaileek Kubernetes web-interfazerako sarbide azkarra nahi zuten, eta GitLab erabiltzen dugunez, irtenbidea berez etorri zen.
Zergatik da hau?
Garatzaile zuzenek K8s Dashboard bezalako tresna batean interesa izan dezakete arazketa-zereginetarako. Batzuetan, erregistroak eta baliabideak ikusi nahi dituzu, eta beste batzuetan lekak hil, Inplementazioak/StatefulSets eskalatu eta edukiontzien kontsolara ere joan nahi dituzu (eskaerak ere badaude, eta, hala ere, beste modu bat dago, adibidez, bidez. kubectl-araztea).
Horrez gain, kudeatzaileek klusterrera begiratu nahi dutenean une psikologiko bat dago βΒ«dena berdeaΒ» dela ikustea, eta, horrela, Β«dena funtzionatzen ari delaΒ» ziurtatzeko (oso erlatiboa, noski...). baina hau artikuluaren esparrutik kanpo dago).
CI sistema estandar gisa daukagu aplikatuta GitLab: garatzaile guztiek ere erabiltzen dute. Hori dela eta, sarbidea emateko, logikoa zen Dashboard GitLab kontuekin integratzea.
NGINX Ingress erabiltzen dugula ere ohartuko naiz. Besteekin lan egiten baduzu sarrerako irtenbideak, baimena lortzeko oharpenen analogoak modu independentean aurkitu beharko dituzu.
Integrazioa saiatzen
Arbelaren instalazioa
Arreta: Beheko pausoak errepikatuko badituzu, orduan - alferrikako eragiketak saihesteko - irakurri lehenik hurrengo azpititulara.
Instalazio askotan integrazio hau erabiltzen dugunez, bere instalazioa automatizatu dugu. Horretarako behar diren iturriak urtean argitaratu dira GitHub biltegi berezia. Apur bat aldatutako YAML konfigurazioetan oinarritzen dira Dashboard biltegi ofiziala, baita inplementazio azkarra egiteko Bash script bat ere.
Scriptak Dashboard klusterrean instalatzen du eta GitLab-ekin integratzeko konfiguratzen du:
$ ./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
Hala ere, erabili aurretik, GitLab-era joan behar duzu: Admin area β Aplikazioak - eta aplikazio berri bat gehitu etorkizuneko panelerako. Dei diezaiogun "kubernetes panela":
Gehitzearen ondorioz, GitLab-ek hashak emango ditu:
Gidoiaren argudio gisa erabiltzen direnak dira. Ondorioz, instalazioa honelakoa da:
$ 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
Lehenago edo beranduago dena hasiko da, ordea baimenak ez du berehala funtzionatuko! Kontua da erabilitako irudian (beste irudietan egoera antzekoa da) dei-itzuleran birbideratze-prozesua gaizki inplementatzen dela. Zirkunstantzia honek oauth-ek oauth-ek berak ematen digun cookiea ezabatzen du...
Arazoa zure oauth irudia adabaki batekin eraikiz konpontzen da.
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
Orain irudia eraiki dezakezu eta gure GitLab-era eraman dezakezu. Hurrengoan manifests/kube-dashboard-oauth2-proxy.yaml adierazi nahi den irudiaren erabilera (ordeztu zurearekin):
image: docker.io/colemickens/oauth2_proxy:latest
Baimenduz itxita dagoen erregistro bat baduzu, ez ahaztu tira irudietarako sekretu baten erabilera gehitzea:
Dashboard-era joan eta saioa hasteko botoi nahiko arkaiko bat aurkitzeko garaia da:
Bertan klik egin ondoren, GitLab-ek agurtuko gaitu, bere ohiko orrialdean saioa hasteko eskainiz (noski, aldez aurretik bertan sartu ez bagara):
GitLab kredentzialekin hasten gara saioa eta dena eginda dago:
Arbelaren eginbideei buruz
Aurretik Kubernetesekin lan egin ez duen garatzailea bazara edo, besterik gabe, arrazoiren batengatik aurretik Dashboard-a topatu ez baduzu, bere gaitasun batzuk azalduko ditut.
Lehenik eta behin, "dena berdea" dela ikus dezakezu:
Datu zehatzagoak ere eskuragarri daude leketarako, hala nola ingurune-aldagaiak, deskargatutako irudia, abiarazteko argumentuak eta haien egoera:
Inplementazioek egoera ikusgaiak dituzte:
...eta beste xehetasun batzuk:
... eta hedapena eskalatzeko gaitasuna ere badago:
Eragiketa honen emaitza:
Artikuluaren hasieran aipatutako beste ezaugarri erabilgarri batzuen artean erregistroak ikustea dago:
... eta hautatutako podaren edukiontzi-kontsolan saioa hasteko funtzioa:
Adibidez, nodoetako mugak/eskaerak ere ikus ditzakezu:
Jakina, hauek ez dira panelaren gaitasun guztiak, baina ideia orokorra jasotzea espero dut.
Integrazioaren eta Arbelaren desabantailak
Deskribatutako integrazioan ez dago sarbide kontrola. Horrekin, GitLab-en edozein sarbide duten erabiltzaile guztiek Arbelerako sarbidea dute. Sarbide bera dute Arbelean bertan, Arbelaren beraren eskubideei dagozkienak, zeina RBAC-en definitzen dira. Jakina, hau ez da guztientzako egokia, baina gure kasuan nahikoa izan da.
Arbelean bertan dauden desabantaila nabarmenen artean, honako hauek nabarmentzen ditut:
ezinezkoa da init edukiontziaren kontsolara sartzea;
ezinezkoa da Deployments eta StatefulSets editatzea, nahiz eta hori ClusterRole-n konpondu daitekeen;
Dashboard-ek Kubernetes-en azken bertsioekin duen bateragarritasuna eta proiektuaren etorkizuna zalantzak sortzen ditu.
Azken arazoak arreta berezia merezi du.
Arbelaren egoera eta alternatibak
Kubernetes-en bertsioekin panelen bateragarritasun-taula, proiektuaren azken bertsioan aurkeztua (v1.10.1), ez oso pozik:
Hala ere, badago (dagoeneko urtarrilean onartua) PR # 3476, K8s 1.13rako laguntza iragartzen duena. Horrez gain, proiektuaren gaien artean panelarekin lan egiten duten erabiltzaileen erreferentziak aurki ditzakezu K8s 1.14. Azkenik, konpromisoa hartzen du proiektuaren kode oinarrian sartu ez gelditu. Beraz, (gutxienez!) proiektuaren benetako egoera ez da bateragarritasun-taula ofizialean dirudien bezain txarra.
Azkenik, Dashboard-en alternatibak daude. Haien artean:
K8Dash β interfaze gazte bat (lehen konpromisoak aurtengo martxokoak dira), dagoeneko ezaugarri onak eskaintzen dituena, hala nola klusterren egungo egoeraren irudikapen bisuala eta bere objektuen kudeaketa. "Denbora errealeko interfaze" gisa kokatuta, zeren automatikoki eguneratzen ditu bistaratutako datuak arakatzailean orria freskatu beharrik gabe.
OpenShift kontsola - Red Hat OpenShift-en web-interfaze bat, eta, hala ere, proiektuaren beste garapen batzuk ekarriko ditu zure klusterera, ez denentzat egokia.
Kubernator proiektu interesgarria da, maila baxuagoko (Arbela baino) interfaze gisa sortua, kluster objektu guztiak ikusteko gaitasuna duena. Hala ere, badirudi bere garapena gelditu egin dela.
Polaris - Beste egunean iragarri panel baten funtzioak (klusterren uneko egoera erakusten du, baina ez ditu bere objektuak kudeatzen) eta "praktika egokien baliozkotze" automatikoa (klusterrak bertan exekutatzen diren Inplementazioen konfigurazioen zuzentasuna egiaztatzen du) konbinatzen dituen proiektua.
Ondorioen ordez
Arbel tresna estandar bat da zerbitzatzen ditugun Kubernetes klusterretarako. GitLab-ekin duen integrazioa gure instalazio lehenetsiaren parte bihurtu da, garatzaile asko panel honekin dituzten gaitasunekin ilusioz baitaude.
Kubernetes Dashboard-ek aldian-aldian Iturburu Irekiko komunitatearen alternatibak ditu (eta pozik hartzen ditugu kontuan), baina fase honetan irtenbide honekin jarraitzen dugu.