د Kubernetes ډشبورډ او GitLab کاروونکو ادغام

د Kubernetes ډشبورډ او GitLab کاروونکو ادغام

د Kubernetes ډشبورډ ستاسو د چلولو کلستر په اړه تازه معلومات ترلاسه کولو او د لږې هڅې سره اداره کولو لپاره د کارولو اسانه وسیله ده. تاسو د دې نور هم ستاینه پیل کوئ کله چې دې وړتیاو ته لاسرسی نه یوازې د مدیرانو/DevOps انجینرانو لخوا اړین وي ، بلکه د هغو کسانو لخوا هم چې د کنسول سره لږ عادی دي او / یا د کیوبیکل سره د متقابل عمل ټولو پیچلتیاو سره معامله کولو اراده نلري. نورې اسانتیاوې. دا زموږ سره پیښ شوي: پراختیا کونکي د کوبرنیټ ویب انٹرفیس ته ګړندي لاسرسی غواړي ، او له هغه وخته چې موږ ګیټ لیب کاروو ، حل په طبیعي ډول راغلی.

دا ولې؟

مستقیم پراختیا کونکي ممکن د ډیبګ کولو دندو لپاره د 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 ته لاړ شئ: د ادارې ساحه → غوښتنلیکونه - او د راتلونکي پینل لپاره نوی غوښتنلیک اضافه کړئ. راځئ چې دې ته "کوبرنیټس ډشبورډ" ووایو:

د 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

اوس تاسو کولی شئ عکس جوړ کړئ او زموږ ګیټ لیب ته یې فشار ورکړئ. بل دننه 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

پام لرونکی لوستونکی به وګوري چې پورته اوږد تار د ترتیب څخه base64 دی:

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

دا په ګیټ لیب کې د کارونکي ډیټا دي ، د کوبرنیټس کوډ به عکس له راجسټری څخه راوباسي.

د هرڅه ترسره کیدو وروسته ، تاسو کولی شئ د کمانډ سره د ډشبورډ نصب اوسنی (په سمه توګه کار نه کوي) لرې کړئ:

$ ./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 کانټینر کنسول ته ورشئ؛
  • دا ناممکنه ده چې د تعییناتو او StatefulSets ایډیټ کړئ، که څه هم دا په ClusterRole کې ټاکل کیدی شي؛
  • د Kubernetes وروستي نسخو سره د ډشبورډ مطابقت او د پروژې راتلونکي پوښتنې راپورته کوي.

وروستۍ ستونزه د ځانګړې پاملرنې وړ ده.

د ډشبورډ حالت او بدیلونه

د کوبرنیټس ریلیزونو سره د ډشبورډ مطابقت جدول ، د پروژې په وروستي نسخه کې وړاندې شوی (v1.10.1)، ډیر خوشحاله نه دی:

د Kubernetes ډشبورډ او GitLab کاروونکو ادغام

سره له دې، شتون لري (د جنوري په میاشت کې تصویب شوی) PR # 3476، کوم چې د K8s 1.13 لپاره ملاتړ اعلانوي. برسېره پردې، د پروژې مسلو په منځ کې تاسو کولی شئ هغه کاروونکو ته مراجعه ومومئ چې په K8s 1.14 کې د پینل سره کار کوي. په پای کې، ژمنې کوي د پروژې کوډ بیس ته مه ځئ. نو (لږترلږه!) د پروژې اصلي حالت دومره خراب ندی لکه څنګه چې دا د رسمي مطابقت میز څخه ښکاري.

په نهایت کې ، د ډشبورډ لپاره بدیلونه شتون لري. د هغو په منځ کې:

  1. K8Dash - یو ځوان انٹرفیس (لومړی د دې کال د مارچ په میاشت کې نیټه ده)، کوم چې دمخه ښه ځانګړتیاوې وړاندې کوي، لکه د کلستر د اوسني حالت بصری استازیتوب او د دې شیانو مدیریت. د "ریښتیني وخت انٹرفیس" په توګه موقعیت لري ، ځکه چې په اتوماتيک ډول ښودل شوي ډاټا تازه کوي پرته له دې چې تاسو په براوزر کې پاڼه تازه کړئ.
  2. OpenShift کنسول - د Red Hat OpenShift څخه یو ویب انٹرفیس، کوم چې په هرصورت، د پروژې نور پرمختګونه به ستاسو کلستر ته راوړي، کوم چې د هرچا لپاره مناسب ندي.
  3. کوبرنیټر یوه په زړه پورې پروژه ده، د ټیټې کچې (د ډشبورډ په پرتله) د انٹرفیس په توګه رامینځته شوې چې د ټولو کلستر شیانو لیدلو وړتیا لري. په هرصورت، داسې ښکاري چې د هغې پراختیا بنده شوې ده.
  4. پولاریان - یوازې بله ورځ اعلان وکړ یوه پروژه چې د پینل دندې سره یوځای کوي (د کلستر اوسنی حالت ښیې ، مګر خپل توکي نه اداره کوي) او اتوماتیک "غوره عملونو تایید" (په دې کې د پلي کولو ترتیبونو د سموالي لپاره کلسټر چیک کوي).

د پایلو پرځای

ډشبورډ د Kubernetes کلسترونو لپاره یو معیاري وسیله ده چې موږ یې خدمت کوو. د GitLab سره د دې ادغام هم زموږ د ډیفالټ نصب برخه ګرځیدلې ، ځکه چې ډیری پراختیا کونکي د دې پینل سره د وړتیاو په اړه خوښ دي.

د Kubernetes ډشبورډ په دوره توګه د خلاصې سرچینې ټولنې څخه بدیلونه لري (او موږ خوښ یو چې دوی یې په پام کې ونیسو)، مګر پدې مرحله کې موږ د دې حل سره پاتې یو.

PS

زموږ په بلاګ کې هم ولولئ:

سرچینه: www.habr.com

Add a comment