የኩበርኔትስ ዳሽቦርድ እና የጊትላብ ተጠቃሚዎች ውህደት

የኩበርኔትስ ዳሽቦርድ እና የጊትላብ ተጠቃሚዎች ውህደት

ኩበርኔትስ ዳሽቦርድ ስለአሂድ ክላስተርህ ወቅታዊ መረጃ ለማግኘት እና በትንሹ ጥረት ለማስተዳደር ለአጠቃቀም ቀላል መሳሪያ ነው። እነዚህን ችሎታዎች ማግኘት በአስተዳዳሪዎች/DevOps መሐንዲሶች ብቻ ሳይሆን ኮንሶሉን እምብዛም ባልለመዱ እና/ወይም ከ kubectl እና ከኩቤክቴል ጋር የመገናኘት ውስብስብ ነገሮችን ሁሉ ለማይፈልጉ ሰዎች ሲያስፈልጉ የበለጠ ማድነቅ ይጀምራሉ። ሌሎች መገልገያዎች. ይህ በእኛ ጋር ሆነ፡ ገንቢዎቹ ወደ Kubernetes ድር በይነገጽ በፍጥነት መድረስ ፈልገው ነበር፣ እና GitLabን ስለምንጠቀም መፍትሄው በተፈጥሮ የመጣ ነው።

ይህ ለምን ሆነ?

ቀጥተኛ ገንቢዎች እንደ K8s ዳሽቦርድ ያሉ ተግባራትን ለማረም ሊፈልጉ ይችላሉ። አንዳንድ ጊዜ መዝገቦችን እና ሀብቶችን ማየት ይፈልጋሉ ፣ እና አንዳንድ ጊዜ ፖድዎችን መግደል ፣ ማሰማራት / StatefulSets ፣ እና ወደ ኮንቴይነሩ ኮንሶል መሄድ እንኳን ይፈልጋሉ (ጥያቄዎችም አሉ ፣ ግን ሌላ መንገድ አለ - ለምሳሌ ፣ በ kubectl-debug).

በተጨማሪም ፣ ለአስተዳዳሪዎች ክላስተርን ለመመልከት ሲፈልጉ የስነ-ልቦና ጊዜ አለ - “ሁሉም ነገር አረንጓዴ” መሆኑን ለማየት ፣ እና “ሁሉም ነገር እየሰራ ነው” (በእርግጥ ፣ በጣም አንፃራዊ ነው… ነገር ግን ይህ ከጽሑፉ ወሰን በላይ ነው).

እንደ መደበኛ የሲአይ ስርዓት አለን። ተተግብሯል 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

ነገር ግን ከመጠቀምዎ በፊት ወደ GitLab: Admin area → Applications ይሂዱ - እና ለወደፊቱ ፓነል አዲስ መተግበሪያ ማከል ያስፈልግዎታል። “ኩበርኔትስ ዳሽቦርድ” እንበለው፡-

የኩበርኔትስ ዳሽቦርድ እና የጊትላብ ተጠቃሚዎች ውህደት

በማከል የተነሳ 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 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

በትኩረት የሚከታተለው አንባቢ ከላይ ያለው ረጅም ሕብረቁምፊ ከውቅረቱ base64 መሆኑን ያያል፡

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

ይህ በ GitLab ውስጥ ያለው የተጠቃሚ ውሂብ ነው, የ Kubernetes ኮድ ምስሉን ከመዝገቡ ውስጥ ይጎትታል.

ሁሉም ነገር ከተጠናቀቀ በኋላ የአሁኑን (በትክክል የማይሰራ) የዳሽቦርድ ጭነት በትእዛዙ ማስወገድ ይችላሉ-

$ ./ctl.sh -d

... እና ሁሉንም ነገር እንደገና ይጫኑ:

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

ወደ ዳሽቦርድ ለመሄድ እና በጣም ጥንታዊ የሆነ የመግቢያ ቁልፍ ለማግኘት ጊዜው አሁን ነው፡-

የኩበርኔትስ ዳሽቦርድ እና የጊትላብ ተጠቃሚዎች ውህደት

እሱን ጠቅ ካደረግን በኋላ፣ GitLab ሰላም ይለናል፣ ወደ ተለመደው ገፁ ለመግባት (በእርግጥ፣ ቀደም ብለን ካልገባን)

የኩበርኔትስ ዳሽቦርድ እና የጊትላብ ተጠቃሚዎች ውህደት

በ GitLab ምስክርነቶች እንገባለን - እና ሁሉም ነገር ተከናውኗል፡

የኩበርኔትስ ዳሽቦርድ እና የጊትላብ ተጠቃሚዎች ውህደት

ስለ ዳሽቦርድ ባህሪዎች

ከዚህ ቀደም ከኩበርኔትስ ጋር ያልሰራህ ገንቢ ከሆንክ ወይም በቀላሉ በሆነ ምክንያት ከዚህ በፊት ዳሽቦርድን ካላጋጠመህ አንዳንድ አቅሞቹን እገልጻለሁ።

በመጀመሪያ ፣ “ሁሉም ነገር አረንጓዴ ነው” የሚለውን ማየት ይችላሉ-

የኩበርኔትስ ዳሽቦርድ እና የጊትላብ ተጠቃሚዎች ውህደት

እንደ አካባቢ ተለዋዋጮች፣ የወረደ ምስል፣ የማስጀመሪያ ክርክሮች እና ሁኔታቸው ለመሳሰሉት ለፖድዎች ተጨማሪ ዝርዝር መረጃም አለ።

የኩበርኔትስ ዳሽቦርድ እና የጊትላብ ተጠቃሚዎች ውህደት

ማሰማራቶች የሚታዩ ሁኔታዎች አሏቸው፡-

የኩበርኔትስ ዳሽቦርድ እና የጊትላብ ተጠቃሚዎች ውህደት

... እና ሌሎች ዝርዝሮች፡-

የኩበርኔትስ ዳሽቦርድ እና የጊትላብ ተጠቃሚዎች ውህደት

... እና ስምምነቱን የመመዘን ችሎታም አለ፡-

የኩበርኔትስ ዳሽቦርድ እና የጊትላብ ተጠቃሚዎች ውህደት

የዚህ ቀዶ ጥገና ውጤት:

የኩበርኔትስ ዳሽቦርድ እና የጊትላብ ተጠቃሚዎች ውህደት

በአንቀጹ መጀመሪያ ላይ ከተጠቀሱት ሌሎች ጠቃሚ ባህሪዎች መካከል የምዝግብ ማስታወሻዎችን ማየት ነው-

የኩበርኔትስ ዳሽቦርድ እና የጊትላብ ተጠቃሚዎች ውህደት

... እና በተመረጠው ፖድ መያዣ ኮንሶል ውስጥ የመግባት ተግባር፡-

የኩበርኔትስ ዳሽቦርድ እና የጊትላብ ተጠቃሚዎች ውህደት

ለምሳሌ፣ እንዲሁም በኖዶች ላይ ያሉትን ገደቦች/ጥያቄዎች መመልከት ትችላለህ፡-

የኩበርኔትስ ዳሽቦርድ እና የጊትላብ ተጠቃሚዎች ውህደት

በእርግጥ እነዚህ ሁሉም የፓነሉ ችሎታዎች አይደሉም, ግን አጠቃላይ ሀሳቡን እንደሚያገኙ ተስፋ አደርጋለሁ.

የመዋሃድ እና ዳሽቦርድ ጉዳቶች

በተገለጸው ውህደት ውስጥ የለም የመዳረሻ መቆጣጠሪያ. በእሱ አማካኝነት ማንኛውም የ GitLab መዳረሻ ያላቸው ሁሉም ተጠቃሚዎች ወደ ዳሽቦርድ መዳረሻ ያገኛሉ። ከዳሽቦርዱ ራሱ መብቶች ጋር የሚዛመደው በዳሽቦርዱ ውስጥ ተመሳሳይ መዳረሻ አላቸው። በ RBAC ውስጥ ተገልጸዋል. በእርግጥ ይህ ለሁሉም ሰው ተስማሚ አይደለም, ነገር ግን ለጉዳያችን በቂ ሆኖ ተገኝቷል.

በዳሽቦርዱ ውስጥ ካሉት ጉልህ ጉዳቶች መካከል የሚከተሉትን አስተውያለሁ።

  • ወደ ኢንቲት ኮንቴይነሩ ኮንሶል ውስጥ ለመግባት የማይቻል ነው;
  • ምንም እንኳን ይህ በClusterRole ውስጥ ሊስተካከል የሚችል ቢሆንም Deployments እና StatefulSetsን ማርትዕ አይቻልም።
  • የዳሽቦርድ ተኳኋኝነት ከቅርብ ጊዜዎቹ የኩበርኔትስ ስሪቶች እና የፕሮጀክቱ የወደፊት ሁኔታ ጥያቄዎችን ያስነሳል።

የመጨረሻው ችግር ልዩ ትኩረት ሊሰጠው ይገባል.

ዳሽቦርድ ሁኔታ እና አማራጮች

የዳሽቦርድ ተኳሃኝነት ሠንጠረዥ ከኩበርኔትስ ልቀቶች ጋር ፣በቅርቡ የፕሮጀክቱ ሥሪት ቀርቧል (v1.10.1), በጣም ደስተኛ አይደለም;

የኩበርኔትስ ዳሽቦርድ እና የጊትላብ ተጠቃሚዎች ውህደት

ይህ ቢሆንም፣ (ቀድሞውንም በጃንዋሪ ተቀባይነት አግኝቷል) PR # 3476, ለ K8s 1.13 ድጋፍን ያስታውቃል. በተጨማሪም ከፕሮጀክት ጉዳዮች መካከል በ K8s 1.14 ውስጥ ከፓነል ጋር የሚሰሩ ተጠቃሚዎችን ማጣቀሻዎችን ማግኘት ይችላሉ. በመጨረሻም፣ ያደርጋል ወደ ፕሮጀክቱ ኮድ መሠረት አያቁሙ. ስለዚህ (ቢያንስ!) የፕሮጀክቱ ትክክለኛ ሁኔታ በመጀመሪያ ከኦፊሴላዊው የተኳሃኝነት ሰንጠረዥ እንደሚመስለው መጥፎ አይደለም.

በመጨረሻም ከዳሽቦርድ አማራጮች አሉ። ከነሱ መካክል:

  1. K8 ዳሽ - ወጣት በይነገጽ (የመጀመሪያው የሚፈፀመው በዚህ ዓመት መጋቢት ወር ላይ ነው) ፣ እሱም ቀድሞውኑ ጥሩ ባህሪዎችን ይሰጣል ፣ ለምሳሌ የእቃዎቹን ስብስብ እና የአስተዳደር ሁኔታን የሚያሳይ ምስላዊ መግለጫ። እንደ "እውነተኛ ጊዜ በይነገጽ" ተቀምጧል, ምክንያቱም በአሳሹ ውስጥ ገጹን ማደስ ሳያስፈልግ የሚታየውን ውሂብ በራስ-ሰር ያዘምናል።
  2. OpenShift Console - የድረ-ገጽ በይነገጽ ከ Red Hat OpenShift, ሆኖም ግን, የፕሮጀክቱን ሌሎች እድገቶችን ወደ ክላስተርዎ ያመጣል, ይህም ለሁሉም ሰው ተስማሚ አይደለም.
  3. Kubernator ሁሉንም የክላስተር ዕቃዎችን የማየት ችሎታ ያለው እንደ ዝቅተኛ ደረጃ (ከዳሽቦርድ) በይነገጽ የተፈጠረ አስደሳች ፕሮጀክት ነው። ይሁን እንጂ እድገቱ የቆመ ይመስላል.
  4. ፖላሪስ - ልክ ሌላ ቀን አስታወቀ የአንድ ፓነል ተግባራትን የሚያጣምር ፕሮጀክት (የእዝባውን ወቅታዊ ሁኔታ ያሳያል ነገር ግን ዕቃዎቹን የማያስተዳድር) እና አውቶማቲክ “ምርጥ ልምዶችን ማረጋገጥ” (በውስጡ የሚሄዱትን የዲፕሎይመንት ውቅረቶች ትክክለኛነት ለማረጋገጥ ክላስተርን ያረጋግጣል)።

ከመደምደም ይልቅ

ዳሽቦርድ ለምናገለግላቸው የኩበርኔትስ ስብስቦች መደበኛ መሳሪያ ነው። ከ GitLab ጋር ያለው ውህደት እንዲሁ የእኛ ነባሪ ጭነት አካል ሆኗል፣ ምክንያቱም ብዙ ገንቢዎች በዚህ ፓነል ላይ ስላላቸው ችሎታ በጣም ስለሚደሰቱ።

የኩበርኔትስ ዳሽቦርድ በየጊዜው ከክፍት ምንጭ ማህበረሰብ አማራጮች አሉት (እና እነሱን ከግምት ውስጥ ስናስገባ ደስተኞች ነን) ግን በዚህ ደረጃ በዚህ መፍትሄ እንቀጥላለን።

PS

በብሎጋችን ላይ ያንብቡ፡-

ምንጭ: hab.com

አስተያየት ያክሉ