Te whakauru o te Papatohu Kubernetes me nga Kaiwhakamahi GitLab

Te whakauru o te Papatohu Kubernetes me nga Kaiwhakamahi GitLab

Ko te Papatohu Kubernetes he taputapu ngawari ki te tiki korero hou mo to roopu whakahaere me te whakahaere me te iti o te whakapau kaha. Ka timata koe ki te maioha ki a koe i te wa e hiahiatia ana te uru ki enei kaha ehara i te mea ko nga kaiwhakahaere / DevOps anake nga miihini, engari na te hunga kua iti ake te waia ki te papatohu me / kaore ranei e whakaaro ki te whakahaere i nga uaua katoa o te taunekeneke ki te kubectl me etahi atu taputapu. I tupu tenei ki a matou: i hiahia nga kaihanga ki te uru tere ki te atanga tukutuku Kubernetes, a, i te mea ka whakamahia e matou a GitLab, i puta mai te otinga.

He aha tenei?

Ka aro pea nga kaiwhakawhanake tika ki tetahi taputapu penei i te Papatohu K8s mo nga mahi patuiro. I etahi wa ka hiahia koe ki te tiro i nga raarangi me nga rauemi, a i etahi wa ka patu i nga pene, i te tauine Deployments/StatefulSets, a tae noa ki te haere ki te papatohu ipu (he tono ano, heoi, he huarahi ano - hei tauira, ma te kubectl-debug).

I tua atu, he waahi hinengaro mo nga kaiwhakahaere ina hiahia ana ratou ki te titiro ki te tautau - kia kite "he matomato nga mea katoa", na reira ka whakapumau i a raatau ano "kei te mahi nga mea katoa" (ko te tikanga, he tino whanaunga ... engari kei tua atu i te waahi o te tuhinga).

Hei punaha CI paerewa kei a matou tono GitLab: ka whakamahia e nga kaihanga katoa. No reira, kia whai waahi atu ki a raatau, he mea tika te whakauru i te Papatohu me nga kaute a GitLab.

Ka kite ano ahau kei te whakamahi matou i te NGINX Ingress. Mena ka mahi koe me etahi atu rongoā whakauru, me rapu takitahi koe i nga taarite o nga korero mo te whakamanatanga.

E ngana ana ki te whakauru

Papatohu tāutanga

Tūpato: Mēnā ka mahi anō koe i ngā kaupae i raro iho nei, kātahi - hei karo i ngā mahi kore - pānuitia tuatahi ki te pane iti e whai ake nei.

I te mea ka whakamahia e matou tenei whakaurunga i roto i nga whakaurunga maha, kua whakaaunoatia e matou tana whakaurunga. Ko nga puna e hiahiatia ana mo tenei ka whakaputaina ki roto putunga motuhake GitHub. I ahu mai i runga i nga whirihoranga YAML paku whakarerekē mai putunga Papatohu mana, me te tuhinga Bash mo te tuku tere.

Ka whakauruhia e te tuhinga te Papatohu ki roto i te kohinga ka whirihorahia mo te whakauru ki a 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

Heoi, i mua i te whakamahi, me haere koe ki GitLab: Admin area → Applications - me te taapiri i tetahi tono hou mo te roopu a meake nei. Karangahia "kubernetes dashboard":

Te whakauru o te Papatohu Kubernetes me nga Kaiwhakamahi GitLab

Ko te hua o te taapiri, ka tukuna e GitLab nga tohu:

Te whakauru o te Papatohu Kubernetes me nga Kaiwhakamahi GitLab

Ko ratou nga mea e whakamahia ana hei tohenga mo te tuhinga. Ko te mutunga, he penei te ahua o te whakaurunga:

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

I muri i tera, tirohia kua timata nga mea katoa:

$ 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

Ake ake nei ka timata nga mea katoa, heoi e kore e mahi tonu te whakamanatanga! Ko te meka kei roto i te ahua e whakamahia ana (he rite te ahuatanga o etahi atu whakaahua) ko te tukanga o te hopu i te redirect i roto i te waea hoki ka mahia he. Ko tenei ahuatanga ka arai ki te meka ka murua e te oauth te pihikete ka tukuna mai e oauth ki a tatou...

Ka whakatauhia te raru ma te hanga i to ake ahua oauth me te papaki.

Papaki oauth ka tāuta anō

Hei mahi i tenei, ka whakamahia e matou te Dockerfile e whai ake nei:

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

A koinei te ahua o te rd.patch patch ake

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

Inaianei ka taea e koe te hanga i te ahua ka pana ki roto i ta maatau GitLab. I muri mai manifests/kube-dashboard-oauth2-proxy.yaml tohuhia te whakamahinga o te ahua e hiahiatia ana (whakakapihia ki a koe ake):

 image: docker.io/colemickens/oauth2_proxy:latest

Mena kei a koe he rehita kua katia e te whakamanatanga, kaua e wareware ki te taapiri i te whakamahinga o te mea ngaro mo te tango whakaahua:

      imagePullSecrets:
     - name: gitlab-registry

... ka taapirihia te mea ngaro mo te rehita:

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

Ka kite te kaipanui whakarongo ko te aho roa i runga ake nei ko te base64 mai i te whirihora:

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

Koinei nga raraunga kaiwhakamahi i GitLab, ma te waehere Kubernetes e kumea te ahua mai i te rehita.

Ka oti nga mea katoa, ka taea e koe te tango i te waa (kaore e mahi tika) te whakaurunga Papatohu me te whakahau:

$ ./ctl.sh -d

... ka whakauru ano i nga mea katoa:

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

Kua tae ki te wa ki te haere ki te Papatohu me te kimi i tetahi paatene takiuru tino tawhito:

Te whakauru o te Papatohu Kubernetes me nga Kaiwhakamahi GitLab

Whai muri i te panui, ka mihi mai a GitLab ki a matou, ka tuku ki te takiuru ki tana wharangi o mua (mehemea kaore ano matou i uru ki reira):

Te whakauru o te Papatohu Kubernetes me nga Kaiwhakamahi GitLab

Ka takiuru matou me nga tohu tohu GitLab - ka oti nga mea katoa:

Te whakauru o te Papatohu Kubernetes me nga Kaiwhakamahi GitLab

Mo nga ahuatanga o te Papatohu

Mena he kaiwhakawhanake koe kaore ano kia mahi tahi me Kubernetes i mua, na etahi take kaore ano kia tutaki ki te Papatohu i mua, ka whakaatu ahau i etahi o ona kaha.

Tuatahi, ka kite koe "he matomato nga mea katoa":

Te whakauru o te Papatohu Kubernetes me nga Kaiwhakamahi GitLab

Kei te waatea ano nga raraunga taipitopito mo nga pene, penei i nga taurangi taiao, te ahua kua tangohia, nga tohenga whakarewatanga, me o raatau ahuatanga:

Te whakauru o te Papatohu Kubernetes me nga Kaiwhakamahi GitLab

Ka kitea nga mana o te tukunga:

Te whakauru o te Papatohu Kubernetes me nga Kaiwhakamahi GitLab

...me etahi atu korero:

Te whakauru o te Papatohu Kubernetes me nga Kaiwhakamahi GitLab

... kei reira ano hoki te kaha ki te whakarahi i te tukunga:

Te whakauru o te Papatohu Kubernetes me nga Kaiwhakamahi GitLab

Ko te hua o tenei mahi:

Te whakauru o te Papatohu Kubernetes me nga Kaiwhakamahi GitLab

I roto i etahi atu waahanga whai hua kua whakahuahia i te timatanga o te tuhinga ko te tiro i nga raarangi:

Te whakauru o te Papatohu Kubernetes me nga Kaiwhakamahi GitLab

... me te mahi ki te takiuru ki roto i te papatohu ipu o te putunga kua tohua:

Te whakauru o te Papatohu Kubernetes me nga Kaiwhakamahi GitLab

Hei tauira, ka taea hoki e koe te titiro ki nga rohe/tono i runga i nga pona:

Te whakauru o te Papatohu Kubernetes me nga Kaiwhakamahi GitLab

Ae ra, ehara enei i te katoa o nga kaha o te roopu, engari ko taku tumanako ka whiwhi koe i te whakaaro whanui.

Nga ngoikoretanga o te whakauru me te Papatohu

I roto i te whakakotahitanga kua whakaahuahia kaore he mana uru. Ma te reira, ko nga kaiwhakamahi katoa e uru ana ki a GitLab ka uru ki te Papatohu. He rite tonu te uru ki roto i te Papatohu ake, e rite ana ki nga motika o te Papatohu ake, e kua tautuhia i roto i te RBAC. Ma te maarama, kaore tenei e pai mo te katoa, engari mo ta maatau keehi ka kitea kua ranea.

I roto i nga ngoikoretanga ka kitea i roto i te Papatohu ake, ka kite ahau i enei e whai ake nei:

  • e kore e taea te uru ki roto i te papatohu o te ipu init;
  • e kore e taea te whakatika i nga Whakamahinga me nga StatefulSets, ahakoa ka taea tenei ki te ClusterRole;
  • Ko te hototahitanga o te Papatohu me nga putanga hou o Kubernetes me te wa kei te heke mai o te kaupapa he patai.

Ko te raruraru whakamutunga e tika ana kia aro nui.

Te mana o te Papatohu me etahi atu

Papatohu hototahi ripanga me nga putanga Kubernetes, ka whakaatuhia ki te putanga hou o te kaupapa (v1.10.1), kaore i tino koa:

Te whakauru o te Papatohu Kubernetes me nga Kaiwhakamahi GitLab

Ahakoa tenei, kei reira (kua tangohia i te marama o Hanuere) PR #3476, e whakaatu ana i te tautoko mo K8s 1.13. I tua atu, i roto i nga take kaupapa ka kitea e koe nga tohutoro ki nga kaiwhakamahi e mahi ana me te roopu i roto i te K8s 1.14. Ka mutu, ka mahia ki te turanga waehere kaupapa kaua e mutu. Na (i te iti rawa!) Ko te mana o te kaupapa kaore i te kino pera i te ahua tuatahi mai i te tepu hototahi mana.

Ka mutu, he huarahi ke atu ki te Papatohu. I roto ia ratou:

  1. K8Pīhono — he atanga rangatahi (ko te mea tuatahi mai i te marama o Maehe o tenei tau), e tuku ana i nga ahuatanga pai, penei i te whakaaturanga ataata o te ahuatanga o naianei o te roopu me te whakahaeretanga o ana taonga. Whakaturia hei "atanga wa-tūturu", na te mea ka whakahōu aunoa i nga raraunga kua whakaatuhia me te kore e tono ki te whakahou i te whaarangi i roto i te tirotiro.
  2. OpenShift Papatohu - he atanga tukutuku mai i Red Hat OpenShift, heoi, ka kawea mai etahi atu whanaketanga o te kaupapa ki to huinga, kaore e pai mo te katoa.
  3. Kubernator he kaupapa whakamere, he mea hanga hei atanga taumata-iti (i te Papatohu) me te kaha ki te tiro i nga taonga tautau katoa. Heoi, ko te ahua kua mutu tona whanaketanga.
  4. Paetukutuku - i tera atu ra panuitia he kaupapa e whakakotahi ana i nga mahi o te röpü (e whakaatu ana i te ahua o te huinga o naianei, engari kaore i te whakahaere i ana taonga) me te "whakamana o nga mahi pai" aunoa (tirohia te huinga mo te tika o nga whirihoranga o nga Whakamahinga e rere ana i roto).

Engari ko nga whakatau

He taputapu paerewa te Papatohu mo nga tautau Kubernetes e mahi ana matou. Ko tana whakaurunga ki a GitLab kua noho hei waahanga o ta maatau whakaurunga taunoa, na te mea he maha nga kaiwhakawhanake e hikaka ana mo o raatau kaha ki tenei roopu.

I ia wa ka whai waahi a Kubernetes Dashboard mai i te hapori Open Source (e koa ana matou ki te whai whakaaro ki a raatau), engari i tenei wa ka noho tonu matou ki tenei otinga.

PS

Pānuihia hoki i runga i ta maatau blog:

Source: will.com

Tāpiri i te kōrero