Kubernetes Mælaborð er auðvelt í notkun tól til að fá uppfærðar upplýsingar um hlaupandi klasann þinn og stjórna honum með lágmarks fyrirhöfn. Þú byrjar að meta það enn meira þegar aðgangur að þessum möguleikum er nauðsynlegur, ekki aðeins fyrir stjórnendur/DevOps verkfræðinga, heldur líka fyrir þá sem eru minna vanir stjórnborðinu og/eða ætla ekki að takast á við allar ranghala samskipti við kubectl og aðrar veitur. Þetta gerðist hjá okkur: forritararnir vildu fá skjótan aðgang að Kubernetes vefviðmótinu og þar sem við notum GitLab kom lausnin af sjálfu sér.
Hvers vegna er þetta?
Beinir verktaki gæti haft áhuga á tæki eins og K8s mælaborði til að kemba verkefni. Stundum vilt þú skoða annála og tilföng, og stundum drepa belg, skala Deployments/StatefulSets og jafnvel fara í gámaborðið (það eru líka beiðnir sem þó er til önnur leið - til dæmis í gegnum kubectl-kembiforrit).
Að auki er sálfræðileg stund fyrir stjórnendur þegar þeir vilja skoða klasann - að sjá að „allt er grænt“ og fullvissa sig þannig um að „allt sé að virka“ (sem er auðvitað mjög afstætt... en þetta er utan gildissviðs greinarinnar).
Sem staðlað CI kerfi sem við höfum gildir GitLab: allir verktaki nota það líka. Þess vegna, til að veita þeim aðgang, var rökrétt að samþætta mælaborð með GitLab reikningum.
Ég mun líka taka fram að við notum NGINX Ingress. Ef þú vinnur með öðrum innrásarlausnir, þú þarft sjálfstætt að finna hliðstæður athugasemda fyrir heimild.
Reynir að sameina
Uppsetning mælaborðs
Attention: Ef þú ætlar að endurtaka skrefin hér að neðan, þá - til að forðast óþarfa aðgerðir - lestu fyrst yfir í næsta undirfyrirsögn.
Þar sem við notum þessa samþættingu í mörgum uppsetningum höfum við sjálfvirkt uppsetningu hennar. Þær heimildir sem þarf til þess eru birtar í sérstök GitHub geymsla. Þau eru byggð á lítillega breyttum YAML stillingum frá opinber geymsla mælaborðs, auk Bash handrits fyrir skjóta dreifingu.
Handritið setur upp mælaborð í klasanum og stillir það fyrir samþættingu við 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
Hins vegar, áður en þú notar það, þarftu að fara í GitLab: Admin svæði → Forrit - og bæta við nýju forriti fyrir framtíðarspjaldið. Við skulum kalla það „kubernetes mælaborð“:
Sem afleiðing af því að bæta því við mun GitLab veita kjötkássa:
Það eru þau sem eru notuð sem rök fyrir handritinu. Fyrir vikið lítur uppsetningin svona út:
Eftir það skulum við athuga hvort allt hafi byrjað:
$ 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
Fyrr eða síðar byrjar þó allt heimild mun ekki virka strax! Staðreyndin er sú að í myndinni sem notuð er (aðstæður í öðrum myndum eru svipaðar) er ferlið við að ná tilvísun í svarhringingunni rangt útfært. Þessar aðstæður leiða til þess að oauth eyðir kexinu sem oauth sjálft gefur okkur...
Vandamálið er leyst með því að búa til þína eigin oauth mynd með plástri.
Patchaðu oauth og settu upp aftur
Til að gera þetta munum við nota eftirfarandi Dockerfile:
Og hér er hvernig rd.patch plásturinn sjálfur lítur út
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
Nú geturðu smíðað myndina og ýtt henni inn í GitLab okkar. Næst inn manifests/kube-dashboard-oauth2-proxy.yaml tilgreina notkun á myndinni sem þú vilt (skipta um hana fyrir þína eigin):
image: docker.io/colemickens/oauth2_proxy:latest
Ef þú ert með skrásetningu sem er lokað með leyfi, ekki gleyma að bæta við notkun leyndarmáls fyrir draga myndir:
imagePullSecrets:
- name: gitlab-registry
... og bættu við leyndarmálinu sjálfu fyrir skrásetninguna:
Það er kominn tími til að fara á mælaborðið og finna frekar fornaldarlegan innskráningarhnapp:
Eftir að hafa smellt á það mun GitLab heilsa okkur og bjóðast til að skrá þig inn á venjulega síðu sína (auðvitað, ef við höfum ekki áður skráð þig inn þar):
Við skráum okkur inn með GitLab skilríkjum - og allt er gert:
Um eiginleika mælaborðsins
Ef þú ert verktaki sem hefur ekki unnið með Kubernetes áður, eða einfaldlega af einhverjum ástæðum hefur ekki kynnst mælaborði áður, mun ég sýna nokkra af möguleikum þess.
Í fyrsta lagi geturðu séð að "allt er grænt":
Ítarlegri gögn eru einnig fáanleg fyrir belg, svo sem umhverfisbreytur, niðurhalaða mynd, ræsingarrök og ástand þeirra:
Dreifingar hafa sýnilegar stöður:
... og aðrar upplýsingar:
... og það er líka möguleikinn til að skala dreifinguna:
Niðurstaðan af þessari aðgerð:
Meðal annarra gagnlegra eiginleika sem þegar hefur verið minnst á í upphafi greinarinnar er að skoða logs:
... og aðgerðin til að skrá þig inn í gámaborðið á völdum belg:
Til dæmis geturðu líka skoðað takmörk/beiðnir á hnútum:
Auðvitað eru þetta ekki allir möguleikar pallborðsins, en ég vona að þú fáir almenna hugmynd.
Ókostir samþættingar og mælaborðs
Í samþættingu sem lýst er er engin aðgangsstýring. Með því fá allir notendur með hvaða aðgang að GitLab aðgang að mælaborðinu. Þeir hafa sama aðgang í mælaborðinu sjálfu, sem samsvarar réttindum stjórnborðsins sjálfs, sem eru skilgreind í RBAC. Augljóslega hentar þetta ekki öllum, en fyrir okkar tilvik reyndist þetta vera nóg.
Meðal áberandi ókosta í mælaborðinu sjálfu tek ég eftir eftirfarandi:
það er ómögulegt að komast inn í stjórnborðið á init ílátinu;
það er ómögulegt að breyta Deployments og StatefulSets, þó það sé hægt að laga þetta í ClusterRole;
Samhæfni mælaborðs við nýjustu útgáfur af Kubernetes og framtíð verkefnisins vekur upp spurningar.
Síðasta vandamálið verðskuldar sérstaka athygli.
Staða mælaborðs og valkostir
Samhæfingartafla mælaborðs með Kubernetes útgáfum, kynnt í nýjustu útgáfu verkefnisins (v1.10.1), ekki mjög ánægður:
Þrátt fyrir þetta er (þegar samþykkt í janúar) PR # 3476, sem tilkynnir um stuðning við K8s 1.13. Að auki, meðal verkefna má finna tilvísanir í notendur sem vinna með pallborðið í K8s 1.14. Loksins, skuldbindur sig inn í kóðagrunn verkefnisins hætta ekki. Þannig að (að minnsta kosti!) raunveruleg staða verkefnisins er ekki eins slæm og hún gæti fyrst virst af opinberu eindrægnitöflunni.
Að lokum eru valkostir við mælaborðið. Meðal þeirra:
K8Dash — ungt viðmót (fyrstu skuldbindingarnar eru frá mars á þessu ári), sem nú þegar býður upp á góða eiginleika, svo sem sjónræna framsetningu á núverandi stöðu klasans og stjórnun hluta hans. Staðsett sem „rauntímaviðmót“ vegna þess uppfærir sjálfkrafa birt gögn án þess að þú þurfir að endurnýja síðuna í vafranum.
OpenShift Console - vefviðmót frá Red Hat OpenShift, sem mun hins vegar koma með aðra þróun verkefnisins í þinn klasa, sem hentar ekki öllum.
Kubernator er áhugavert verkefni, búið til sem lægra stig (en mælaborð) viðmót með getu til að skoða alla klasahluti. Hins vegar lítur út fyrir að þróun þess hafi stöðvast.
Polaris - bara um daginn tilkynnt verkefni sem sameinar aðgerðir spjalds (sýnir núverandi stöðu þyrpingarinnar, en stjórnar ekki hlutum hans) og sjálfvirka „fullgildingu bestu starfsvenja“ (athugar þyrpinguna fyrir réttar stillingar dreifingar sem keyra í honum).
Í stað niðurstaðna
Mælaborð er staðlað tól fyrir Kubernetes klasana sem við þjónum. Samþætting þess við GitLab hefur einnig orðið hluti af sjálfgefna uppsetningunni okkar, þar sem margir forritarar eru spenntir fyrir þeim getu sem þeir hafa með þessu spjaldi.
Kubernetes Dashboard hefur reglulega valkosti frá Open Source samfélaginu (og við erum ánægð að íhuga þá), en á þessu stigi erum við áfram með þessa lausn.