Kubernetes ڊيش بورڊ ۽ GitLab استعمال ڪندڙن جو انضمام

Kubernetes ڊيش بورڊ ۽ GitLab استعمال ڪندڙن جو انضمام

Kubernetes ڊيش بورڊ هڪ استعمال ۾ آسان اوزار آهي جيڪو توهان جي هلندڙ ڪلسٽر بابت تازه ترين معلومات حاصل ڪرڻ ۽ ان کي گهٽ ۾ گهٽ ڪوشش سان منظم ڪرڻ لاءِ آهي. توھان ان کي اڃا به وڌيڪ ساراھڻ شروع ڪندا آھيو جڏھن انھن خاصيتن تائين رسائي جي ضرورت آھي نه رڳو منتظمين/DevOps انجنيئرن، پر انھن پاران پڻ جيڪي ڪنسول جا گھٽ عادي آھن ۽/يا ڪبيڪٽل سان رابطي جي سڀني پيچيدگين سان معاملو ڪرڻ جو ارادو نه رکندا آھن ۽ ٻيون افاديتون. اهو اسان سان ٿيو: ڊولپرز چاهيون ٿا تڪڙو رسائي Kubernetes ويب انٽرفيس تائين، ۽ جيئن ته اسان استعمال ڪريون ٿا GitLab، حل قدرتي طور تي آيو.

ائين ڇو آهي؟

سڌو ڊولپرز شايد دلچسپي رکن ٿيون ھڪڙي اوزار ۾ جيئن ڊيبگنگ ڪمن لاءِ K8s ڊيش بورڊ. ڪڏهن ڪڏهن توهان لاگز ۽ وسيلن کي ڏسڻ چاهيو ٿا، ۽ ڪڏهن ڪڏهن پوڊ کي مارڻ، ڊيپلائيمينٽ/StatefulSets کي ماپڻ، ۽ حتي ڪنٽينر ڪنسول ڏانهن وڃو (اتي به اهڙيون درخواستون آهن، جڏهن ته، اتي هڪ ٻيو طريقو آهي - مثال طور، ذريعي. kubectl-debug).

ان کان علاوه، مينيجرز لاء هڪ نفسياتي لمحو آهي جڏهن اهي ڪلستر کي ڏسڻ چاهيندا آهن - اهو ڏسڻ لاء ته "هر شي سائي آهي"، ۽ اهڙيء طرح پاڻ کي يقين ڏياريو ته "هر شي ڪم ڪري رهي آهي" (جيڪو، يقينا، تمام گهڻو نسبتا آهي ... پر هي مضمون جي دائري کان ٻاهر آهي).

اسان وٽ هڪ معياري CI سسٽم آهي لاڳو ٿيل GitLab: سڀ ڊولپر ان کي استعمال ڪن ٿا. تنهن ڪري، انهن کي رسائي فراهم ڪرڻ لاء، اهو منطقي هو ڊيش بورڊ کي GitLab اڪائونٽن سان ضم ڪرڻ.

مان پڻ نوٽ ڪندس ته اسان استعمال ڪندا آهيون NGINX Ingress. جيڪڏھن توھان ٻين سان گڏ ڪم ڪريو داخل ٿيڻ جا حل، توهان کي اجازت ڏيڻ لاءِ آزاديءَ سان تشريح جا اينالاگ ڳولڻا پوندا.

انضمام جي ڪوشش

ڊيش بورڊ جي انسٽاليشن

ڄاڻ: جيڪڏھن توھان ھيٺ ڏنل قدمن کي ورجائڻ وارا آھيو، ته پوءِ - غير ضروري عملن کان بچڻ لاءِ - پھريون پھريون ھيٺيون ذيلي عنوان پڙھو.

جيئن ته اسان هن انضمام کي ڪيترن ئي تنصيب ۾ استعمال ڪندا آهيون، اسان ان جي تنصيب کي خودڪار ڪيو آهي. ان لاءِ گهربل ذريعن ۾ شايع ٿيل آهن خاص GitHub مخزن. اهي ٿورڙي تبديل ٿيل YAML ترتيبن تي ٻڌل آهن سرڪاري ڊيش بورڊ مخزن، انهي سان گڏ هڪ بش اسڪرپٽ جلدي ترتيب ڏيڻ لاءِ.

اسڪرپٽ ڊيش بورڊ کي ڪلستر ۾ انسٽال ڪري ٿو ۽ ان کي 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

بهرحال، ان کي استعمال ڪرڻ کان پهريان، توهان کي وڃڻ جي ضرورت آهي GitLab: Admin area → Applications - ۽ شامل ڪريو نئين ايپليڪيشن لاءِ مستقبل جي پينل. اچو ته ان کي سڏين "kubernetes ڊيش بورڊ":

Kubernetes ڊيش بورڊ ۽ GitLab استعمال ڪندڙن جو انضمام

ان کي شامل ڪرڻ جي نتيجي ۾، GitLab هيش مهيا ڪندو:

Kubernetes ڊيش بورڊ ۽ GitLab استعمال ڪندڙن جو انضمام

اھي اھي آھن جيڪي اسڪرپٽ لاء دليلن طور استعمال ڪيا ويا آھن. نتيجي طور، انسٽاليشن هن طرح نظر اچي ٿو:

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

ان کان پوء، اچو ته چيڪ ڪريو ته سڀ ڪجهه شروع ڪيو:

$ 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

جلد يا بعد ۾ سڀڪنھن شيء کي شروع ٿيندو، تنهن هوندي به اجازت ڏيڻ فوري طور تي ڪم نه ڪندو! حقيقت اها آهي ته استعمال ٿيل تصوير ۾ (ٻين تصويرن جي صورتحال ساڳي آهي) ڪال بڪ ۾ ريڊائريڪٽ کي پڪڙڻ جو عمل غلط طور تي لاڳو ڪيو ويو آهي. اها صورتحال انهي حقيقت ڏانهن وڌي ٿي ته اوٿ ڪوڪي کي ختم ڪري ٿو جيڪا اوٿ پاڻ اسان کي فراهم ڪري ٿي ...

مسئلو حل ڪيو ويو آهي توهان جي پنهنجي حلف واري تصوير کي پيچ سان تعمير ڪندي.

پيچ حلف ۽ ٻيهر انسٽال ڪريو

هن کي ڪرڻ لاء، اسان هيٺ ڏنل Dockerfile استعمال ڪنداسين:

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

۽ هتي اهو آهي ته rd.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

هاڻي توهان تصوير ٺاهي سگهو ٿا ۽ ان کي اسان جي GitLab ۾ دٻايو. ايندڙ ۾ manifests/kube-dashboard-oauth2-proxy.yaml مطلوب تصوير جي استعمال کي ظاهر ڪريو (ان کي پنھنجي تصوير سان تبديل ڪريو):

 image: docker.io/colemickens/oauth2_proxy:latest

جيڪڏهن توهان وٽ هڪ رجسٽري آهي جيڪا اختيار جي ذريعي بند ڪئي وئي آهي، پل تصويرون لاء راز جو استعمال شامل ڪرڻ نه وساريو:

      imagePullSecrets:
     - name: gitlab-registry

... ۽ رجسٽري لاءِ راز پاڻ کي شامل ڪريو:

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

ڌيان پڙهندڙ ڏسندو ته مٿي ڏنل ڊگھي تار بنيادي 64 ترتيب کان آهي:

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

هي GitLab ۾ استعمال ڪندڙ ڊيٽا آهي، ڪبرنيٽس ڪوڊ تصوير کي رجسٽري مان ڪڍندو.

سڀ ڪجھ ٿيڻ کان پوء، توھان ھٽائي سگھو ٿا موجوده (صحيح ڪم نه ڪري رھيو آھي) ڊيش بورڊ تنصيب کي حڪم سان:

$ ./ctl.sh -d

... ۽ هر شي کي ٻيهر انسٽال ڪريو:

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

اهو وقت آهي ڊيش بورڊ ڏانهن وڃو ۽ هڪ بلڪه آرڪيڪ لاگ ان بٽڻ ڳوليو:

Kubernetes ڊيش بورڊ ۽ GitLab استعمال ڪندڙن جو انضمام

ان تي ڪلڪ ڪرڻ کان پوء، GitLab اسان کي سلام ڪندو، ان جي معمولي صفحي تي لاگ ان ٿيڻ جي آڇ ڪندي (يقينا، جيڪڏهن اسان اڳ ۾ لاگ ان نه ڪيو آهي):

Kubernetes ڊيش بورڊ ۽ GitLab استعمال ڪندڙن جو انضمام

اسان GitLab سند سان لاگ ان ٿيو - ۽ سڀ ڪجھ ٿي چڪو آھي:

Kubernetes ڊيش بورڊ ۽ GitLab استعمال ڪندڙن جو انضمام

ڊيش بورڊ جي خاصيتن بابت

جيڪڏهن توهان هڪ ڊولپر آهيو جنهن اڳ ۾ ڪبرنيٽس سان ڪم نه ڪيو آهي، يا صرف ڪجهه سببن لاءِ اڳ ۾ ڊيش بورڊ سان منهن نه ڪيو آهي، مان ان جي ڪجهه صلاحيتن کي بيان ڪندس.

پهرين، توهان ڏسي سگهو ٿا ته "هر شي سائي آهي":

Kubernetes ڊيش بورڊ ۽ GitLab استعمال ڪندڙن جو انضمام

وڌيڪ تفصيلي ڊيٽا پوڊز لاءِ پڻ موجود آهي، جهڙوڪ ماحولياتي متغير، ڊائون لوڊ ڪيل تصوير، لانچ دلائل، ۽ انهن جي حالت:

Kubernetes ڊيش بورڊ ۽ GitLab استعمال ڪندڙن جو انضمام

ڊيپلائيشن جون حالتون نظر اچن ٿيون:

Kubernetes ڊيش بورڊ ۽ GitLab استعمال ڪندڙن جو انضمام

... ۽ ٻيا تفصيل:

Kubernetes ڊيش بورڊ ۽ GitLab استعمال ڪندڙن جو انضمام

... ۽ اتي پڻ قابليت آھي ڊيپلائيشن کي ماپڻ جي:

Kubernetes ڊيش بورڊ ۽ GitLab استعمال ڪندڙن جو انضمام

هن آپريشن جو نتيجو:

Kubernetes ڊيش بورڊ ۽ GitLab استعمال ڪندڙن جو انضمام

مضمون جي شروعات ۾ اڳ ۾ ئي ذڪر ڪيل ٻين مفيد خاصيتن ۾ لاگ ڏسڻ آهي:

Kubernetes ڊيش بورڊ ۽ GitLab استعمال ڪندڙن جو انضمام

... ۽ فنڪشن منتخب ٿيل پوڊ جي ڪنٽينر ڪنسول ۾ لاگ ان ٿيڻ لاءِ:

Kubernetes ڊيش بورڊ ۽ GitLab استعمال ڪندڙن جو انضمام

مثال طور، توھان پڻ ڏسي سگھو ٿا حدون / درخواستون نوڊس تي:

Kubernetes ڊيش بورڊ ۽ GitLab استعمال ڪندڙن جو انضمام

يقينن، اهي سڀئي صلاحيتون پينل نه آهن، پر مون کي اميد آهي ته توهان عام خيال حاصل ڪندا.

انضمام ۽ ڊيش بورڊ جا نقصان

بيان ڪيل انضمام ۾ ڪو به نه آهي رسائي ڪنٽرول. ان سان گڏ، سڀئي صارف جيڪي GitLab تائين رسائي حاصل ڪن ٿا ڊيش بورڊ تائين رسائي حاصل ڪن ٿا. انهن کي ڊيش بورڊ ۾ ساڳي رسائي آهي، ڊيش بورڊ جي حقن جي مطابق، جيڪا RBAC ۾ وضاحت ڪئي وئي آهي. ظاهر آهي، اهو هر ڪنهن لاء مناسب ناهي، پر اسان جي معاملي لاء اهو ڪافي آهي.

پاڻ ڊيش بورڊ ۾ قابل ذڪر نقصانن مان، مان هيٺيان نوٽ ڪريان ٿو:

  • init ڪنٽينر جي ڪنسول ۾ داخل ٿيڻ ناممڪن آهي؛
  • ڊيپلائيمينٽس ۽ اسٽيٽفول سيٽن کي ايڊٽ ڪرڻ ناممڪن آهي، جيتوڻيڪ اهو ڪلستر رول ۾ طئي ڪري سگهجي ٿو.
  • Kubernetes جي جديد نسخن سان ڊيش بورڊ جي مطابقت ۽ منصوبي جو مستقبل سوال اٿاري ٿو.

آخري مسئلو خاص ڌيان جي لائق آهي.

ڊيش بورڊ جي حيثيت ۽ متبادل

ڊيش بورڊ مطابقت واري جدول ڪبرنيٽس رليز سان گڏ، پيش ڪيل پروجيڪٽ جي جديد ورزن ۾ (v1.10.1)، ڏاڍو خوش نه ٿيو:

Kubernetes ڊيش بورڊ ۽ GitLab استعمال ڪندڙن جو انضمام

ان جي باوجود، اتي آهي (اڳ ۾ ئي جنوري ۾ منظور ٿيل) پي آر نمبر 3476، جيڪو K8s 1.13 لاءِ سپورٽ جو اعلان ڪري ٿو. ان کان علاوه، پروجيڪٽ جي مسئلن جي وچ ۾ توهان K8s 1.14 ۾ پينل سان ڪم ڪندڙ صارفين جا حوالا ڳولي سگهو ٿا. آخرڪار، انجام ڏئي ٿو پروجيڪٽ جي ڪوڊ بيس ۾ نه روڪيو. تنهن ڪري (گهٽ ۾ گهٽ!) منصوبي جي حقيقي حيثيت ايتري خراب ناهي جيتري اها پهرين سرڪاري مطابقت واري جدول مان لڳي ٿي.

آخرڪار، ڊيش بورڊ جا متبادل آهن. انهن مان:

  1. K8Dash - هڪ نوجوان انٽرفيس (پهريون ڪمٽٽ تاريخ هن سال جي مارچ تائين)، جيڪو اڳ ۾ ئي سٺيون خاصيتون پيش ڪري ٿو، جهڙوڪ ڪلستر جي موجوده حيثيت جي بصري نمائندگي ۽ ان جي شين جي انتظام. هڪ "حقيقي وقت انٽرفيس" جي طور تي پوزيشن، ڇاڪاڻ ته خودڪار طريقي سان ڏيکاريل ڊيٽا کي اپڊيٽ ڪري ٿو بغير توهان کي برائوزر ۾ صفحي کي ريفريش ڪرڻ جي ضرورت آهي.
  2. OpenShift ڪنسول - Red Hat OpenShift مان هڪ ويب انٽرفيس، جيڪو بهرحال، پروجيڪٽ جي ٻين ترقيات کي توهان جي ڪلستر ڏانهن آڻيندو، جيڪو هر ڪنهن لاء مناسب ناهي.
  3. ڪبرنيٽر هڪ دلچسپ پروجيڪٽ آهي، جنهن کي هيٺئين سطح (ڊيش بورڊ کان سواءِ) انٽرفيس جي طور تي ٺاهيو ويو آهي، جنهن ۾ سڀني ڪلستر جي شين کي ڏسڻ جي صلاحيت آهي. بهرحال، اهو ڏسڻ ۾ اچي ٿو ته ان جي ترقي روڪي وئي آهي.
  4. پولارس - صرف ٻئي ڏينهن اعلان ڪيو هڪ پروجيڪٽ جيڪو هڪ پينل جي ڪمن کي گڏ ڪري ٿو (ڪلسٽر جي موجوده حالت کي ڏيکاري ٿو، پر ان جي شين کي منظم نٿو ڪري) ۽ خودڪار "بهترين عملن جي تصديق" (ان ۾ هلندڙ ترتيبن جي ترتيبن جي درستي لاء ڪلستر کي چيڪ ڪري ٿو).

نتيجن جي بدران

ڊيش بورڊ هڪ معياري اوزار آهي Kubernetes ڪلسٽرن لاءِ جن جي اسان خدمت ڪندا آهيون. GitLab سان ان جو انضمام پڻ اسان جي ڊفالٽ تنصيب جو حصو بڻجي چڪو آهي، ڇاڪاڻ ته ڪيترائي ڊولپر انهن صلاحيتن جي باري ۾ پرجوش آهن جيڪي انهن وٽ هن پينل سان آهن.

Kubernetes ڊيش بورڊ وقتي طور تي اوپن سورس ڪميونٽي کان متبادل آهن (۽ اسان انهن تي غور ڪرڻ ۾ خوش آهيون)، پر هن مرحلي تي اسين هن حل سان گڏ رهون ٿا.

پي ايس

اسان جي بلاگ تي پڻ پڙهو:

جو ذريعو: www.habr.com

تبصرو شامل ڪريو