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":
Ko te hua o te taapiri, ka tukuna e GitLab nga tohu:
Ko ratou nga mea e whakamahia ana hei tohenga mo te tuhinga. Ko te mutunga, he penei te ahua o te whakaurunga:
$ 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:
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:
Kua tae ki te wa ki te haere ki te Papatohu me te kimi i tetahi paatene takiuru tino tawhito:
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):
Ka takiuru matou me nga tohu tohu GitLab - ka oti nga mea katoa:
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":
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:
Ka kitea nga mana o te tukunga:
...me etahi atu korero:
... kei reira ano hoki te kaha ki te whakarahi i te tukunga:
Ko te hua o tenei mahi:
I roto i etahi atu waahanga whai hua kua whakahuahia i te timatanga o te tuhinga ko te tiro i nga raarangi:
... me te mahi ki te takiuru ki roto i te papatohu ipu o te putunga kua tohua:
Hei tauira, ka taea hoki e koe te titiro ki nga rohe/tono i runga i nga pona:
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:
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:
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.
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.
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.
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.