Comhtháthú Úsáideoirí Painéal Kubernetes agus GitLab

Comhtháthú Úsáideoirí Painéal Kubernetes agus GitLab

Is uirlis éasca le húsáid é Painéal Kubernetes chun faisnéis cothrom le dáta a fháil faoi bhraisle reatha agus an bhainistíocht íosta air. Tuigeann tú níos mó fós é nuair a bhíonn rochtain ar na cumais seo ag teastáil ní hamháin ó riarthóirí/innealtóirí DevOps, ach freisin ag iad siúd nach bhfuil mórán taithí acu ar an gconsól agus/nó nach bhfuil sé ar intinn acu déileáil leis na castaí go léir a bhaineann le hidirghníomhú le kubectl agus fóntais eile. Tharla sé seo linn: bhí na forbróirí ag iarraidh rochtain tapa ar chomhéadan gréasáin Kubernetes, agus ós rud é go n-úsáideann muid GitLab, tháinig an réiteach go nádúrtha.

Cén fáth é seo?

D'fhéadfadh go mbeadh suim ag forbróirí díreacha in uirlis cosúil le Painéal na nOibreacha K8s le haghaidh tascanna dífhabhtaithe. Uaireanta is mian leat logaí agus acmhainní a fheiceáil, agus uaireanta pods a mharú, Imscaradh scála / SetfulSets, agus fiú dul go dtí an consól coimeádán (tá iarratais ann freisin a bhfuil bealach eile ann - mar shampla, trí kubectl-debug).

Ina theannta sin, tá tráth síceolaíoch ann do bhainisteoirí nuair a bhíonn siad ag iarraidh breathnú ar an mbraisle - féachaint go bhfuil "gach rud glas", agus mar sin iad féin a chur ar a suaimhneas go bhfuil "gach rud ag obair" (atá, ar ndóigh, an-choibhneasta ... ach tá sé seo thar raon feidhme an ailt).

Mar chóras caighdeánach CI atá againn curtha i bhfeidhm GitLab: úsáideann gach forbróir é freisin. Mar sin, chun rochtain a sholáthar dóibh, bhí sé loighciúil Painéal a chomhtháthú le cuntais GitLab.

Tabharfaidh mé faoi deara freisin go n-úsáidfimid NGINX Ingress. Má oibríonn tú le daoine eile réitigh isteach, beidh ort analógacha nótaí a aimsiú go neamhspleách le haghaidh údarú.

Ag iarraidh comhtháthú

Suiteáil painéal

Aird: Má tá tú chun na céimeanna thíos a athdhéanamh, ansin - chun oibríochtaí nach bhfuil gá leo a sheachaint - léigh ar dtús go dtí an chéad fho-cheannteideal eile.

Ós rud é go n-úsáidimid an comhtháthú seo i go leor suiteálacha, tá a shuiteáil uathoibrithe againn. Foilsítear na foinsí atá ag teastáil chuige seo i stór speisialta GitHub. Tá siad bunaithe ar chumraíochtaí beagán modhnaithe YAML ó stór Painéal oifigiúil, chomh maith le script Bash le haghaidh imscaradh tapa.

Suiteálann an script Deais sa bhraisle agus cumraítear é le comhtháthú 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

Mar sin féin, sula n-úsáideann tú é, ní mór duit dul chuig GitLab: Réimse Riaracháin → Iarratais - agus cuir iarratas nua leis an bpainéal amach anseo. Glaoimis “deais kubernetes” air:

Comhtháthú Úsáideoirí Painéal Kubernetes agus GitLab

Mar thoradh ar é a chur leis, cuirfidh GitLab na hashes ar fáil:

Comhtháthú Úsáideoirí Painéal Kubernetes agus GitLab

Is iad na cinn a úsáidtear mar argóintí leis an script. Mar thoradh air sin, tá cuma mar seo ar an suiteáil:

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

Ina dhiaidh sin, déanaimis seiceáil gur thosaigh gach rud:

$ 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

Luath nó mall cuirfear tús le gach rud, áfach ní oibreoidh údarú láithreach! Is é an bhfíric go bhfuil san íomhá a úsáidtear (tá an staid in íomhánna eile cosúil) an próiseas a ghabháil atreorú sa aisghlao curtha i bhfeidhm go mícheart. De bharr na himthosca seo, scriosann oauth an fianán a sholáthraíonn oauth féin dúinn...

Réitítear an fhadhb trí d'íomhá oauth féin a thógáil le paiste.

Patch oauth agus athshuiteáil

Chun seo a dhéanamh, úsáidfimid an Dockerfile seo 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 cuma an paiste rd.patch féin

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

Anois is féidir leat an íomhá a thógáil agus é a bhrú isteach inár GitLab. Ar aghaidh i manifests/kube-dashboard-oauth2-proxy.yaml cuir in iúl úsáid na híomhá atá ag teastáil (cuir do íomhá féin ina áit):

 image: docker.io/colemickens/oauth2_proxy:latest

Má tá clárlann agat atá dúnta le húdarú, ná déan dearmad úsáid a bhaint as rún chun íomhánna a tharraingt:

      imagePullSecrets:
     - name: gitlab-registry

... agus cuir an rún féin don chlár:

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

Feicfidh an léitheoir aireach go bhfuil an teaghrán fada thuas base64 ón gcumraíocht:

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

Is é seo na sonraí úsáideora i GitLab, tarraingeoidh cód Kubernetes an íomhá ón gclárlann.

Tar éis gach rud a dhéanamh, is féidir leat an suiteáil Painéal reatha (nach bhfuil ag obair i gceart) a bhaint leis an ordú:

$ ./ctl.sh -d

... agus gach rud a shuiteáil arís:

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

Tá sé in am dul go dtí an Deais agus cnaipe logála isteach sách sean a aimsiú:

Comhtháthú Úsáideoirí Painéal Kubernetes agus GitLab

Tar éis cliceáil air, beannóidh GitLab dúinn, ag tairiscint logáil isteach ar a ghnáth-leathanach (ar ndóigh, mura bhfuil logáilte isteach againn ann roimhe seo):

Comhtháthú Úsáideoirí Painéal Kubernetes agus GitLab

Logálaimid isteach le dintiúir GitLab - agus déantar gach rud:

Comhtháthú Úsáideoirí Painéal Kubernetes agus GitLab

Maidir le gnéithe Deais

Más forbróir tú nach bhfuil ag obair le Kubernetes roimhe seo, nó go simplí ar chúis éigin nár tháinig tú trasna ar an bPainéal roimhe seo, léireoidh mé cuid dá chumais.

Ar an gcéad dul síos, is féidir leat a fheiceáil go bhfuil “gach rud glas”:

Comhtháthú Úsáideoirí Painéal Kubernetes agus GitLab

Tá sonraí níos mionsonraithe ar fáil freisin maidir le pods, mar athróga timpeallachta, íomhá íoslódála, argóintí seolta, agus a staid:

Comhtháthú Úsáideoirí Painéal Kubernetes agus GitLab

Tá stádas infheicthe ag imlonnaithe:

Comhtháthú Úsáideoirí Painéal Kubernetes agus GitLab

...agus sonraí eile:

Comhtháthú Úsáideoirí Painéal Kubernetes agus GitLab

... agus tá an cumas ann freisin an t-imscaradh a scála:

Comhtháthú Úsáideoirí Painéal Kubernetes agus GitLab

Toradh na hoibríochta seo:

Comhtháthú Úsáideoirí Painéal Kubernetes agus GitLab

I measc na ngnéithe úsáideacha eile a luadh cheana ag tús an ailt tá breathnú ar logaí:

Comhtháthú Úsáideoirí Painéal Kubernetes agus GitLab

... agus an fheidhm chun logáil isteach i gconsól coimeádán an phod roghnaithe:

Comhtháthú Úsáideoirí Painéal Kubernetes agus GitLab

Mar shampla, is féidir leat breathnú freisin ar na teorainneacha/iarratais ar nóid:

Comhtháthú Úsáideoirí Painéal Kubernetes agus GitLab

Ar ndóigh, ní hiad seo go léir cumais an phainéil, ach tá súil agam go bhfaighidh tú an smaoineamh ginearálta.

Míbhuntáistí a bhaineann le comhtháthú agus Painéal na nIonstraimí

Sa chomhtháthú a thuairiscítear níl aon rialú rochtana. Leis, gheobhaidh gach úsáideoir a bhfuil aon rochtain acu ar GitLab rochtain ar an Deais. Tá an rochtain chéanna acu sa Phainéal féin, a fhreagraíonn do chearta an Deais féin, a atá sainmhínithe in RBAC. Ar ndóigh, nach bhfuil sé seo oiriúnach do gach duine, ach le haghaidh ár gcás d'éirigh sé amach a bheith leordhóthanach.

I measc na míbhuntáistí suntasacha sa Phainéal féin, tugaim an méid seo a leanas faoi deara:

  • tá sé dodhéanta dul isteach ar chonsól an choimeádáin init;
  • tá sé dodhéanta Imscaradh agus StatefulSets a chur in eagar, cé gur féidir é seo a shocrú in ClusterRole;
  • Ardaíonn comhoiriúnacht an Phainéil leis na leaganacha is déanaí de Kubernetes agus todhchaí an tionscadail ceisteanna.

Tá aird ar leith tuillte ag an bhfadhb dheireanach.

Stádas an phainéil agus roghanna eile

Tábla comhoiriúnachta an phainéil le heisiúintí Kubernetes, curtha i láthair sa leagan is déanaí den tionscadal (v1.10.1), nach bhfuil an-sásta:

Comhtháthú Úsáideoirí Painéal Kubernetes agus GitLab

In ainneoin seo, tá (glacadh cheana féin i mí Eanáir) PR # 3476, a fhógraíonn tacaíocht do K8s 1.13. Ina theannta sin, i measc na saincheisteanna tionscadail is féidir leat teacht ar thagairtí d'úsáideoirí atá ag obair leis an bpainéal i K8s 1.14. Ar deireadh, geallann isteach i mbonn cód an tionscadail ná stop. Mar sin (ar a laghad!) Níl stádas iarbhír an tionscadail chomh dona agus a d'fhéadfadh sé a bheith cosúil ar dtús ón tábla comhoiriúnachta oifigiúil.

Ar deireadh, tá roghanna eile seachas Painéal na nIonstraimí. Ina measc:

  1. K8Dash — comhéadan óg (an chéad gheallúint a théann siar go dtí Márta na bliana seo), a thairgeann gnéithe maithe cheana féin, mar léiriú amhairc ar stádas reatha an bhraisle agus bainistiú a chuid cuspóirí. Suite mar “chomhéadan fíor-ama”, mar gheall ar nuashonraíonn sé na sonraí a thaispeánfar go huathoibríoch gan iarraidh ort an leathanach sa bhrabhsálaí a athnuachan.
  2. Consól OpenShift - comhéadan gréasáin ó Red Hat OpenShift, a thabharfaidh, áfach, forbairtí eile den tionscadal chuig do bhraisle, nach bhfuil oiriúnach do gach duine.
  3. Kubernator Is tionscadal suimiúil é, a cruthaíodh mar chomhéadan leibhéal níos ísle (ná Painéal) leis an gcumas féachaint ar na braisle réada go léir. Mar sin féin, tá an chuma ar an scéal go bhfuil deireadh tagtha lena fhorbairt.
  4. Polaris - díreach an lá eile D'fhógair tionscadal a chomhcheanglaíonn feidhmeanna painéil (a thaispeánann staid reatha an bhraisle, ach nach ndéanann bainistiú ar a chuid cuspóirí) agus “dea-chleachtais a bhailíochtú” go huathoibríoch (seiceálann sé an braisle le haghaidh cruinnis na bhfoirmíochtaí Imscaradh atá ag rith ann).

In ionad na gconclúidí

Is uirlis chaighdeánach é Painéal do na braislí Kubernetes a bhfreastalaímid orthu. Tá a chomhtháthú le GitLab anois mar chuid dár suiteáil réamhshocraithe, toisc go bhfuil go leor forbróirí ar bís faoi na cumais atá acu leis an bpainéal seo.

Tá roghanna eile ag Painéal Kubernetes go tréimhsiúil ón bpobal Foinse Oscailte (agus táimid sásta iad a mheas), ach ag an gcéim seo fanann muid leis an réiteach seo.

PS

Léigh freisin ar ár mblag:

Foinse: will.com

Add a comment