Fampidirana ny Dashboard Kubernetes sy ny mpampiasa GitLab
Kubernetes Dashboard dia fitaovana mora ampiasaina hahazoana vaovao farany momba ny cluster mihazakazaka anao ary mitantana izany amin'ny ezaka kely indrindra. Manomboka mankasitraka azy io bebe kokoa ianao rehefa ilaina ny fidirana amin'ireo fahaiza-manao ireo, tsy ny administratera/injeniera DevOps ihany, fa ireo izay tsy dia zatra loatra amin'ny console ary/na tsy mikasa ny hiatrika ireo pitsopitsony rehetra amin'ny fifandraisana amin'ny kubectl sy fitaovana hafa. Nitranga taminay izany: te hidirana haingana amin'ny seha-tranonkala Kubernetes ny mpamorona, ary satria mampiasa GitLab izahay dia tonga ho azy ny vahaolana.
Nahoana izany?
Ny mpamorona mivantana dia mety ho liana amin'ny fitaovana toy ny K8s Dashboard ho an'ny debugging asa. Indraindray ianao te-hijery ny logs sy ny loharanon-karena, ary indraindray mamono pods, mizana Deployments/StatefulSets, ary na dia mandeha any amin'ny container console (misy koa ny fangatahana toy izany, izay, na izany aza, misy fomba hafa - ohatra, amin'ny alalan'ny kubectl-debug).
Ankoatr'izay, misy fotoana ara-tsaina ho an'ny mpitantana raha te hijery ny cluster izy ireo - hahita fa "maitso daholo ny zava-drehetra", ary noho izany dia manome toky ny tenany fa "miasa daholo ny zava-drehetra" (izay mazava ho azy fa tena mifanakaiky... fa izany dia mihoatra ny faritry ny lahatsoratra).
Amin'ny maha rafitra CI manara-penitra antsika Applied GitLab: mampiasa azy koa ny mpamorona rehetra. Noho izany, mba hanomezana azy ireo ny fidirana, dia lojika ny fampidirana Dashboard amin'ny kaonty GitLab.
Marihiko ihany koa fa mampiasa NGINX Ingress izahay. Raha miara-miasa amin'ny hafa ianao vahaolana miditra, mila mitady tsy miankina amin'ny analogues annotation ianao hahazoana alalana.
Miezaka ny fampidirana
Fametrahana dashboard
Caution: Raha hamerina ireo dingana etsy ambany ianao dia - mba hisorohana ny asa tsy ilaina - vakio aloha ny lohatenikely manaraka.
Koa satria mampiasa ity fampidirana ity amin'ny fametrahana maro izahay, dia nanao automatique ny fametrahana azy. Ny loharano ilaina amin'izany dia navoaka tao amin'ny tahiry GitHub manokana. Izy ireo dia mifototra amin'ny YAML configurations avy amin'ny tahiry ofisialy Dashboard, ary koa script Bash ho an'ny fametrahana haingana.
Ny script dia mametraka Dashboard ao amin'ny cluster ary manamboatra azy ho fampidirana amin'ny 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
Na izany aza, alohan'ny hampiasana azy dia mila mandeha any amin'ny GitLab: Admin area β Applications - ary ampio fampiharana vaovao ho an'ny tontonana ho avy. Andao hiantso azy io hoe "dashboard kubernetes":
Vokatry ny fanampiana azy, ny GitLab dia hanome ny hash:
Izy ireo no ampiasaina ho tohan-kevitra amin'ny script. Vokatr'izany dia toy izao ny fametrahana:
Aorian'izay, andeha hojerentsika fa nanomboka ny zava-drehetra:
$ 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
Na ho ela na ho haingana dia hanomboka ny zava-drehetra tsy mandeha avy hatrany ny fanomezan-dΓ lana! Ny zava-misy dia ao amin'ny sary ampiasaina (mitovitovy ny toe-javatra amin'ny sary hafa) ny dingan'ny fisamborana redirect amin'ny antso miverina dia ampiharina amin'ny fomba diso. Izany toe-javatra izany dia mitarika amin'ny hoe mamafa ny cookie izay omen'ny oauth ho antsika ny oauth...
Voavaha ny olana amin'ny fananganana ny sarinao oauth miaraka amin'ny patch.
Patch oauth ary apetraho indray
Mba hanaovana izany dia hampiasa ity Dockerfile manaraka ity izahay:
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
Afaka manangana ilay sary ianao izao ary manosika azy ao amin'ny GitLab. Manaraka in manifests/kube-dashboard-oauth2-proxy.yaml manondro ny fampiasana ny sary tiana (soloo amin'ny anao manokana):
image: docker.io/colemickens/oauth2_proxy:latest
Raha manana rejisitra mihidy amin'ny alΓ lan'ny fanomezan-dΓ lana ianao dia aza adino ny manampy ny fampiasana tsiambaratelo ho an'ny sary misintona:
imagePullSecrets:
- name: gitlab-registry
... ary ampio ny tsiambaratelo ho an'ny rejisitra:
Aorian'ny fanindriana azy dia hiarahaba antsika i GitLab, manolotra ny hiditra amin'ny pejy mahazatra azy (mazava ho azy, raha mbola tsy niditra tao izahay taloha):
Miditra amin'ny fahazoan-dΓ lana GitLab izahay - ary vita ny zava-drehetra:
Momba ny endri-javatra Dashboard
Raha mpamorona tsy niara-niasa tamin'ny Kubernetes taloha ianao, na noho ny antony tsy mbola nihaona tamin'ny Dashboard teo aloha, dia hasehoko an-tsary ny sasany amin'ireo fahaizany.
Voalohany, hitanao fa "maitso ny zava-drehetra":
Misy angona amin'ny antsipiriany bebe kokoa koa ho an'ny pods, toy ny fari-piainan'ny tontolo iainana, sary alaina, tohan-kevitra fanombohana, ary ny toerany:
Ny fametrahana dia manana sata hita maso:
...sy antsipiriany hafa:
... ary misy ihany koa ny fahafahana manitatra ny fametrahana:
Ny vokatr'ity hetsika ity:
Anisan'ireo endri-javatra mahasoa hafa efa voalaza tany am-piandohan'ny lahatsoratra ny fijerena logs:
... ary ny fiasa hidirana ao amin'ny console container an'ny pod voafantina:
Ohatra, azonao atao koa ny mijery ny fetra / fangatahana amin'ny nodes:
Mazava ho azy fa tsy ireo ihany no fahaiza-manaon'ny tontonana, fa manantena aho fa azonao ny hevitra ankapobeny.
Ny tsy fahampian'ny fampidirana sy ny Dashboard
Ao amin'ny fampidirana voalaza dia tsy misy fanaraha-maso ny fidirana. Miaraka amin'izany, ny mpampiasa rehetra manana fidirana amin'ny GitLab dia mahazo miditra amin'ny Dashboard. Mitovy ny fidirana ao amin'ny Dashboard mihitsy, mifanaraka amin'ny zon'ny Dashboard mihitsy, izay dia voafaritra ao amin'ny RBAC. Mazava ho azy fa tsy mety amin'ny olon-drehetra izany, fa ho an'ny raharahantsika dia efa ampy izany.
Na eo aza izany dia misy (efa noraisina tamin'ny volana Janoary) PR #3476, izay manambara fanohanana ny K8s 1.13. Ho fanampin'izany, amin'ireo olana momba ny tetikasa dia azonao atao ny mahita fanondroana ireo mpampiasa miasa miaraka amin'ny tontonana ao amin'ny K8s 1.14. Farany, manao ao amin'ny fototry ny kaody tetikasa aza mijanona. Noho izany (farafaharatsiny!) Ny tena satan'ny tetikasa dia tsy ratsy araka ny mety ho hita voalohany amin'ny tabilao mifanentana ofisialy.
Farany, misy safidy hafa amin'ny Dashboard. Anisan-dry zareo:
K8Dash - interface tsara tanora (ny voalohany nanao daty tamin'ny martsa tamin'ity taona ity), izay efa manolotra endri-javatra tsara, toy ny fanehoana an-tsary ny sata ankehitriny ny cluster sy ny fitantanana ny zavatra. Napetraka ho "interface amin'ny fotoana tena izy", satria manavao ho azy ny angona naseho nefa tsy mila manavao ny pejy ao amin'ny navigateur.
OpenShift Console - interface tsara an-tranonkala avy amin'ny Red Hat OpenShift, izay, na izany aza, dia hitondra fivoarana hafa amin'ny tetikasa ho an'ny cluster anao, izay tsy mety amin'ny rehetra.
Kubernator dia tetikasa mahaliana, noforonina ho interface tsara (mihoatra ny Dashboard) miaraka amin'ny fahafahana mijery ny zavatra cluster rehetra. Na izany aza, toa nitsahatra ny fivoarany.
Polaris - ny andro iray ihany nanambara tetikasa manambatra ny asan'ny tontonana (mampiseho ny toetry ny kluster ankehitriny, fa tsy mitantana ny zava-bitany) ary mandeha ho azy ny "validation of best practices" (manamarina ny cluster ny fahamarinan'ny configurations ny Deployments mandeha ao aminy).
Raha tokony ho fehin-kevitra
Ny dashboard dia fitaovana mahazatra ho an'ny cluster Kubernetes tompoinay. Ny fampidirana azy amin'ny GitLab dia lasa ampahany amin'ny fametrahana default, satria maro ny mpamorona no faly amin'ny fahaiza-manaony amin'ity tontonana ity.
Ny Dashboard Kubernetes indraindray dia manana safidy avy amin'ny vondrom-piarahamonina Open Source (ary faly izahay handinika azy ireo), saingy amin'izao dingana izao dia mijanona amin'ity vahaolana ity izahay.