குபெர்னெட்ஸ் டாஷ்போர்டு மற்றும் கிட்லேப் பயனர்களின் ஒருங்கிணைப்பு

குபெர்னெட்ஸ் டாஷ்போர்டு மற்றும் கிட்லேப் பயனர்களின் ஒருங்கிணைப்பு

Kubernetes Dashboard என்பது நீங்கள் இயங்கும் கிளஸ்டரைப் பற்றிய சமீபத்திய தகவல்களைப் பெறுவதற்கும் குறைந்த முயற்சியில் அதை நிர்வகிப்பதற்கும் பயன்படுத்த எளிதான கருவியாகும். இந்த அம்சங்களுக்கான அணுகல் நிர்வாகிகள்/DevOps இன்ஜினியர்களுக்கு மட்டுமின்றி, கன்சோலுடன் குறைவாகப் பழகியவர்கள் மற்றும்/அல்லது kubectl உடன் தொடர்புகொள்வதில் உள்ள அனைத்து நுணுக்கங்களையும் சமாளிக்க விரும்பாதவர்களாலும் நீங்கள் அதைப் பாராட்டத் தொடங்குகிறீர்கள். பிற பயன்பாடுகள். இது எங்களுடன் நடந்தது: டெவலப்பர்கள் Kubernetes இணைய இடைமுகத்தை விரைவாக அணுக விரும்பினர், மேலும் நாங்கள் GitLab ஐப் பயன்படுத்துவதால், தீர்வு இயற்கையாகவே வந்தது.

இது ஏன்?

பிழைத்திருத்தப் பணிகளுக்கான K8s டாஷ்போர்டு போன்ற கருவியில் நேரடி டெவலப்பர்கள் ஆர்வமாக இருக்கலாம். சில நேரங்களில் நீங்கள் பதிவுகள் மற்றும் ஆதாரங்களைப் பார்க்க விரும்புகிறீர்கள், சில சமயங்களில் காய்களைக் கொல்ல வேண்டும், வரிசைப்படுத்துதல்கள்/ஸ்டேட்ஃபுல்செட்களை அளவிடலாம், மேலும் கொள்கலன் கன்சோலுக்குச் செல்லவும் (அதற்கும் கோரிக்கைகள் உள்ளன, இருப்பினும், வேறு வழி உள்ளது - எடுத்துக்காட்டாக, மூலம் kubectl-debug).

கூடுதலாக, மேலாளர்கள் கிளஸ்டரைப் பார்க்க விரும்பும் போது ஒரு உளவியல் தருணம் உள்ளது - "எல்லாம் பச்சையாக" இருப்பதைக் காணவும், இதனால் "எல்லாம் வேலை செய்கிறது" என்று தங்களை உறுதிப்படுத்திக் கொள்ளவும் (நிச்சயமாக, இது மிகவும் உறவினர் ... ஆனால் இது கட்டுரையின் எல்லைக்கு அப்பாற்பட்டது ).

ஒரு நிலையான CI அமைப்பாக எங்களிடம் உள்ளது பயன்படுத்தப்பட்டது GitLab: அனைத்து டெவலப்பர்களும் இதைப் பயன்படுத்துகின்றனர். எனவே, அவர்களுக்கு அணுகலை வழங்க, டாஷ்போர்டை GitLab கணக்குகளுடன் ஒருங்கிணைப்பது தர்க்கரீதியானது.

நாங்கள் NGINX Ingress ஐப் பயன்படுத்துகிறோம் என்பதையும் நான் கவனிக்கிறேன். நீங்கள் மற்றவர்களுடன் வேலை செய்தால் நுழைவு தீர்வுகள், அங்கீகாரத்திற்கான சிறுகுறிப்புகளின் ஒப்புமைகளை நீங்கள் சுயாதீனமாக கண்டுபிடிக்க வேண்டும்.

ஒருங்கிணைப்பு முயற்சி

டாஷ்போர்டு நிறுவல்

எச்சரிக்கை: நீங்கள் கீழே உள்ள படிகளை மீண்டும் செய்யப் போகிறீர்கள் என்றால் - தேவையற்ற செயல்பாடுகளைத் தவிர்க்க - முதலில் அடுத்த துணைத் தலைப்பைப் படிக்கவும்.

பல நிறுவல்களில் இந்த ஒருங்கிணைப்பைப் பயன்படுத்துவதால், அதன் நிறுவலை தானியங்குபடுத்தியுள்ளோம். இதற்கு தேவையான ஆதாரங்கள் வெளியிடப்பட்டுள்ளன சிறப்பு கிட்ஹப் களஞ்சியம். அவை சற்று மாற்றியமைக்கப்பட்ட 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: 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 பேட்ச் எப்படி இருக்கும்

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

கவனமுள்ள வாசகர் மேலே உள்ள நீண்ட சரம் config இலிருந்து 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 இல் வரையறுக்கப்பட்டுள்ளன. வெளிப்படையாக, இது அனைவருக்கும் பொருந்தாது, ஆனால் எங்கள் விஷயத்தில் இது போதுமானதாக மாறியது.

டாஷ்போர்டில் உள்ள குறிப்பிடத்தக்க குறைபாடுகளில், பின்வருவனவற்றை நான் கவனிக்கிறேன்:

  • init கொள்கலனின் கன்சோலில் நுழைவது சாத்தியமில்லை;
  • வரிசைப்படுத்துதல்கள் மற்றும் ஸ்டேட்ஃபுல்செட்களைத் திருத்துவது சாத்தியமற்றது, இருப்பினும் இது ClusterRole இல் சரி செய்யப்படலாம்;
  • Kubernetes இன் சமீபத்திய பதிப்புகளுடன் டேஷ்போர்டின் இணக்கத்தன்மை மற்றும் திட்டப்பணியின் எதிர்காலம் ஆகியவை கேள்விகளை எழுப்புகின்றன.

கடைசி பிரச்சனை சிறப்பு கவனம் தேவை.

டாஷ்போர்டு நிலை மற்றும் மாற்றுகள்

திட்டத்தின் சமீபத்திய பதிப்பில் வழங்கப்பட்ட குபெர்னெட்ஸ் வெளியீடுகளுடன் டேஷ்போர்டு இணக்கத்தன்மை அட்டவணை (v1.10.1), மிகவும் மகிழ்ச்சியாக இல்லை:

குபெர்னெட்ஸ் டாஷ்போர்டு மற்றும் கிட்லேப் பயனர்களின் ஒருங்கிணைப்பு

இது இருந்தபோதிலும், உள்ளது (ஏற்கனவே ஜனவரியில் ஏற்றுக்கொள்ளப்பட்டது) PR #3476, இது K8s 1.13க்கான ஆதரவை அறிவிக்கிறது. கூடுதலாக, திட்டச் சிக்கல்களில், பேனலுடன் பணிபுரியும் பயனர்களின் குறிப்புகளை K8s 1.14 இல் காணலாம். இறுதியாக, செய்கிறது திட்டத்தின் குறியீடு அடிப்படைக்குள் நிறுத்த வேண்டாம். எனவே (குறைந்தபட்சம்!) திட்டத்தின் உண்மையான நிலை, அதிகாரப்பூர்வ பொருந்தக்கூடிய அட்டவணையில் இருந்து முதலில் தோன்றும் அளவுக்கு மோசமாக இல்லை.

இறுதியாக, டாஷ்போர்டுக்கு மாற்றுகள் உள்ளன. அவர்களில்:

  1. K8Dash — ஒரு இளம் இடைமுகம் (முதல் கமிட்கள் இந்த ஆண்டு மார்ச் மாதத்திற்கு முந்தையது), இது ஏற்கனவே கிளஸ்டரின் தற்போதைய நிலை மற்றும் அதன் பொருள்களின் நிர்வாகத்தின் காட்சிப் பிரதிநிதித்துவம் போன்ற நல்ல அம்சங்களை வழங்குகிறது. "நிகழ் நேர இடைமுகம்" என நிலைநிறுத்தப்பட்டது, ஏனெனில் உலாவியில் பக்கத்தைப் புதுப்பிக்க வேண்டிய அவசியமின்றி காட்டப்படும் தரவை தானாகவே புதுப்பிக்கும்.
  2. OpenShift கன்சோல் - Red Hat OpenShift இலிருந்து ஒரு இணைய இடைமுகம், இருப்பினும், இது திட்டத்தின் மற்ற மேம்பாடுகளை உங்கள் கிளஸ்டருக்கு கொண்டு வரும், இது அனைவருக்கும் பொருந்தாது.
  3. குபர்னேட்டர் அனைத்து கிளஸ்டர் பொருட்களையும் பார்க்கும் திறனுடன் கீழ்-நிலை (டாஷ்போர்டை விட) இடைமுகமாக உருவாக்கப்பட்ட ஒரு சுவாரஸ்யமான திட்டமாகும். இருப்பினும், அதன் வளர்ச்சி நிறுத்தப்பட்டது போல் தெரிகிறது.
  4. போலாரிஸ் - மறுநாள் அறிவித்தார் ஒரு பேனலின் செயல்பாடுகளை ஒருங்கிணைக்கும் திட்டம் (கிளஸ்டரின் தற்போதைய நிலையைக் காட்டுகிறது, ஆனால் அதன் பொருள்களை நிர்வகிக்காது) மற்றும் தானியங்கி "சிறந்த நடைமுறைகளின் சரிபார்ப்பு" (அதில் இயங்கும் வரிசைப்படுத்தல்களின் உள்ளமைவுகளின் சரியான தன்மைக்கு கிளஸ்டரைச் சரிபார்க்கிறது).

முடிவுகளுக்கு பதிலாக

டாஷ்போர்டு என்பது குபெர்னெட்ஸ் கிளஸ்டர்களுக்கான நிலையான கருவியாகும். GitLab உடனான அதன் ஒருங்கிணைப்பு எங்கள் இயல்புநிலை நிறுவலின் ஒரு பகுதியாக மாறியுள்ளது, ஏனெனில் பல டெவலப்பர்கள் இந்த பேனலில் உள்ள திறன்களைப் பற்றி உற்சாகமாக உள்ளனர்.

குபெர்னெட்டஸ் டாஷ்போர்டில் அவ்வப்போது ஓப்பன் சோர்ஸ் சமூகத்திலிருந்து மாற்று வழிகள் உள்ளன (அவற்றைக் கருத்தில் கொள்வதில் நாங்கள் மகிழ்ச்சியடைகிறோம்), ஆனால் இந்த கட்டத்தில் நாங்கள் இந்த தீர்வில் இருக்கிறோம்.

சோசலிஸ்ட் கட்சி

எங்கள் வலைப்பதிவிலும் படிக்கவும்:

ஆதாரம்: www.habr.com

கருத்தைச் சேர்