Ang Kubernetes Dashboard kay dali gamiton nga himan para sa pagkuha sa pinakabag-o nga impormasyon bahin sa imong running cluster ug pagdumala niini sa gamay nga paningkamot. Nagsugod ka sa pagpabili niini labi pa kung ang pag-access sa kini nga mga kapabilidad kinahanglan dili lamang sa mga administrador / mga inhenyero sa DevOps, apan usab sa mga dili kaayo naanad sa console ug / o wala’y katuyoan nga atubangon ang tanan nga mga kakuti sa pagpakig-uban sa kubectl ug ubang mga utilities. Nahitabo kini kanamo: gusto sa mga developer ang dali nga pag-access sa interface sa web sa Kubernetes, ug tungod kay gigamit namon ang GitLab, natural nga moabut ang solusyon.
Ngano man ni?
Ang mga direktang developer mahimong interesado sa usa ka himan sama sa K8s Dashboard alang sa mga buluhaton sa pag-debug. Usahay gusto nimo nga tan-awon ang mga troso ug mga kahinguhaan, ug usahay patyon ang mga pod, scale Deployments/StatefulSets, ug bisan pa moadto sa container console (adunay ingon nga mga hangyo, diin, bisan pa, adunay lain nga paagi - pananglitan, pinaagi sa kubectl-debug).
Dugang pa, adunay usa ka sikolohikal nga panahon alang sa mga manedyer kung gusto nila nga tan-awon ang kumpol - aron makita nga "ang tanan berde", ug sa ingon nagpasalig sa ilang kaugalingon nga "ang tanan nagtrabaho" (nga, siyempre, relatibo kaayo ... apan kini lapas pa sa kasangkaran sa artikulo).
Ingon usa ka sumbanan nga sistema sa CI nga naa kanato gipadapat GitLab: gigamit usab kini sa tanan nga mga developer. Busa, aron mahatagan sila og access, makatarunganon nga i-integrate ang Dashboard sa mga account sa GitLab.
Mamatikdan usab nako nga gigamit namon ang NGINX Ingress. Kung nagtrabaho ka sa uban mga solusyon sa pagsulod, kinahanglan nimo nga independente nga mangita mga analogue sa mga anotasyon alang sa pagtugot.
Pagsulay sa paghiusa
Pag-instalar sa dashboard
Pagtagad: Kung imong sublion ang mga lakang sa ubos, nan - aron malikayan ang dili kinahanglan nga mga operasyon - basaha una ang sunod nga subheading.
Tungod kay gigamit namon kini nga panagsama sa daghang mga instalasyon, awtomatiko namon ang pag-install niini. Ang mga tinubdan nga gikinahanglan alang niini gimantala sa espesyal nga GitHub repository. Gibase kini sa gamay nga giusab nga mga configuration sa YAML gikan sa opisyal nga dashboard repository, ingon man usa ka script sa Bash alang sa dali nga pag-deploy.
Ang script nag-install sa Dashboard sa cluster ug gi-configure kini alang sa panagsama sa 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
Bisan pa, sa dili pa kini gamiton, kinahanglan ka nga moadto sa GitLab: Admin area → Applications - ug pagdugang usa ka bag-ong aplikasyon alang sa umaabot nga panel. Tawgon nato kini nga "kubernetes dashboard":
Ingon usa ka sangputanan sa pagdugang niini, ang GitLab maghatag sa mga hash:
Sila ang gigamit isip argumento sa script. Ingon usa ka sangputanan, ang pag-install ingon niini:
Human niana, atong susihon nga ang tanan nagsugod:
$ 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
Sa madugay o sa madali ang tanan magsugod, hinoon ang pagtugot dili molihok dayon! Ang tinuod mao nga sa hulagway nga gigamit (ang sitwasyon sa ubang mga hulagway susama) ang proseso sa pagdakop sa usa ka redirect sa callback gipatuman nga dili husto. Kini nga kahimtang nagdala sa kamatuoran nga ang oauth nagwagtang sa cookie nga gihatag mismo sa oauth kanato...
Nasulbad ang problema pinaagi sa paghimo sa imong kaugalingon nga imahe sa oauth nga adunay usa ka patch.
Patch oauth ug i-install pag-usab
Sa pagbuhat niini, atong gamiton ang mosunod nga Dockerfile:
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
Karon mahimo nimong tukuron ang imahe ug iduso kini sa among GitLab. Sunod sa manifests/kube-dashboard-oauth2-proxy.yaml ipakita ang paggamit sa gusto nga imahe (ilisan kini sa imong kaugalingon):
image: docker.io/colemickens/oauth2_proxy:latest
Kung ikaw adunay usa ka rehistro nga gisirhan pinaagi sa pagtugot, ayaw kalimti nga idugang ang paggamit sa usa ka sekreto alang sa pagbitad sa mga imahe:
imagePullSecrets:
- name: gitlab-registry
... ug idugang ang sekreto mismo alang sa rehistro:
Panahon na sa pag-adto sa Dashboard ug pagpangita usa ka karaan nga buton sa pag-login:
Pagkahuman sa pag-klik niini, ang GitLab motimbaya kanamo, nga nagtanyag nga mag-log in sa naandan nga panid niini (siyempre, kung wala pa kami naka-log in kaniadto):
Nag-log in kami gamit ang mga kredensyal sa GitLab - ug nahuman na ang tanan:
Mahitungod sa mga bahin sa Dashboard
Kung ikaw usa ka developer nga wala pa nagtrabaho uban sa Kubernetes kaniadto, o tungod lang sa pipila ka rason nga wala makasugat sa Dashboard kaniadto, akong ihulagway ang pipila sa mga kapabilidad niini.
Una, imong makita nga "ang tanan berde":
Ang mas detalyado nga datos magamit usab alang sa mga pod, sama sa mga variable sa palibot, na-download nga imahe, mga argumento sa paglansad, ug ang ilang estado:
Ang mga deployment adunay makita nga mga kahimtang:
...ug uban pang mga detalye:
... ug adunay usab abilidad sa pag-scale sa deployment:
Ang resulta niini nga operasyon:
Lakip sa ubang mapuslanong bahin nga nahisgotan na sa sinugdanan sa artikulo mao ang pagtan-aw sa mga troso:
... ug ang function sa pag-log in sa container console sa pinili nga pod:
Pananglitan, mahimo usab nimo tan-awon ang mga limitasyon / hangyo sa mga node:
Siyempre, dili kini tanan nga mga kapabilidad sa panel, apan nanghinaut ko nga makuha nimo ang kinatibuk-ang ideya.
Mga disbentaha sa panagsama ug Dashboard
Sa gihulagway nga panagsama wala kontrol sa pag-access. Uban niini, ang tanan nga mga tiggamit nga adunay bisan unsang pag-access sa GitLab makakuha og access sa Dashboard. Sila adunay parehas nga pag-access sa Dashboard mismo, nga katumbas sa mga katungod sa Dashboard mismo, nga gihubit sa RBAC. Dayag nga dili kini angay alang sa tanan, apan alang sa among kaso kini igo na.
Lakip sa mamatikdan nga mga disbentaha sa Dashboard mismo, akong namatikdan ang mosunod:
imposible nga makasulod sa console sa init nga sudlanan;
imposible nga i-edit ang Mga Deployment ug StatefulSets, bisan kung mahimo kini nga ayo sa ClusterRole;
Ang pagkaangay sa dashboard sa pinakabag-o nga bersyon sa Kubernetes ug ang kaugmaon sa proyekto nagpatunghag mga pangutana.
Ang kataposang problema angayan ug espesyal nga pagtagad.
Status sa dashboard ug mga alternatibo
Dashboard compatibility table uban sa Kubernetes releases, nga gipresentar sa pinakabag-o nga bersyon sa proyekto (v1.10.1), dili kaayo malipayon:
Bisan pa niini, adunay (gisagop na sa Enero) PR #3476, nga nagpahibalo sa suporta alang sa K8s 1.13. Dugang pa, taliwala sa mga isyu sa proyekto makit-an nimo ang mga pakisayran sa mga tiggamit nga nagtrabaho kauban ang panel sa K8s 1.14. Sa katapusan, nagpasalig ngadto sa code base sa proyekto ayaw paghunong. Mao nga (labing menos!) Ang aktuwal nga kahimtang sa proyekto dili ingon ka daotan sama sa una nga makita gikan sa opisyal nga lamesa sa pagpahiangay.
Sa katapusan, adunay mga alternatibo sa Dashboard. Lakip kanila:
K8Dash - usa ka batan-on nga interface (ang unang commit petsa balik sa Marso sa niini nga tuig), nga nagtanyag sa maayo nga mga bahin, sama sa usa ka biswal nga representasyon sa kasamtangan nga kahimtang sa cluster ug pagdumala sa mga butang niini. Gibutang isip usa ka "real-time nga interface", tungod kay awtomatiko nga gi-update ang gipakita nga datos nga wala kinahanglana nga i-refresh ang panid sa browser.
OpenShift Console - usa ka web interface gikan sa Red Hat OpenShift, nga, bisan pa, magdala sa ubang mga kalamboan sa proyekto sa imong cluster, nga dili angay alang sa tanan.
Kubernator mao ang usa ka makapaikag nga proyekto, nga gibuhat ingon sa usa ka ubos nga lebel (kaysa Dashboard) interface uban sa abilidad sa pagtan-aw sa tanang cluster nga mga butang. Bisan pa, ingon og nahunong ang pag-uswag niini.
Polaris - sa miaging adlaw lang gipahibalo usa ka proyekto nga naghiusa sa mga gimbuhaton sa usa ka panel (nagpakita sa kasamtangan nga kahimtang sa cluster, apan wala nagdumala sa mga butang niini) ug awtomatik nga "pagpamatuod sa labing maayo nga mga gawi" (pagsusi sa cluster alang sa pagkahusto sa mga configuration sa mga Deployment nga nagdagan niini).
Inay mga konklusyon
Ang dashboard kay usa ka standard nga himan para sa Kubernetes clusters nga among gialagaran. Ang panagsama niini sa GitLab nahimo usab nga bahin sa among default nga pag-install, tungod kay daghang mga developer ang naghinamhinam bahin sa mga kapabilidad nga naa nila sa kini nga panel.
Ang Kubernetes Dashboard matag karon ug unya adunay mga alternatibo gikan sa Open Source nga komunidad (ug nalipay kami sa pagkonsiderar niini), apan niining yugtoa nagpabilin kami niini nga solusyon.