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 ڊيش بورڊ":
ان کي شامل ڪرڻ جي نتيجي ۾، GitLab هيش مهيا ڪندو:
اھي اھي آھن جيڪي اسڪرپٽ لاء دليلن طور استعمال ڪيا ويا آھن. نتيجي طور، انسٽاليشن هن طرح نظر اچي ٿو:
$ 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 استعمال ڪنداسين:
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
جيڪڏهن توهان وٽ هڪ رجسٽري آهي جيڪا اختيار جي ذريعي بند ڪئي وئي آهي، پل تصويرون لاء راز جو استعمال شامل ڪرڻ نه وساريو:
اهو وقت آهي ڊيش بورڊ ڏانهن وڃو ۽ هڪ بلڪه آرڪيڪ لاگ ان بٽڻ ڳوليو:
ان تي ڪلڪ ڪرڻ کان پوء، GitLab اسان کي سلام ڪندو، ان جي معمولي صفحي تي لاگ ان ٿيڻ جي آڇ ڪندي (يقينا، جيڪڏهن اسان اڳ ۾ لاگ ان نه ڪيو آهي):
اسان GitLab سند سان لاگ ان ٿيو - ۽ سڀ ڪجھ ٿي چڪو آھي:
ڊيش بورڊ جي خاصيتن بابت
جيڪڏهن توهان هڪ ڊولپر آهيو جنهن اڳ ۾ ڪبرنيٽس سان ڪم نه ڪيو آهي، يا صرف ڪجهه سببن لاءِ اڳ ۾ ڊيش بورڊ سان منهن نه ڪيو آهي، مان ان جي ڪجهه صلاحيتن کي بيان ڪندس.
Kubernetes جي جديد نسخن سان ڊيش بورڊ جي مطابقت ۽ منصوبي جو مستقبل سوال اٿاري ٿو.
آخري مسئلو خاص ڌيان جي لائق آهي.
ڊيش بورڊ جي حيثيت ۽ متبادل
ڊيش بورڊ مطابقت واري جدول ڪبرنيٽس رليز سان گڏ، پيش ڪيل پروجيڪٽ جي جديد ورزن ۾ (v1.10.1)، ڏاڍو خوش نه ٿيو:
ان جي باوجود، اتي آهي (اڳ ۾ ئي جنوري ۾ منظور ٿيل) پي آر نمبر 3476، جيڪو K8s 1.13 لاءِ سپورٽ جو اعلان ڪري ٿو. ان کان علاوه، پروجيڪٽ جي مسئلن جي وچ ۾ توهان K8s 1.14 ۾ پينل سان ڪم ڪندڙ صارفين جا حوالا ڳولي سگهو ٿا. آخرڪار، انجام ڏئي ٿو پروجيڪٽ جي ڪوڊ بيس ۾ نه روڪيو. تنهن ڪري (گهٽ ۾ گهٽ!) منصوبي جي حقيقي حيثيت ايتري خراب ناهي جيتري اها پهرين سرڪاري مطابقت واري جدول مان لڳي ٿي.
آخرڪار، ڊيش بورڊ جا متبادل آهن. انهن مان:
K8Dash - هڪ نوجوان انٽرفيس (پهريون ڪمٽٽ تاريخ هن سال جي مارچ تائين)، جيڪو اڳ ۾ ئي سٺيون خاصيتون پيش ڪري ٿو، جهڙوڪ ڪلستر جي موجوده حيثيت جي بصري نمائندگي ۽ ان جي شين جي انتظام. هڪ "حقيقي وقت انٽرفيس" جي طور تي پوزيشن، ڇاڪاڻ ته خودڪار طريقي سان ڏيکاريل ڊيٽا کي اپڊيٽ ڪري ٿو بغير توهان کي برائوزر ۾ صفحي کي ريفريش ڪرڻ جي ضرورت آهي.
OpenShift ڪنسول - Red Hat OpenShift مان هڪ ويب انٽرفيس، جيڪو بهرحال، پروجيڪٽ جي ٻين ترقيات کي توهان جي ڪلستر ڏانهن آڻيندو، جيڪو هر ڪنهن لاء مناسب ناهي.
ڪبرنيٽر هڪ دلچسپ پروجيڪٽ آهي، جنهن کي هيٺئين سطح (ڊيش بورڊ کان سواءِ) انٽرفيس جي طور تي ٺاهيو ويو آهي، جنهن ۾ سڀني ڪلستر جي شين کي ڏسڻ جي صلاحيت آهي. بهرحال، اهو ڏسڻ ۾ اچي ٿو ته ان جي ترقي روڪي وئي آهي.
پولارس - صرف ٻئي ڏينهن اعلان ڪيو هڪ پروجيڪٽ جيڪو هڪ پينل جي ڪمن کي گڏ ڪري ٿو (ڪلسٽر جي موجوده حالت کي ڏيکاري ٿو، پر ان جي شين کي منظم نٿو ڪري) ۽ خودڪار "بهترين عملن جي تصديق" (ان ۾ هلندڙ ترتيبن جي ترتيبن جي درستي لاء ڪلستر کي چيڪ ڪري ٿو).
نتيجن جي بدران
ڊيش بورڊ هڪ معياري اوزار آهي Kubernetes ڪلسٽرن لاءِ جن جي اسان خدمت ڪندا آهيون. GitLab سان ان جو انضمام پڻ اسان جي ڊفالٽ تنصيب جو حصو بڻجي چڪو آهي، ڇاڪاڻ ته ڪيترائي ڊولپر انهن صلاحيتن جي باري ۾ پرجوش آهن جيڪي انهن وٽ هن پينل سان آهن.
Kubernetes ڊيش بورڊ وقتي طور تي اوپن سورس ڪميونٽي کان متبادل آهن (۽ اسان انهن تي غور ڪرڻ ۾ خوش آهيون)، پر هن مرحلي تي اسين هن حل سان گڏ رهون ٿا.