Integrazione di Kubernetes Dashboard è Users GitLab
Kubernetes Dashboard hè un strumentu faciule d'utilizà per uttene infurmazione aghjurnata nantu à u vostru cluster in esecuzione è gestione cù u minimu sforzu. Cuminciate à apprezzà ancu di più quandu l'accessu à queste funzioni hè necessariu micca solu da l'amministratori / ingegneri DevOps, ma ancu da quelli chì sò menu abituati à a cunsola è / o ùn anu micca intenzione di trattà cù tutte l'intricacies di interazzione cù kubectl è altre utilità. Questu hè accadutu cun noi: i sviluppatori vulianu un accessu rapidu à l'interfaccia web di Kubernetes, è postu chì avemu usatu GitLab, a suluzione hè stata naturale.
Perchè hè questu?
I sviluppatori diretti ponu esse interessatu in un strumentu cum'è K8s Dashboard per i travaglii di debugging. Calchì volta vulete vede logs è risorse, è à volte uccidete pods, scale Deployments/StatefulSets, è ancu andà à a cunsola di cuntainer (ci sò ancu richieste per quale, però, ci hè un altru modu - per esempiu, attraversu kubectl-debug).
Inoltre, ci hè un mumentu psicologicu per i gestori quandu volenu fighjà u cluster - per vede chì "tuttu hè verde", è cusì rassicurate chì "tuttu hè travagliatu" (chì, sicuru, hè assai relative ... ma questu hè fora di u scopu di l'articulu).
Cum'è un sistema CI standard avemu appiicatu GitLab: tutti i sviluppatori l'utilizanu ancu. Dunque, per furnisce l'accessu, era logicu integrà Dashboard cù cunti GitLab.
Aghju nutatu ancu chì usemu NGINX Ingress. Sè vo travaglià cù l'altri suluzione di ingressu, avete bisognu di truvà indipindentamente analogi di annotazioni per l'autorizazione.
Pruvate l'integrazione
Installazione di u dashboard
Attenzione: Sè vo site per ripetiri i passi sottu, allora - per evità operazioni innecessarii - leghjite prima à a subrubrica successiva.
Siccomu usemu sta integrazione in parechje installazioni, avemu automatizatu a so installazione. I fonti necessarii per questu sò publicati in repository GitHub speciale. Sò basati nantu à cunfigurazioni YAML ligeramente modificate da repository ufficiale di Dashboard, è ancu un script Bash per una implementazione rapida.
U script stalla Dashboard in u cluster è u cunfigura per l'integrazione cù 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
Tuttavia, prima di usà, avete bisognu à andà in GitLab: Admin area → Applicazioni - è aghjunghje una nova applicazione per u futuru pannellu. Chjamemu "kubernetes dashboard":
In u risultatu di l'aghjunghje, GitLab furnisce l'hash:
Sò quelli chì sò usati com'è argumenti à u script. In u risultatu, l'installazione s'assumiglia cusì:
$ 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
Prima o poi tuttu hà da principià, però l'autorizazione ùn funziona micca immediatamente! U fattu hè chì in l'imaghjini utilizati (a situazione in altre imagine hè simile) u prucessu di catturà una redirezzione in u callback hè implementatu incorrectamente. Sta circustanza porta à u fattu chì oauth sguassate u cookie chì oauth stessu ci furnisce...
U prublema hè risolta custruendu a vostra propria maghjina di auth cù un patch.
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
Avà pudete custruisce l'imaghjini è spinghjela in u nostru GitLab. Next in manifests/kube-dashboard-oauth2-proxy.yaml indicà l'usu di l'imaghjini desiderate (sustituitu cù u vostru propiu):
image: docker.io/colemickens/oauth2_proxy:latest
Se tenete un registru chì hè chjusu da l'autorizazione, ùn vi scurdate di aghjunghje l'usu di un sicretu per pull images:
Hè ora di andà à u Dashboard è truvà un buttone di login piuttostu arcaicu:
Dopu à cliccà nant'à ellu, GitLab ci salutarà, offrendu di accede à a so pagina abituale (di sicuru, s'ellu ùn avemu micca cunnessu prima):
Entramu cù credenziali GitLab - è tuttu hè fattu:
À propositu di e funzioni di Dashboard
Sè vo site un sviluppatore chì ùn hà micca travagliatu cù Kubernetes prima, o simpricimenti per una certa ragione ùn hà micca scontru Dashboard prima, vi illustraraghju alcune di e so capacità.
Prima, pudete vede chì "tuttu hè verde":
Dati più detallati sò ancu dispunibili per i pods, cum'è variabili di l'ambiente, l'imagine scaricata, l'argumenti di lanciamentu è u so statu:
E implementazioni anu stati visibili:
... è altri dettagli:
... è ci hè ancu a capacità di scala l'implementazione:
U risultatu di sta operazione:
Tra l'altri funzioni utili digià citati à u principiu di l'articulu hè a visualizazione di i logs:
... è a funzione per accede à a cunsola di u containeru di u pod sceltu:
Per esempiu, pudete ancu guardà i limiti / dumande nantu à i nodi:
Di sicuru, queste ùn sò micca tutte e capacità di u pannellu, ma speru chì avete l'idea generale.
Svantaghji di integrazione è Dashboard
In l'integrazione descritta ùn ci hè micca cuntrollu di accessu. Cù questu, tutti l'utilizatori cù qualsiasi accessu à GitLab accede à u Dashboard. Hanu u listessu accessu à u Dashboard stessu, chì currisponde à i diritti di u Dashboard stessu, chì sò definiti in RBAC. Ovviamente, questu ùn hè micca adattatu per tutti, ma per u nostru casu hè diventatu abbastanza.
Trà i svantaghji notevoli in u Dashboard stessu, aghju nutatu i seguenti:
hè impussibile di entre in a cunsola di u containeru init;
hè impussibile di edità Deployments è StatefulSets, ancu s'ellu pò esse riparatu in ClusterRole;
A cumpatibilità di Dashboard cù l'ultime versioni di Kubernetes è u futuru di u prugettu ponenu dumande.
L'ultimu prublema meriteghja una attenzione particulari.
Status dashboard è alternative
Tavola di cumpatibilità di Dashboard cù e versioni di Kubernetes, presentata in l'ultima versione di u prugettu (v1.10.1), micca assai felice:
Malgradu questu, ci hè (dighjà aduttatu in ghjennaghju) PR # 3476, chì annuncia u supportu per K8s 1.13. Inoltre, trà i prublemi di u prughjettu pudete truvà referenze à l'utilizatori chì travaglianu cù u pannellu in K8s 1.14. Infine, s'impegna in a basa di codice di u prughjettu ùn ferma micca. Allora (almenu!) U statutu attuale di u prugettu ùn hè micca male cum'è prima pareva da a tabella di cumpatibilità ufficiale.
Infine, ci sò alternative à Dashboard. À mezu à elli:
K8 Dash - una ghjovana interfaccia (i primi cummitti datanu di marzu di questu annu), chì offre digià boni funziunalità, cum'è una rapprisintazioni visuale di u statutu attuale di u cluster è a gestione di i so ogetti. Posizionatu cum'è una "interfaccia in tempu reale", perchè aghjurnà automaticamente i dati affissati senza avè bisognu di rinfriscà a pagina in u navigatore.
OpenShift Console - una interfaccia web da Red Hat OpenShift, chì, però, purterà altri sviluppi di u prugettu à u vostru cluster, chì ùn hè micca adattatu per tutti.
Kubernator hè un prughjettu interessante, creatu cum'è una interfaccia di livellu più bassu (che Dashboard) cù a capacità di vede tutti l'ogetti di cluster. Tuttavia, pare chì u so sviluppu hè firmatu.
Polaris - solu l'altru ghjornu annunziatu un prughjettu chì combina e funzioni di un pannellu (mostra u statu attuale di u cluster, ma ùn gestisce micca i so ogetti) è "validazione di e migliori pratiche" automatica (verifica u cluster per a correttezza di e cunfigurazioni di Deployments in esecuzione).
Invece di cunclusioni
Dashboard hè un strumentu standard per i clusters Kubernetes chì serve. A so integrazione cù GitLab hè ancu diventata parte di a nostra installazione predeterminata, postu chì parechji sviluppatori sò entusiasmati di e capacità chì anu cun questu pannellu.
Kubernetes Dashboard periodicamente hà alternative da a cumunità Open Source (è simu felici di cunsiderà elli), ma in questu stadiu fermemu cù sta suluzione.