Amalachadh luchd-cleachdaidh deas-bhòrd Kubernetes agus GitLab

Amalachadh luchd-cleachdaidh deas-bhòrd Kubernetes agus GitLab

Tha Kubernetes Dashboard na inneal furasta a chleachdadh airson fiosrachadh as ùire fhaighinn mun bhuidheann ruith agad agus a riaghladh gun mòran oidhirp. Bidh tu a’ tòiseachadh a ’cur luach eadhon nas motha air nuair a tha feum air ruigsinneachd air na comasan sin chan ann a-mhàin le luchd-rianachd / innleadairean DevOps, ach cuideachd leis an fheadhainn nach eil cho eòlach air a’ chonsail agus / no nach eil an dùil dèiligeadh ris a h-uile duilgheadas a thaobh a bhith ag eadar-obrachadh le kubectl agus goireasan eile. Thachair seo leinn: bha an luchd-leasachaidh ag iarraidh ruigsinneachd luath air eadar-aghaidh lìn Kubernetes, agus bhon a chleachdas sinn GitLab, thàinig am fuasgladh gu nàdarrach.

Carson a tha seo?

Is dòcha gum bi ùidh aig luchd-leasachaidh dìreach ann an inneal mar K8s Dashboard airson gnìomhan deasbaid. Aig amannan bidh thu airson sùil a thoirt air logaichean agus goireasan, agus uaireannan marbhadh pods, sgèile Cleachdaidhean / StatefulSets, agus eadhon a dhol gu consol an t-soithich (tha iarrtasan ann cuideachd agus, ge-tà, tha dòigh eile ann - mar eisimpleir, troimhe kubectl-debug).

A bharrachd air an sin, tha àm saidhgeòlach ann do mhanaidsearan nuair a tha iad airson sùil a thoirt air a’ bhuidheann - a bhith a’ faicinn gu bheil “a h-uile dad uaine”, agus mar sin a’ toirt misneachd dhaibh fhèin gu bheil “a h-uile dad ag obair” (a tha, gu dearbh, gu math càirdeach ... ach tha seo taobh a-muigh raon an artaigil).

Mar shiostam CI àbhaisteach tha againn buntainn GitLab: bidh gach leasaiche ga chleachdadh cuideachd. Mar sin, gus cothrom a thoirt dhaibh, bha e loidsigeach Dashboard fhilleadh a-steach le cunntasan GitLab.

Bheir mi fa-near cuideachd gu bheil sinn a’ cleachdadh NGINX Ingress. Ma tha thu ag obair còmhla ri daoine eile fuasglaidhean a-steach, feumaidh tu analogues de notaichean a lorg gu neo-eisimeileach airson cead.

A 'feuchainn ri amalachadh

Stàladh dashboard

Thoir aire: Ma tha thu gu bhith ag ath-aithris na ceumannan gu h-ìosal, an uairsin - gus obrachaidhean neo-riatanach a sheachnadh - leugh an toiseach chun ath fho-cheann.

Leis gu bheil sinn a’ cleachdadh an aonachadh seo ann an iomadh ionad, tha sinn air a stàladh a dhèanamh fèin-ghluasadach. Tha na stòran a tha a dhìth airson seo air am foillseachadh ann an stòr sònraichte GitHub. Tha iad stèidhichte air rèiteachadh YAML beagan atharraichte bho ionad-tasgaidh oifigeil Dashboard, a bharrachd air sgriobt Bash airson a chleachdadh gu sgiobalta.

Bidh an sgriobt a’ stàladh Dashboard sa bhuidheann agus ga rèiteachadh airson amalachadh le 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

Ach, mus cleachd thu e, feumaidh tu a dhol gu GitLab: Raon rianachd → Tagraidhean - agus cuir a-steach tagradh ùr airson a’ phannal san àm ri teachd. Canaidh sinn “deas-bhòrd kubernetes” ris:

Amalachadh luchd-cleachdaidh deas-bhòrd Kubernetes agus GitLab

Mar thoradh air a chuir ris, bheir GitLab seachad na hashes:

Amalachadh luchd-cleachdaidh deas-bhòrd Kubernetes agus GitLab

Is iadsan an fheadhainn a tha air an cleachdadh mar argamaidean don sgriobt. Mar thoradh air an sin, tha coltas mar seo air an stàladh:

$ ./ctl.sh -i --gitlab-url https://gitlab.example.com --oauth2-id 6a52769e… --oauth2-secret 6b79168f… --dashboard-url dashboard.example.com

Às deidh sin, dèan cinnteach gun do thòisich a h-uile càil:

$ 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

Ann an ùine ghoirid no nas fhaide air adhart tòisichidh a h-uile càil, ge-tà chan obraich cead sa bhad! Is e an fhìrinn, anns an ìomhaigh a chaidh a chleachdadh (tha an suidheachadh ann an ìomhaighean eile coltach) gu bheil am pròiseas airson ath-sheòladh a ghlacadh anns a ’ghairm air ais air a chuir an gnìomh gu ceàrr. Tha an suidheachadh seo a’ leantainn gu bheil oauth a’ cur às don bhriosgaid a tha oauth fhèin a’ toirt dhuinn...

Thèid an duilgheadas fhuasgladh le bhith a’ togail d’ ìomhaigh mhìn fhèin le bad.

Patch oauth agus ath-stàlaich

Gus seo a dhèanamh, cleachdaidh sinn an Dockerfile a leanas:

FROM golang:1.9-alpine3.7
WORKDIR /go/src/github.com/bitly/oauth2_proxy

RUN apk --update add make git build-base curl bash ca-certificates wget 
&& update-ca-certificates 
&& curl -sSO https://raw.githubusercontent.com/pote/gpm/v1.4.0/bin/gpm 
&& chmod +x gpm 
&& mv gpm /usr/local/bin
RUN git clone https://github.com/bitly/oauth2_proxy.git . 
&& git checkout bfda078caa55958cc37dcba39e57fc37f6a3c842  
ADD rd.patch .
RUN patch -p1 < rd.patch 
&& ./dist.sh

FROM alpine:3.7
RUN apk --update add curl bash  ca-certificates && update-ca-certificates
COPY --from=0 /go/src/github.com/bitly/oauth2_proxy/dist/ /bin/

EXPOSE 8080 4180
ENTRYPOINT [ "/bin/oauth2_proxy" ]
CMD [ "--upstream=http://0.0.0.0:8080/", "--http-address=0.0.0.0:4180" ]

Agus seo cò ris a tha am paiste rd.patch fhèin coltach

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

A-nis faodaidh tu an ìomhaigh a thogail agus a phutadh a-steach don GitLab againn. An ath rud a-steach manifests/kube-dashboard-oauth2-proxy.yaml comharraich cleachdadh na h-ìomhaigh a tha thu ag iarraidh (cuir do chuid fhèin na àite):

 image: docker.io/colemickens/oauth2_proxy:latest

Ma tha clàr agad a tha dùinte le cead, na dì-chuimhnich gun cuir thu cleachdadh dìomhair airson dealbhan tarraing:

      imagePullSecrets:
     - name: gitlab-registry

... agus cuir ris an dìomhair fhèin airson a’ chlàr:

---
apiVersion: v1
data:
 .dockercfg: eyJyZWdpc3RyeS5jb21wYW55LmNvbSI6IHsKICJ1c2VybmFtZSI6ICJvYXV0aDIiLAogInBhc3N3b3JkIjogIlBBU1NXT1JEIiwKICJhdXRoIjogIkFVVEhfVE9LRU4iLAogImVtYWlsIjogIm1haWxAY29tcGFueS5jb20iCn0KfQoK
=
kind: Secret
metadata:
 annotations:
 name: gitlab-registry
 namespace: kube-system
type: kubernetes.io/dockercfg

Chì an leughadair furachail gu bheil an sreang fhada gu h-àrd base64 bhon config:

{"registry.company.com": {
 "username": "oauth2",
 "password": "PASSWORD",
 "auth": "AUTH_TOKEN",
 "email": "[email protected]"
}
}

Is e seo an dàta cleachdaiche ann an GitLab, tarraingidh còd Kubernetes an ìomhaigh bhon chlàr.

Às deidh a h-uile càil a dhèanamh, faodaidh tu an stàladh deas-bhòrd gnàthach (gun a bhith ag obair gu ceart) a thoirt air falbh leis an àithne:

$ ./ctl.sh -d

agus stàlaich a h-uile càil a-rithist:

$ ./ctl.sh -i --gitlab-url https://gitlab.example.com --oauth2-id 6a52769e… --oauth2-secret 6b79168f… --dashboard-url dashboard.example.com

Tha an t-àm ann a dhol chun deas-bhòrd agus lorg putan logadh a-steach caran àrsaidh:

Amalachadh luchd-cleachdaidh deas-bhòrd Kubernetes agus GitLab

Às deidh dhut briogadh air, cuiridh GitLab fàilte oirnn, a’ tabhann logadh a-steach don duilleag àbhaisteach aige (gu dearbh, mura h-eil sinn air logadh a-steach an sin roimhe):

Amalachadh luchd-cleachdaidh deas-bhòrd Kubernetes agus GitLab

Bidh sinn a’ logadh a-steach le teisteanasan GitLab - agus tha a h-uile càil air a dhèanamh:

Amalachadh luchd-cleachdaidh deas-bhòrd Kubernetes agus GitLab

Mu fheartan Dashboard

Ma tha thu nad leasaiche nach eil air a bhith ag obair le Kubernetes roimhe seo, no dìreach airson adhbhar air choireigin nach do choinnich thu ri Dashboard roimhe seo, seallaidh mi cuid de na comasan aige.

An toiseach, chì thu gu bheil “a h-uile dad uaine”:

Amalachadh luchd-cleachdaidh deas-bhòrd Kubernetes agus GitLab

Tha dàta nas mionaidiche cuideachd ri fhaighinn airson pods, leithid caochladairean àrainneachd, ìomhaigh air a luchdachadh sìos, argamaidean tòiseachaidh, agus an staid aca:

Amalachadh luchd-cleachdaidh deas-bhòrd Kubernetes agus GitLab

Tha inbhean faicsinneach aig cleachdadh:

Amalachadh luchd-cleachdaidh deas-bhòrd Kubernetes agus GitLab

... agus mion-fhiosrachadh eile:

Amalachadh luchd-cleachdaidh deas-bhòrd Kubernetes agus GitLab

... agus tha comas ann cuideachd an cleachdadh a sgèile:

Amalachadh luchd-cleachdaidh deas-bhòrd Kubernetes agus GitLab

Toradh na h-obrach seo:

Amalachadh luchd-cleachdaidh deas-bhòrd Kubernetes agus GitLab

Am measg nam feartan feumail eile a chaidh ainmeachadh aig toiseach an artaigil tha coimhead air logaichean:

Amalachadh luchd-cleachdaidh deas-bhòrd Kubernetes agus GitLab

...

Amalachadh luchd-cleachdaidh deas-bhòrd Kubernetes agus GitLab

Mar eisimpleir, faodaidh tu cuideachd coimhead air na crìochan / iarrtasan air nodan:

Amalachadh luchd-cleachdaidh deas-bhòrd Kubernetes agus GitLab

Gu dearbh, chan e seo uile comasan a’ phannail, ach tha mi an dòchas gum faigh thu am beachd coitcheann.

Eas-bhuannachdan de amalachadh agus Dashboard

Anns an aonachadh a chaidh a mhìneachadh chan eil smachd ruigsinneachd. Leis, gheibh gach neach-cleachdaidh aig a bheil cothrom air GitLab cothrom air an deas-bhòrd. Tha an aon ruigsinneachd aca anns an deas-bhòrd fhèin, a rèir còirichean an deas-bhòrd fhèin, a tha air am mìneachadh ann an RBAC. Gu dearbh, chan eil seo freagarrach airson a h-uile duine, ach airson ar cùise thionndaidh e a-mach a bhith gu leòr.

Am measg nan eas-bhuannachdan follaiseach anns an deas-bhòrd fhèin, tha mi a’ toirt fa-near na leanas:

  • tha e do-dhèanta faighinn a-steach do chonsail an init container;
  • tha e do-dhèanta Deasachadh Cleachdaidhean agus StatefulSets, ged a dh'fhaodar seo a shuidheachadh ann an ClusterRole;
  • Bidh co-chòrdalachd Dashboard leis na dreachan as ùire de Kubernetes agus àm ri teachd a ’phròiseict a’ togail cheistean.

Tha an duilgheadas mu dheireadh airidh air aire shònraichte.

Inbhe deas-bhòrd agus roghainnean eile

Clàr co-chòrdalachd deas-bhòrd le fiosan Kubernetes, air a thaisbeanadh san dreach as ùire den phròiseact (v1.10.1), chan eil mi toilichte:

Amalachadh luchd-cleachdaidh deas-bhòrd Kubernetes agus GitLab

A dh'aindeoin seo, tha (mar-thà air gabhail ris san Fhaoilleach) PR #3476, a tha ag ainmeachadh taic airson K8s 1.13. A bharrachd air an sin, am measg chùisean a’ phròiseict gheibh thu iomraidhean air luchd-cleachdaidh ag obair leis a’ phannal ann an K8s 1.14. Mu dheireadh, a' gealltainn a-steach do bhunait còd a’ phròiseict na stad. Mar sin (co-dhiù!) Chan eil fìor inbhe a’ phròiseict cho dona ‘s a dh’ fhaodadh e nochdadh bhon chlàr oifigeil co-chòrdalachd.

Mu dheireadh, tha roghainnean eile ann seach Dashboard. Nam measg:

  1. K8 Dash - eadar-aghaidh òg (tha a’ chiad ghealladh a’ dol air ais gu Màrt am-bliadhna), a tha mar-thà a’ tabhann deagh fheartan, leithid riochdachadh lèirsinneach de inbhe làithreach a’ bhuidheann agus riaghladh a nithean. Air a shuidheachadh mar “eadar-aghaidh fìor-ùine”, oir ag ùrachadh an dàta a tha air a thaisbeanadh gu fèin-ghluasadach gun a bhith ag iarraidh ort an duilleag sa bhrobhsair ùrachadh.
  2. Console OpenShift - eadar-aghaidh lìn bho Red Hat OpenShift, a bheir, ge-tà, leasachaidhean eile den phròiseact don bhuidheann agad, nach eil freagarrach don h-uile duine.
  3. Kubernator na phròiseact inntinneach, air a chruthachadh mar eadar-aghaidh aig ìre nas ìsle (na Dashboard) leis a’ chomas a h-uile nì cnuasachaidh fhaicinn. Ach, tha e coltach gu bheil a leasachadh air stad.
  4. Polaris - dìreach an latha eile ainmeachadh pròiseact a tha a’ cothlamadh gnìomhan panail (a’ sealltainn staid làithreach a’ chnuasach, ach nach eil a’ riaghladh a nithean) agus “dearbhadh nan cleachdaidhean as fheàrr” gu fèin-ghluasadach (a’ sgrùdadh a’ bhuidheann airson ceartachd nan rèiteachaidhean de Chleachdaidhean a tha a’ ruith ann).

An àite co-dhùnaidhean

Tha deas-bhòrd na inneal àbhaisteach airson na cruinneachaidhean Kubernetes a bhios sinn a’ frithealadh. Tha an aonachadh le GitLab cuideachd air a thighinn gu bhith na phàirt den stàladh bunaiteach againn, leis gu bheil mòran de luchd-leasachaidh air bhioran mu na comasan a th’ aca leis a’ phannal seo.

Bho àm gu àm tha roghainnean eile aig Kubernetes Dashboard bhon choimhearsnachd Open Source (agus tha sinn toilichte beachdachadh orra), ach aig an ìre seo tha sinn fhathast leis an fhuasgladh seo.

PS

Leugh cuideachd air ar blog:

Source: www.habr.com

Cuir beachd ann