Kubernetes ڈیش بورڈ آپ کے چل رہے کلسٹر کے بارے میں تازہ ترین معلومات حاصل کرنے اور اسے کم سے کم کوشش کے ساتھ منظم کرنے کے لیے استعمال میں آسان ٹول ہے۔ آپ اس کی مزید تعریف کرنا شروع کر دیتے ہیں جب ان خصوصیات تک رسائی کی ضرورت نہ صرف منتظمین/DevOps انجینئرز کو ہوتی ہے، بلکہ ان لوگوں کو بھی جو کنسول کے کم عادی ہیں اور/یا kubectl کے ساتھ بات چیت کی تمام پیچیدگیوں سے نمٹنے کا ارادہ نہیں رکھتے ہیں۔ دیگر افادیت. یہ ہمارے ساتھ ہوا: ڈویلپرز Kubernetes ویب انٹرفیس تک فوری رسائی چاہتے تھے، اور چونکہ ہم GitLab استعمال کرتے ہیں، اس لیے حل قدرتی طور پر سامنے آیا۔
یہ کیوں ہے؟
براہ راست ڈویلپرز ڈیبگنگ کے کاموں کے لیے K8s ڈیش بورڈ جیسے ٹول میں دلچسپی لے سکتے ہیں۔ کبھی کبھی آپ لاگز اور وسائل دیکھنا چاہتے ہیں، اور کبھی کبھی پوڈز کو مارنا چاہتے ہیں، ڈیپلائمنٹس/StatefulSets کو پیمانہ کرنا چاہتے ہیں، اور یہاں تک کہ کنٹینر کنسول پر جانا چاہتے ہیں (ایسی درخواستیں بھی ہیں، تاہم، ایک اور طریقہ بھی ہے - مثال کے طور پر، کے ذریعے kubectl-debug).
اس کے علاوہ، مینیجرز کے لیے ایک نفسیاتی لمحہ ہوتا ہے جب وہ کلسٹر کو دیکھنا چاہتے ہیں - یہ دیکھنا کہ "سب کچھ سبز ہے"، اور اس طرح خود کو یقین دلاتے ہیں کہ "سب کچھ کام کر رہا ہے" (جو یقیناً بہت ہی رشتہ دار ہے... لیکن یہ مضمون کے دائرہ کار سے باہر ہے)۔
ایک معیاری CI نظام کے طور پر ہمارے پاس ہے۔ لاگو GitLab: تمام ڈویلپر بھی اسے استعمال کرتے ہیں۔ لہذا، انہیں رسائی فراہم کرنے کے لیے، ڈیش بورڈ کو GitLab اکاؤنٹس کے ساتھ مربوط کرنا منطقی تھا۔
میں یہ بھی نوٹ کروں گا کہ ہم NGINX Ingress استعمال کرتے ہیں۔ اگر آپ دوسروں کے ساتھ کام کرتے ہیں۔ داخلے کے حل، آپ کو اجازت کے لیے آزادانہ طور پر تشریحات کے اینالاگ تلاش کرنے کی ضرورت ہوگی۔
انضمام کی کوشش کر رہے ہیں۔
ڈیش بورڈ کی تنصیب
توجہ: اگر آپ نیچے دیئے گئے اقدامات کو دہرانے جارہے ہیں، تو - غیر ضروری کارروائیوں سے بچنے کے لیے - پہلے اگلی ذیلی سرخی کو پڑھیں۔
چونکہ ہم اس انضمام کو بہت سی تنصیبات میں استعمال کرتے ہیں، اس لیے ہم نے اس کی تنصیب کو خودکار کر دیا ہے۔ اس کے لیے درکار ذرائع میں شائع کیے گئے ہیں۔ خصوصی GitHub ذخیرہ. وہ قدرے ترمیم شدہ YAML کنفیگریشنز پر مبنی ہیں۔ سرکاری ڈیش بورڈ ذخیرہ، نیز فوری تعیناتی کے لیے ایک Bash اسکرپٹ۔
اسکرپٹ ڈیش بورڈ کو کلسٹر میں انسٹال کرتا ہے اور اسے 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
تاہم، اسے استعمال کرنے سے پہلے، آپ کو گٹ لیب: ایڈمن ایریا → ایپلی کیشنز پر جانا ہوگا اور مستقبل کے پینل کے لیے ایک نئی ایپلیکیشن شامل کرنا ہوگی۔ آئیے اسے "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
تاہم، جلد یا بدیر سب کچھ شروع ہو جائے گا۔ اجازت فوری طور پر کام نہیں کرے گی۔! حقیقت یہ ہے کہ استعمال شدہ امیج میں (دوسری امیجز میں صورتحال ایسی ہی ہے) کال بیک میں ری ڈائریکٹ پکڑنے کا عمل غلط طریقے سے لاگو کیا گیا ہے۔ یہ صورت حال اس حقیقت کی طرف لے جاتی ہے کہ oauth اس کوکی کو مٹا دیتا ہے جو خود ہمیں فراہم کرتا ہے...
مسئلہ ایک پیچ کے ساتھ آپ کی اپنی اوتھ امیج بنا کر حل ہو جاتا ہے۔
پیچ اوتھ اور دوبارہ انسٹال کریں۔
ایسا کرنے کے لیے، ہم درج ذیل 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 کے ساتھ کام نہیں کیا ہے، یا محض کسی وجہ سے اس سے پہلے ڈیش بورڈ کا سامنا نہیں ہوا ہے، تو میں اس کی کچھ صلاحیتوں کی وضاحت کروں گا۔
سب سے پہلے، آپ دیکھ سکتے ہیں کہ "ہر چیز سبز ہے":
پوڈز کے لیے مزید تفصیلی ڈیٹا بھی دستیاب ہے، جیسے کہ ماحولیاتی متغیرات، ڈاؤن لوڈ کی گئی تصویر، لانچ کے دلائل، اور ان کی حالت:
تعیناتیوں کی مرئی حالتیں ہیں:
اور دیگر تفصیلات:
... اور تعیناتی کی پیمائش کرنے کی صلاحیت بھی ہے:
اس آپریشن کا نتیجہ:
مضمون کے آغاز میں پہلے ہی ذکر کردہ دیگر مفید خصوصیات میں سے نوشتہ جات دیکھنا ہے:
... اور منتخب پوڈ کے کنٹینر کنسول میں لاگ ان کرنے کا فنکشن:
مثال کے طور پر، آپ نوڈس پر حدود/درخواستوں کو بھی دیکھ سکتے ہیں:
بلاشبہ، یہ پینل کی تمام صلاحیتیں نہیں ہیں، لیکن مجھے امید ہے کہ آپ کو عام خیال آ گیا ہوگا۔
انضمام اور ڈیش بورڈ کے نقصانات
بیان کردہ انضمام میں نہیں ہے۔ رسائی کنٹرول. اس کے ساتھ، GitLab تک رسائی کے حامل تمام صارفین ڈیش بورڈ تک رسائی حاصل کرتے ہیں۔ انہیں ڈیش بورڈ میں بھی وہی رسائی حاصل ہے، جو خود ڈیش بورڈ کے حقوق کے مطابق ہے، جو RBAC میں بیان کیا گیا ہے۔. ظاہر ہے، یہ سب کے لیے موزوں نہیں ہے، لیکن ہمارے معاملے کے لیے یہ کافی نکلا۔
خود ڈیش بورڈ میں نمایاں نقصانات میں سے، میں مندرجہ ذیل کو نوٹ کرتا ہوں:
init کنٹینر کے کنسول میں جانا ناممکن ہے۔
تعیناتیوں اور اسٹیٹفول سیٹس میں ترمیم کرنا ناممکن ہے، حالانکہ اسے کلسٹر رول میں طے کیا جا سکتا ہے۔
Kubernetes کے تازہ ترین ورژنز کے ساتھ ڈیش بورڈ کی مطابقت اور پروجیکٹ کے مستقبل پر سوالات اٹھتے ہیں۔
آخری مسئلہ خصوصی توجہ کا مستحق ہے۔
ڈیش بورڈ کی حیثیت اور متبادل
Kubernetes ریلیز کے ساتھ ڈیش بورڈ مطابقت کی میز، پروجیکٹ کے تازہ ترین ورژن میں پیش کی گئی ہے (v1.10.1)، بہت خوش نہیں:
اس کے باوجود، وہاں ہے (پہلے ہی جنوری میں اپنایا گیا) PR #3476، جو K8s 1.13 کے لیے حمایت کا اعلان کرتا ہے۔ اس کے علاوہ، پروجیکٹ کے مسائل میں سے آپ K8s 1.14 میں پینل کے ساتھ کام کرنے والے صارفین کے حوالے تلاش کر سکتے ہیں۔ آخر میں، عہد کرتا ہے پراجیکٹ کے کوڈ بیس میں نہ رکیں۔ لہذا (کم از کم!) پروجیکٹ کی اصل حیثیت اتنی خراب نہیں ہے جتنی کہ یہ پہلے سرکاری مطابقت کی میز سے معلوم ہوتی ہے۔
آخر میں، ڈیش بورڈ کے متبادل موجود ہیں۔ ان کے درمیان:
K8Dash — ایک نوجوان انٹرفیس (پہلا کمٹ اس سال کے مارچ کی تاریخ کا ہے)، جو پہلے سے ہی اچھی خصوصیات پیش کرتا ہے، جیسے کلسٹر کی موجودہ حیثیت کی بصری نمائندگی اور اس کی اشیاء کا انتظام۔ ایک "ریئل ٹائم انٹرفیس" کے طور پر پوزیشن میں ہے، کیونکہ آپ کو براؤزر میں صفحہ کو ریفریش کرنے کی ضرورت کے بغیر دکھائے گئے ڈیٹا کو خود بخود اپ ڈیٹ کرتا ہے۔
اوپن شفٹ کنسول - Red Hat OpenShift کی طرف سے ایک ویب انٹرفیس، جو، تاہم، آپ کے کلسٹر میں پروجیکٹ کی دیگر پیشرفت لائے گا، جو ہر کسی کے لیے موزوں نہیں ہے۔
کبرنیٹر ایک دلچسپ پروجیکٹ ہے، جو تمام کلسٹر اشیاء کو دیکھنے کی صلاحیت کے ساتھ نچلی سطح کے (ڈیش بورڈ سے زیادہ) انٹرفیس کے طور پر بنایا گیا ہے۔ تاہم، ایسا لگتا ہے کہ اس کی ترقی رک گئی ہے۔
Polaris - دوسرے دن اعلان کیا ایک پروجیکٹ جو پینل کے افعال کو یکجا کرتا ہے (کلسٹر کی موجودہ حالت کو ظاہر کرتا ہے، لیکن اس کی اشیاء کو منظم نہیں کرتا ہے) اور خودکار "بہترین طریقوں کی توثیق" (اس میں چلنے والی تعیناتیوں کی ترتیب کی درستگی کے لیے کلسٹر کو چیک کرتا ہے)۔
نتائج کے بجائے
ڈیش بورڈ Kubernetes کلسٹرز کے لیے ایک معیاری ٹول ہے جو ہم پیش کرتے ہیں۔ GitLab کے ساتھ اس کا انضمام بھی ہماری ڈیفالٹ تنصیب کا حصہ بن گیا ہے، کیونکہ بہت سے ڈویلپر اس پینل کے ساتھ ان کی صلاحیتوں کے بارے میں پرجوش ہیں۔
Kubernetes ڈیش بورڈ کے پاس وقتاً فوقتاً اوپن سورس کمیونٹی کے متبادل ہوتے ہیں (اور ہمیں ان پر غور کرنے میں خوشی ہوتی ہے)، لیکن اس مرحلے پر ہم اس حل کے ساتھ رہتے ہیں۔