Kubernetes උපකරණ පුවරුව සහ GitLab පරිශීලකයන් ඒකාබද්ධ කිරීම

Kubernetes උපකරණ පුවරුව සහ GitLab පරිශීලකයන් ඒකාබද්ධ කිරීම

Kubernetes Dashboard යනු ක්‍රියාත්මක වන පොකුරක් සහ එහි අවම කළමනාකරණය පිළිබඳ යාවත්කාලීන තොරතුරු ලබා ගැනීම සඳහා භාවිතයට පහසු මෙවලමකි. පරිපාලකයින්ට/DevOps ඉංජිනේරුවන්ට පමණක් නොව, කොන්සෝලයට අඩු හුරුපුරුදු අයට සහ/හෝ kubectl සමඟ අන්තර්ක්‍රියා කිරීමේ සියලු සංකීර්ණතා සමඟ කටයුතු කිරීමට අදහස් නොකරන අයටද මෙම හැකියාවන් වෙත ප්‍රවේශය අවශ්‍ය වූ විට ඔබ එය වඩාත් අගය කිරීමට පටන් ගනී. වෙනත් උපයෝගිතා. මෙය අප සමඟ සිදු විය: සංවර්ධකයින්ට Kubernetes වෙබ් අතුරු මුහුණත වෙත ඉක්මන් ප්‍රවේශය අවශ්‍ය වූ අතර, අපි GitLab භාවිතා කරන බැවින්, විසඳුම ස්වභාවිකවම පැමිණියේය.

ඇයි මේ?

සෘජු සංවර්ධකයින් නිදොස් කිරීමේ කාර්යයන් සඳහා K8s උපකරණ පුවරුව වැනි මෙවලමක් ගැන උනන්දු විය හැකිය. සමහර විට ඔබට ලඝු-සටහන් සහ සම්පත් බැලීමට අවශ්‍ය වන අතර, සමහර විට කරල් මරා දැමීම, පරිමාණය යෙදවීම්/StatefulSets, සහ බහාලුම් කොන්සෝලය වෙත යාමට පවා අවශ්‍ය වේ (කෙසේ වෙතත්, වෙනත් ක්‍රමයක් ඇති ඉල්ලීම් ද ඇත - උදාහරණයක් ලෙස, හරහා kubectl-debug).

ඊට අමතරව, කළමනාකරුවන්ට පොකුර දෙස බැලීමට අවශ්‍ය වූ විට මනෝවිද්‍යාත්මක මොහොතක් ඇත - “සියල්ල හරිත” බව දැකීමට සහ “සියල්ල ක්‍රියාත්මක වේ” (ඇත්ත වශයෙන්ම එය ඉතා සාපේක්ෂයි ... නමුත් මෙය ලිපියේ විෂය පථයෙන් ඔබ්බට ය ).

සම්මත CI පද්ධතියක් ලෙස අප සතුව ඇත අදාළ වේ GitLab: සියලුම සංවර්ධකයින් ද එය භාවිතා කරයි. එබැවින්, ඔවුන්ට ප්‍රවේශය ලබා දීම සඳහා, උපකරණ පුවරුව GitLab ගිණුම් සමඟ ඒකාබද්ධ කිරීම තාර්කික විය.

අපි NGINX ඇතුල්වීම භාවිතා කරන බව ද මම සටහන් කරමි. ඔබ අන් අය සමඟ වැඩ කරන්නේ නම් ඇතුල්වීමේ විසඳුම්, ඔබට අවසරය සඳහා විවරණවල ප්‍රතිසමයන් ස්වාධීනව සොයා ගැනීමට අවශ්‍ය වනු ඇත.

ඒකාබද්ධ කිරීමට උත්සාහ කරයි

උපකරණ පුවරුව ස්ථාපනය කිරීම

අවධානය: ඔබ පහත පියවර නැවත කිරීමට යන්නේ නම්, - අනවශ්‍ය මෙහෙයුම් වලක්වා ගැනීමට - පළමුව ඊළඟ උපසිරැසියට කියවන්න.

අපි බොහෝ ස්ථාපන වලදී මෙම අනුකලනය භාවිතා කරන බැවින්, අපි එහි ස්ථාපනය ස්වයංක්‍රීය කර ඇත. මේ සඳහා අවශ්‍ය මූලාශ්‍ර පළ කර ඇත විශේෂ 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 වෙත ගොස් අනාගත පැනලය සඳහා නව යෙදුමක් එක් කළ යුතුය. අපි එය "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

අවධානයෙන් සිටින පාඨකයා ඉහත දිගු තන්තුව වින්‍යාසයෙන් 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

උපකරණ පුවරුව වෙත ගොස් තරමක් පෞරාණික පිවිසුම් බොත්තමක් සොයා ගැනීමට කාලයයි:

Kubernetes උපකරණ පුවරුව සහ GitLab පරිශීලකයන් ඒකාබද්ධ කිරීම

එය මත ක්ලික් කිරීමෙන් පසු, GitLab අපට ආචාර කරයි, එහි සුපුරුදු පිටුවට ලොග් වීමට ඉදිරිපත් වේ (ඇත්ත වශයෙන්ම, අපි කලින් එහි ලොග් වී නොමැති නම්):

Kubernetes උපකරණ පුවරුව සහ GitLab පරිශීලකයන් ඒකාබද්ධ කිරීම

අපි GitLab අක්තපත්‍ර සමඟ ලොග් වන්නෙමු - සහ සියල්ල සිදු කර ඇත:

Kubernetes උපකරණ පුවරුව සහ GitLab පරිශීලකයන් ඒකාබද්ධ කිරීම

උපකරණ පුවරු විශේෂාංග ගැන

ඔබ මීට පෙර Kubernetes සමඟ වැඩ කර නොමැති සංවර්ධකයෙකු නම් හෝ කිසියම් හේතුවක් නිසා මීට පෙර උපකරණ පුවරුව හමු වී නොමැති නම්, මම එහි හැකියාවන් කිහිපයක් නිරූපණය කරමි.

පළමුව, "සියල්ල හරිත" බව ඔබට පෙනෙනු ඇත:

Kubernetes උපකරණ පුවරුව සහ GitLab පරිශීලකයන් ඒකාබද්ධ කිරීම

පාරිසරික විචල්‍යයන්, බාගත කළ රූපය, දියත් තර්ක සහ ඒවායේ තත්ත්වය වැනි කරල් සඳහා වඩාත් සවිස්තරාත්මක දත්ත ලබා ගත හැකිය:

Kubernetes උපකරණ පුවරුව සහ GitLab පරිශීලකයන් ඒකාබද්ධ කිරීම

යෙදවීමට දෘශ්‍ය තත්ව ඇත:

Kubernetes උපකරණ පුවරුව සහ GitLab පරිශීලකයන් ඒකාබද්ධ කිරීම

...සහ අනෙකුත් විස්තර:

Kubernetes උපකරණ පුවරුව සහ GitLab පරිශීලකයන් ඒකාබද්ධ කිරීම

... සහ යෙදවීම පරිමාණය කිරීමේ හැකියාව ද ඇත:

Kubernetes උපකරණ පුවරුව සහ GitLab පරිශීලකයන් ඒකාබද්ධ කිරීම

මෙම මෙහෙයුමේ ප්රතිඵලය:

Kubernetes උපකරණ පුවරුව සහ GitLab පරිශීලකයන් ඒකාබද්ධ කිරීම

ලිපියේ ආරම්භයේ දැනටමත් සඳහන් කර ඇති අනෙකුත් ප්රයෝජනවත් විශේෂාංග අතර ලඝු-සටහන් බැලීම:

Kubernetes උපකරණ පුවරුව සහ GitLab පරිශීලකයන් ඒකාබද්ධ කිරීම

... සහ තෝරාගත් පොඩ් එකේ බහාලුම් කොන්සෝලයට ඇතුළු වීමේ කාර්යය:

Kubernetes උපකරණ පුවරුව සහ GitLab පරිශීලකයන් ඒකාබද්ධ කිරීම

උදාහරණයක් ලෙස, ඔබට නෝඩ් වල සීමාවන්/ඉල්ලීම් ද බැලිය හැක:

Kubernetes උපකරණ පුවරුව සහ GitLab පරිශීලකයන් ඒකාබද්ධ කිරීම

ඇත්ත වශයෙන්ම, මේවා පැනලයේ සියලු හැකියාවන් නොවේ, නමුත් ඔබට සාමාන්‍ය අදහස ලැබෙනු ඇතැයි මම බලාපොරොත්තු වෙමි.

අනුකලනය සහ උපකරණ පුවරුවේ අවාසි

විස්තර කරන ලද අනුකලනය තුළ නැත ප්රවේශ පාලනය. එය සමඟ, GitLab වෙත ඕනෑම ප්‍රවේශයක් ඇති සියලුම පරිශීලකයින් උපකරණ පුවරුවට ප්‍රවේශය ලබා ගනී. උපකරණ පුවරුවේ ම අයිතිවාසිකම්වලට අනුරූප වන උපකරණ පුවරුව තුළම ඔවුන්ට එකම ප්‍රවේශය ඇත RBAC හි අර්ථ දක්වා ඇත. නිසැකවම, මෙය සෑම කෙනෙකුටම සුදුසු නොවේ, නමුත් අපගේ නඩුව සඳහා එය ප්රමාණවත් විය.

උපකරණ පුවරුවේ ඇති සැලකිය යුතු අවාසි අතර, මම පහත සඳහන් දේ සටහන් කරමි:

  • init කන්ටේනරයේ කොන්සෝලයට ඇතුළු විය නොහැක;
  • ClusterRole හි මෙය සවි කළ හැකි වුවද, Deployments සහ StatefulSets සංස්කරණය කළ නොහැක;
  • Kubernetes හි නවතම අනුවාද සමඟ උපකරණ පුවරුවේ ගැළපුම සහ ව්‍යාපෘතියේ අනාගතය ප්‍රශ්න මතු කරයි.

අවසාන ගැටළුව විශේෂ අවධානයක් ලැබිය යුතුය.

උපකරණ පුවරුවේ තත්ත්වය සහ විකල්ප

ව්‍යාපෘතියේ නවතම අනුවාදයේ ඉදිරිපත් කර ඇති 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 Dashboard හි වරින් වර විවෘත මූලාශ්‍ර ප්‍රජාව වෙතින් විකල්ප ඇත (සහ ඒවා සලකා බැලීමට අපි සතුටු වෙමු), නමුත් මෙම අවස්ථාවෙහිදී අපි මෙම විසඳුම සමඟ සිටිමු.

ප්රාදේශීය සභා

අපගේ බ්ලොග් අඩවියේ ද කියවන්න:

මූලාශ්රය: www.habr.com

අදහස් එක් කරන්න