Yekbûna Bikarhênerên Kubernetes Dashboard û GitLab
Kubernetes Dashboard amûrek hêsan-karanîna ye ku ji bo bidestxistina agahdariya nûjen di derheqê komek xebitandinê û rêveberiya hindiktirîn a wê de ye. Dema ku gihîştina van kapasîteyan ne tenê ji hêla rêvebiran / endezyarên DevOps-ê ve, lê ji hêla wan ên ku kêm bi konsolê ve girêdayî ne û/an jî niyeta wan tune ku bi hemî tevliheviyên danûstendina bi kubectl û re mijûl bibin, hûn hîn bêtir qîmet dikin. karûbarên din. Ev bi me re çêbû: pêşdebiran dixwest ku zû bigihîjin navbeynkariya webê ya Kubernetes, û ji ber ku em GitLab bikar tînin, çareserî bi xwezayî hat.
Çima ev e?
Dibe ku pêşdebirên rasterast ji bo karên debugkirinê bi amûrek mîna K8s Dashboard re eleqedar bibin. Carinan hûn dixwazin têketin û çavkaniyan bibînin, û carinan jî podokan bikujin, Dabeşkirin/StatefulSets mezin bikin û tewra biçin konsolê konteynerê (di heman demê de daxwaz hene ku, lêbelê, rêyek din jî heye - mînakî, bi riya kubectl-debug).
Wekî din, ji bo rêveberan demek psîkolojîk heye dema ku ew dixwazin li komê binihêrin - bibînin ku "her tişt kesk e", û bi vî rengî xwe piştrast bikin ku "her tişt dixebite" (ku, bê guman, pir têkildar e ... lê ev li derveyî çarçoveya gotarê ye).
Wekî pergala CI ya standard me heye sepandin GitLab: hemî pêşdebiran jî wê bikar tînin. Ji ber vê yekê, ji bo peydakirina gihîştina wan, mentiqî bû ku Dashboard bi hesabên GitLab re were yek kirin.
Ez ê her weha destnîşan bikim ku em NGINX Ingress bikar tînin. Ger hûn bi kesên din re bixebitin çareseriyên ketinê, hûn ê hewce bikin ku ji bo destûrnameyê serbixwe analogên şîroveyan bibînin.
Hewl didin entegrasyonê
Sazkirina dashboardê
Haydar: Heke hûn ê gavên jêrîn dubare bikin, wê hingê - ji bo ku ji operasyonên nehewce dûr bikevin - pêşî sernavê jêrîn bixwînin.
Ji ber ku em vê entegrasyonê di gelek saziyan de bikar tînin, me sazkirina wê otomatîk kiriye. Çavkaniyên ku ji bo vê yekê hewce ne têne weşandin depoya taybetî ya GitHub. Ew li ser bingeha mîhengên YAML-ê yên piçûk hatine guheztin ji depoya fermî Dashboard, û her weha skrîptek Bash ji bo bicîhkirina bilez.
Skrîpt Dashboardê di komê de saz dike û wê ji bo entegrasyonê bi GitLab re mîheng dike:
$ ./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
Lêbelê, berî ku hûn bikar bînin, hûn hewce ne ku biçin GitLab: Qada Rêveber → Serlêdan - û ji bo panela pêşerojê serîlêdanek nû lê zêde bikin. Ka em jê re bibêjin "dashboarda kubernetes":
Di encama lê zêdekirina wê de, GitLab dê hashes peyda bike:
Ew in yên ku wekî argumanên senaryoyê têne bikar anîn. Wekî encamek, sazkirinê wiha xuya dike:
Piştî wê, em kontrol bikin ku her tişt dest pê kir:
$ 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
Lêbelê, zû an dereng dê her tişt dest pê bike destûr dê tavilê nexebite! Rastî ev e ku di wêneya hatî bikar anîn de (rewşa di wêneyên din de mîna hev e) pêvajoya girtina beralîkirina di vegerê de bi xeletî tête bicîh kirin. Ev rewş rê li ber vê yekê vedike ku oauth cookieya ku oauth bixwe ji me re peyda dike ji holê radike...
Pirsgirêk bi avakirina wêneya xweya oauth ya bi patchê ve tê çareser kirin.
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
Naha hûn dikarin wêneyê ava bikin û têxin nav GitLab me. Next in manifests/kube-dashboard-oauth2-proxy.yaml karanîna wêneya xwestinê destnîşan bikin (wê bi ya xwe veguherînin):
image: docker.io/colemickens/oauth2_proxy:latest
Ger qeydek we heye ku ji hêla destûrnameyê ve hatî girtin, ji bîr nekin ku hûn ji bo kişandina wêneyan karanîna nepeniyek zêde bikin:
Wext e ku hûn biçin Dashboard û bişkokek têketinê ya kevnar bibînin:
Piştî ku li ser wê bikirtînin, GitLab dê silavê bide me, pêşniyar dike ku hûn têkevin rûpela xwe ya asayî (bê guman, heke me berê li wir têketî nebûne):
Em bi pêbaweriyên GitLab re têkevin - û her tişt pêk tê:
Li ser taybetmendiyên Dashboard
Ger hûn pêşdebirek in ku berê bi Kubernetes re nexebitî, an jî tenê ji ber hin sedeman berê bi Dashboard re rûbirû nebûye, ez ê hin kapasîteyên wê diyar bikim.
Pêşîn, hûn dikarin bibînin ku "her tişt kesk e":
Daneyên berfirehtir ji bo podan jî hene, wek guherbarên jîngehê, wêneya dakêşandî, argumanên destpêkirinê, û rewşa wan:
Sazkirin xwedî statûyên xuya ne:
...û hûrguliyên din:
... û di heman demê de şiyana mezinkirina bicîhkirinê jî heye:
Encama vê operasyonê:
Di nav taybetmendiyên din ên bikêr de ku berê di destpêka gotarê de hatine behs kirin, dîtina têketin e:
... û fonksiyona têketina konsolê konteynerê ya podê hilbijartî:
Mînakî, hûn dikarin li ser sînoran / daxwazên li ser girêkan jî binêrin:
Bê guman, ev ne hemî kapasîteyên panelê ne, lê ez hêvî dikim ku hûn ramana gelemperî bistînin.
Dezawantajên entegrasyonê û Dashboard
Di entegrasyona diyarkirî de tune kontrola gihîştinê. Bi wê re, hemî bikarhênerên ku bigihîjin GitLab gihîştina Dashboard-ê digirin. Di Dashboard bixwe de heman gihîştina wan heye, li gorî mafên Dashboard bixwe, ku di RBAC de têne diyarkirin. Eşkere ye ku ev ji bo her kesî ne guncaw e, lê ji bo doza me bes derket.
Di nav dezawantajên berbiçav ên di Dashboard bixwe de, ez van tiştan destnîşan dikim:
ne gengaz e ku meriv bikeve konsolê konteynera destpêkê;
ne gengaz e ku meriv Deployments û StatefulSets biguherîne, her çend ev dikare di ClusterRole de were rast kirin;
Lihevhatina Dashboard bi guhertoyên herî dawî yên Kubernetes û paşeroja projeyê pirsan derdixe holê.
Pirsgirêka dawî baldariyek taybetî heq dike.
Rewş û alternatîfên Dashboard
Tabloya lihevhatina dashboardê bi berdanên Kubernetes re, ku di guhertoya herî dawî ya projeyê de hatî pêşkêş kirin (v1.10.1), ne pir kêfxweş:
Tevî vê yekê, heye (jixwe di meha Çile de hate pejirandin) PR # 3476, ku piştgiriya K8s 1.13 ragihand. Wekî din, di nav pirsgirêkên projeyê de hûn dikarin referansên bikarhênerên ku bi panelê re di K8s 1.14 de dixebitin bibînin. Paşan, dike di binyada koda projeyê de nesekine. Ji ber vê yekê (kêmtir!) Rewşa rastîn a projeyê ne ew qas xirab e ku ew yekem ji tabloya lihevhatina fermî xuya dike.
Di dawiyê de, alternatîfên Dashboard hene. Di nav wan de:
K8Dash - navgînek ciwan (komên yekem ji Adara vê salê vedigerin), ku jixwe taybetmendiyên baş pêşkêşî dike, wek nimûne nûneriya dîtbarî ya rewşa heyî ya komê û rêveberiya tiştên wê. Wekî "navberek rast-dem" tête danîn, ji ber ku bêyî ku hewce bike ku hûn rûpelê di gerokê de nûve bikin, bixweber daneyên xuyangkirî nûve dike.
Konsola OpenShift - navgînek malperê ji Red Hat OpenShift, ku, lêbelê, dê pêşkeftinên din ên projeyê bîne koma we, ku ji bo her kesî ne maqûl e.
Kubernator projeyek balkêş e, ku wekî navgînek nizm (ji Dashboard) bi şiyana dîtina hemî tiştên komê hatî afirandin. Lêbelê, wusa dixuye ku pêşveçûna wê rawestiyaye.
Polaris - tenê roja din ragihand projeyek ku fonksiyonên panelê pêk tîne (rewşa heyî ya komê nîşan dide, lê tiştên wê îdare nake) û otomatîkî "erêkirina pratîkên çêtirîn" (komê ji bo rastbûna veavakirinên Dabeşkirinên ku tê de têne xebitandin kontrol dike).
Di şûna encam de
Dashboard ji bo komên Kubernetes ên ku em xizmet dikin amûrek standard e. Yekbûna wê ya bi GitLab re jî bûye beşek ji sazkirina meya xwerû, ji ber ku gelek pêşdebiran ji kapasîteyên ku bi vê panelê re hene kêfxweş in.
Kubernetes Dashboard bi awayekî periyodîk alternatîfên ji civata Çavkaniya Vekirî heye (û em kêfxweş in ku wan bifikirin), lê di vê qonaxê de em bi vê çareseriyê re dimînin.