Fampidirana ny Dashboard Kubernetes sy ny mpampiasa GitLab

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":

Fampidirana ny Dashboard Kubernetes sy ny mpampiasa GitLab

Vokatry ny fanampiana azy, ny GitLab dia hanome ny hash:

Fampidirana ny Dashboard Kubernetes sy ny mpampiasa GitLab

Izy ireo no ampiasaina ho tohan-kevitra amin'ny script. Vokatr'izany dia toy izao ny fametrahana:

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

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:

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" ]

Ary izao ny endriky ny rd.patch 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

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:

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

Ny mpamaky mahay dia hahita fa ny tady lava etsy ambony dia base64 avy amin'ny config:

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

Ity no angon-drakitra mpampiasa ao amin'ny GitLab, ny kaody Kubernetes dia hisintona ny sary avy ao amin'ny rejisitra.

Rehefa vita ny zava-drehetra dia azonao atao ny manala ny fametrahana Dashboard ankehitriny (tsy miasa tsara) miaraka amin'ny baiko:

$ ./ctl.sh -d

... ary apetraho indray ny zava-drehetra:

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

Fotoana handehanana any amin'ny Dashboard ary hahita bokotra fidirana efa tranainy:

Fampidirana ny Dashboard Kubernetes sy ny mpampiasa GitLab

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):

Fampidirana ny Dashboard Kubernetes sy ny mpampiasa GitLab

Miditra amin'ny fahazoan-dΓ lana GitLab izahay - ary vita ny zava-drehetra:

Fampidirana ny Dashboard Kubernetes sy ny mpampiasa GitLab

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":

Fampidirana ny Dashboard Kubernetes sy ny mpampiasa GitLab

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:

Fampidirana ny Dashboard Kubernetes sy ny mpampiasa GitLab

Ny fametrahana dia manana sata hita maso:

Fampidirana ny Dashboard Kubernetes sy ny mpampiasa GitLab

...sy antsipiriany hafa:

Fampidirana ny Dashboard Kubernetes sy ny mpampiasa GitLab

... ary misy ihany koa ny fahafahana manitatra ny fametrahana:

Fampidirana ny Dashboard Kubernetes sy ny mpampiasa GitLab

Ny vokatr'ity hetsika ity:

Fampidirana ny Dashboard Kubernetes sy ny mpampiasa GitLab

Anisan'ireo endri-javatra mahasoa hafa efa voalaza tany am-piandohan'ny lahatsoratra ny fijerena logs:

Fampidirana ny Dashboard Kubernetes sy ny mpampiasa GitLab

... ary ny fiasa hidirana ao amin'ny console container an'ny pod voafantina:

Fampidirana ny Dashboard Kubernetes sy ny mpampiasa GitLab

Ohatra, azonao atao koa ny mijery ny fetra / fangatahana amin'ny nodes:

Fampidirana ny Dashboard Kubernetes sy ny mpampiasa GitLab

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.

Anisan'ireo tsy fahampiana hita ao amin'ny Dashboard mihitsy, manamarika ireto manaraka ireto aho:

  • tsy azo atao ny miditra ao amin'ny console amin'ny container init;
  • tsy azo atao ny manova ny Deployments sy StatefulSets, na dia azo amboarina ao amin'ny ClusterRole aza izany;
  • Mampametra-panontaniana ny fampifanarahana ny dashboard amin'ireo kinova farany an'ny Kubernetes sy ny hoavin'ny tetikasa.

Ny olana farany dia mendrika ny fiheverana manokana.

Sata dashboard sy safidy hafa

Tabilao mifanaraka amin'ny dashboard miaraka amin'ny famoahana Kubernetes, aseho amin'ny kinova farany amin'ny tetikasa (v1.10.1), tsy dia faly loatra:

Fampidirana ny Dashboard Kubernetes sy ny mpampiasa GitLab

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:

  1. 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.
  2. 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.
  3. 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.
  4. 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.

Sal

Vakio ihany koa ao amin'ny bilaoginay:

Source: www.habr.com

Add a comment