Kubernetes Dashboard යනු ක්රියාත්මක වන පොකුරක් සහ එහි අවම කළමනාකරණය පිළිබඳ යාවත්කාලීන තොරතුරු ලබා ගැනීම සඳහා භාවිතයට පහසු මෙවලමකි. පරිපාලකයින්ට/DevOps ඉංජිනේරුවන්ට පමණක් නොව, කොන්සෝලයට අඩු හුරුපුරුදු අයට සහ/හෝ kubectl සමඟ අන්තර්ක්රියා කිරීමේ සියලු සංකීර්ණතා සමඟ කටයුතු කිරීමට අදහස් නොකරන අයටද මෙම හැකියාවන් වෙත ප්රවේශය අවශ්ය වූ විට ඔබ එය වඩාත් අගය කිරීමට පටන් ගනී. වෙනත් උපයෝගිතා. මෙය අප සමඟ සිදු විය: සංවර්ධකයින්ට Kubernetes වෙබ් අතුරු මුහුණත වෙත ඉක්මන් ප්රවේශය අවශ්ය වූ අතර, අපි GitLab භාවිතා කරන බැවින්, විසඳුම ස්වභාවිකවම පැමිණියේය.
ඇයි මේ?
සෘජු සංවර්ධකයින් නිදොස් කිරීමේ කාර්යයන් සඳහා K8s උපකරණ පුවරුව වැනි මෙවලමක් ගැන උනන්දු විය හැකිය. සමහර විට ඔබට ලඝු-සටහන් සහ සම්පත් බැලීමට අවශ්ය වන අතර, සමහර විට කරල් මරා දැමීම, පරිමාණය යෙදවීම්/StatefulSets, සහ බහාලුම් කොන්සෝලය වෙත යාමට පවා අවශ්ය වේ (කෙසේ වෙතත්, වෙනත් ක්රමයක් ඇති ඉල්ලීම් ද ඇත - උදාහරණයක් ලෙස, හරහා
ඊට අමතරව, කළමනාකරුවන්ට පොකුර දෙස බැලීමට අවශ්ය වූ විට මනෝවිද්යාත්මක මොහොතක් ඇත - “සියල්ල හරිත” බව දැකීමට සහ “සියල්ල ක්රියාත්මක වේ” (ඇත්ත වශයෙන්ම එය ඉතා සාපේක්ෂයි ... නමුත් මෙය ලිපියේ විෂය පථයෙන් ඔබ්බට ය ).
සම්මත CI පද්ධතියක් ලෙස අප සතුව ඇත
අපි NGINX ඇතුල්වීම භාවිතා කරන බව ද මම සටහන් කරමි. ඔබ අන් අය සමඟ වැඩ කරන්නේ නම්
ඒකාබද්ධ කිරීමට උත්සාහ කරයි
උපකරණ පුවරුව ස්ථාපනය කිරීම
අවධානය: ඔබ පහත පියවර නැවත කිරීමට යන්නේ නම්, - අනවශ්ය මෙහෙයුම් වලක්වා ගැනීමට - පළමුව ඊළඟ උපසිරැසියට කියවන්න.
අපි බොහෝ ස්ථාපන වලදී මෙම අනුකලනය භාවිතා කරන බැවින්, අපි එහි ස්ථාපනය ස්වයංක්රීය කර ඇත. මේ සඳහා අවශ්ය මූලාශ්ර පළ කර ඇත
ස්ක්රිප්ට් මඟින් උපකරණ පුවරුව පොකුරේ ස්ථාපනය කර 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 හෑෂ් ලබා දෙනු ඇත:
ඒවා තමයි පිටපතට තර්ක වශයෙන් යොදාගන්නේ. ප්රතිඵලයක් වශයෙන්, ස්ථාපනය මේ ආකාරයෙන් පෙනේ:
$ ./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
උපකරණ පුවරුව වෙත ගොස් තරමක් පෞරාණික පිවිසුම් බොත්තමක් සොයා ගැනීමට කාලයයි:
එය මත ක්ලික් කිරීමෙන් පසු, GitLab අපට ආචාර කරයි, එහි සුපුරුදු පිටුවට ලොග් වීමට ඉදිරිපත් වේ (ඇත්ත වශයෙන්ම, අපි කලින් එහි ලොග් වී නොමැති නම්):
අපි GitLab අක්තපත්ර සමඟ ලොග් වන්නෙමු - සහ සියල්ල සිදු කර ඇත:
උපකරණ පුවරු විශේෂාංග ගැන
ඔබ මීට පෙර Kubernetes සමඟ වැඩ කර නොමැති සංවර්ධකයෙකු නම් හෝ කිසියම් හේතුවක් නිසා මීට පෙර උපකරණ පුවරුව හමු වී නොමැති නම්, මම එහි හැකියාවන් කිහිපයක් නිරූපණය කරමි.
පළමුව, "සියල්ල හරිත" බව ඔබට පෙනෙනු ඇත:
පාරිසරික විචල්යයන්, බාගත කළ රූපය, දියත් තර්ක සහ ඒවායේ තත්ත්වය වැනි කරල් සඳහා වඩාත් සවිස්තරාත්මක දත්ත ලබා ගත හැකිය:
යෙදවීමට දෘශ්ය තත්ව ඇත:
...සහ අනෙකුත් විස්තර:
... සහ යෙදවීම පරිමාණය කිරීමේ හැකියාව ද ඇත:
මෙම මෙහෙයුමේ ප්රතිඵලය:
ලිපියේ ආරම්භයේ දැනටමත් සඳහන් කර ඇති අනෙකුත් ප්රයෝජනවත් විශේෂාංග අතර ලඝු-සටහන් බැලීම:
... සහ තෝරාගත් පොඩ් එකේ බහාලුම් කොන්සෝලයට ඇතුළු වීමේ කාර්යය:
උදාහරණයක් ලෙස, ඔබට නෝඩ් වල සීමාවන්/ඉල්ලීම් ද බැලිය හැක:
ඇත්ත වශයෙන්ම, මේවා පැනලයේ සියලු හැකියාවන් නොවේ, නමුත් ඔබට සාමාන්ය අදහස ලැබෙනු ඇතැයි මම බලාපොරොත්තු වෙමි.
අනුකලනය සහ උපකරණ පුවරුවේ අවාසි
විස්තර කරන ලද අනුකලනය තුළ නැත ප්රවේශ පාලනය. එය සමඟ, GitLab වෙත ඕනෑම ප්රවේශයක් ඇති සියලුම පරිශීලකයින් උපකරණ පුවරුවට ප්රවේශය ලබා ගනී. උපකරණ පුවරුවේ ම අයිතිවාසිකම්වලට අනුරූප වන උපකරණ පුවරුව තුළම ඔවුන්ට එකම ප්රවේශය ඇත
උපකරණ පුවරුවේ ඇති සැලකිය යුතු අවාසි අතර, මම පහත සඳහන් දේ සටහන් කරමි:
- init කන්ටේනරයේ කොන්සෝලයට ඇතුළු විය නොහැක;
- ClusterRole හි මෙය සවි කළ හැකි වුවද, Deployments සහ StatefulSets සංස්කරණය කළ නොහැක;
- Kubernetes හි නවතම අනුවාද සමඟ උපකරණ පුවරුවේ ගැළපුම සහ ව්යාපෘතියේ අනාගතය ප්රශ්න මතු කරයි.
අවසාන ගැටළුව විශේෂ අවධානයක් ලැබිය යුතුය.
උපකරණ පුවරුවේ තත්ත්වය සහ විකල්ප
ව්යාපෘතියේ නවතම අනුවාදයේ ඉදිරිපත් කර ඇති Kubernetes නිකුතු සහිත උපකරණ පුවරු අනුකූලතා වගුව (
එසේ තිබියදීත්, (දැනටමත් ජනවාරි මාසයේදී සම්මත කර ඇත)
අවසාන වශයෙන්, උපකරණ පුවරුව සඳහා විකල්ප තිබේ. ඒ අය අතරින්:
-
K8Dash — තරුණ අතුරු මුහුණතක් (පළමු කැපවීම මේ වසරේ මාර්තු දක්වා දිව යයි), එය දැනටමත් පොකුරේ වත්මන් තත්ත්වය සහ එහි වස්තු කළමනාකරණය පිළිබඳ දෘශ්ය නිරූපණයක් වැනි හොඳ විශේෂාංග ඉදිරිපත් කරයි. "තත්ය කාලීන අතුරුමුහුණතක්" ලෙස ස්ථානගත කර ඇත, මන්ද ඔබට බ්රවුසරයේ පිටුව නැවුම් කිරීමට අවශ්ය නොවී දර්ශණය වන දත්ත ස්වයංක්රීයව යාවත්කාලීන කරයි. -
OpenShift කොන්සෝලය - Red Hat OpenShift වෙතින් වෙබ් අතුරු මුහුණතක්, කෙසේ වෙතත්, ව්යාපෘතියේ අනෙකුත් වර්ධනයන් ඔබේ පොකුරට ගෙන එනු ඇත, එය සැමට සුදුසු නොවේ. -
කුබර්නේටර් සියලු පොකුරු වස්තු බැලීමේ හැකියාව සහිත පහළ මට්ටමේ (උපකරණ පුවරුවට වඩා) අතුරු මුහුණතක් ලෙස නිර්මාණය කරන ලද සිත්ගන්නා ව්යාපෘතියකි. කෙසේ වෙතත්, එහි සංවර්ධනය නතර වී ඇති බව පෙනේ. -
පොලාරිස් - අනිත් දවස විතරයිනිවේදනය කළේය පැනලයක කාර්යයන් ඒකාබද්ධ කරන ව්යාපෘතියක් (පොකුරේ වත්මන් තත්වය පෙන්වයි, නමුත් එහි වස්තු කළමනාකරණය නොකරයි) සහ ස්වයංක්රීය “හොඳම භාවිතයන් වලංගු කිරීම” (එහි ක්රියාත්මක වන යෙදවුම්වල වින්යාසයන්හි නිවැරදි භාවය සඳහා පොකුර පරීක්ෂා කරයි).
නිගමන වෙනුවට
උපකරණ පුවරුව අපි සේවය කරන Kubernetes පොකුරු සඳහා සම්මත මෙවලමකි. බොහෝ සංවර්ධකයින් මෙම පැනලය සමඟ ඇති හැකියාවන් ගැන උද්යෝගිමත් වන බැවින් GitLab සමඟ එය ඒකාබද්ධ කිරීම අපගේ පෙරනිමි ස්ථාපනයේ කොටසක් බවට පත්ව ඇත.
Kubernetes Dashboard හි වරින් වර විවෘත මූලාශ්ර ප්රජාව වෙතින් විකල්ප ඇත (සහ ඒවා සලකා බැලීමට අපි සතුටු වෙමු), නමුත් මෙම අවස්ථාවෙහිදී අපි මෙම විසඳුම සමඟ සිටිමු.
ප්රාදේශීය සභා
අපගේ බ්ලොග් අඩවියේ ද කියවන්න:
- «
kubebox සහ Kubernetes සඳහා වෙනත් ෂෙල් වෙඩි »; - «
Kubernetes සහ GitLab සමඟ හොඳම CI/CD පරිචයන් (සමාලෝචන සහ වීඩියෝ වාර්තාව) »; - «
dapp සහ GitLab CI භාවිතයෙන් Kubernetes හි යෙදුම් තැනීම සහ යෙදවීම »; - «
නිෂ්පාදනයේ අඛණ්ඩ ඒකාබද්ධ කිරීම සහ බෙදා හැරීම සඳහා GitLab CI. 1 කොටස: අපගේ නල මාර්ගය ".
මූලාශ්රය: www.habr.com