ProHoster > Блог > басқарма > Kubernetes бақылау тақтасы мен GitLab пайдаланушыларының интеграциясы
Kubernetes бақылау тақтасы мен GitLab пайдаланушыларының интеграциясы
Kubernetes бақылау тақтасы – іске қосылған кластер туралы соңғы ақпаратты алуға және оны аз күш жұмсап басқаруға арналған пайдалану оңай құрал. Бұл мүмкіндіктерге қол жеткізу тек әкімшілерге/DevOps инженерлеріне ғана емес, сонымен қатар консольге азырақ үйренгендерге және/немесе kubectl және компьютерлермен өзара әрекеттесудің барлық қыр-сырымен айналысқысы келмейтіндерге қажет болғанда, сіз оны одан сайын бағалай бастайсыз. басқа утилиталар. Бұл бізбен болды: әзірлеушілер Kubernetes веб-интерфейсіне жылдам қол жеткізгісі келді және біз GitLab-ті пайдаланатындықтан, шешім табиғи түрде келді.
Бұл не үшін?
Тікелей әзірлеушілерді тапсырмаларды түзетуге арналған K8s бақылау тақтасы сияқты құрал қызықтыруы мүмкін. Кейде журналдар мен ресурстарды көргіңіз келеді, кейде подкасттарды өлтіргіңіз келеді, Deployments/StatefulSets масштабтаңыз және тіпті контейнер консоліне өткіңіз келеді (сонымен бірге сұраулар бар, бірақ олардың басқа жолы бар - мысалы, арқылы kubectl-дебаг).
Сонымен қатар, менеджерлер үшін кластерге қарағысы келетін психологиялық сәт бар - «бәрі жасыл» екенін көру және осылайша «бәрі жұмыс істеп жатыр» деп өздерін тыныштандыру (бұл, әрине, өте салыстырмалы... бірақ бұл мақаланың аясынан тыс ).
Бізде стандартты CI жүйесі бар қолданылады 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 бөліміне өту керек: Әкімші аймағы → Қолданбалар - және болашақ панель үшін жаңа қолданба қосу. Оны «kubernetes бақылау тақтасы» деп атаймыз:
Оны қосу нәтижесінде GitLab хэштерді қамтамасыз етеді:
Олар сценарийге дәлел ретінде пайдаланылатындар. Нәтижесінде орнату келесідей болады:
$ 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
Дегенмен, ерте ме, кеш пе бәрі басталады авторизация бірден жұмыс істемейді! Қолданылған суретте (басқа суреттердегі жағдай ұқсас) кері шақыруда қайта бағыттауды ұстау процесі дұрыс орындалмаған. Бұл жағдай oauth өзі бізге беретін cookie файлын өшіретініне әкеледі...
Мәселе патчпен өзіңіздің жеке суретіңізді салу арқылы шешіледі.
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
Егер сізде авторизация арқылы жабылған тізілім болса, суреттерді тарту үшін құпияны пайдалануды қосуды ұмытпаңыз:
Бақылау тақтасына өтіп, өте архаикалық кіру түймесін табу уақыты келді:
Оны басқаннан кейін GitLab бізді қарсы алып, өзінің әдеттегі бетіне кіруді ұсынады (әрине, егер біз бұрын кірмеген болсақ):
Біз GitLab тіркелгі деректерімен кіреміз - және бәрі орындалды:
Бақылау тақтасының мүмкіндіктері туралы
Егер сіз бұрын Kubernetes-пен жұмыс істемеген әзірлеуші болсаңыз немесе қандай да бір себептермен бақылау тақтасын бұрын кездестірмеген болсаңыз, мен оның кейбір мүмкіндіктерін суреттеймін.
Біріншіден, сіз «бәрі жасыл» екенін көре аласыз:
Қоршаған ортаның айнымалы мәндері, жүктеп алынған кескін, іске қосу аргументтері және олардың күйі сияқты толығырақ мәліметтер подкасттар үшін де қол жетімді:
Орналастырулардың көрінетін күйлері бар:
...және басқа мәліметтер:
... және орналастыруды масштабтау мүмкіндігі де бар:
Бұл операцияның нәтижесі:
Мақаланың басында айтылған басқа пайдалы мүмкіндіктердің қатарында журналдарды қарау:
... және таңдалған подкасттың контейнер консоліне кіру функциясы:
Мысалы, түйіндердегі шектеулерді/сұрауларды да қарауға болады:
Әрине, бұл панельдің барлық мүмкіндіктері емес, бірақ сіз жалпы идеяны аласыз деп үміттенемін.
Интеграцияның және бақылау тақтасының кемшіліктері
Сипатталған интеграцияда жоқ қатынасты басқару. Оның көмегімен GitLab-қа кез келген рұқсаты бар барлық пайдаланушылар бақылау тақтасына қол жеткізе алады. Олар бақылау тақтасының өзінде бірдей рұқсатқа ие, бұл бақылау тақтасының құқықтарына сәйкес келеді RBAC-да анықталған. Әлбетте, бұл бәріне жарамайды, бірақ біздің жағдайымыз үшін бұл жеткілікті болып шықты.
Бақылау тақтасындағы елеулі кемшіліктердің арасында мен мыналарды атап өткім келеді:
init контейнерінің консольіне кіру мүмкін емес;
Deployments және StatefulSets өңдеу мүмкін емес, бірақ бұл ClusterRole ішінде түзетілуі мүмкін;
Бақылау тақтасының Kubernetes соңғы нұсқаларымен үйлесімділігі және жобаның болашағы сұрақтар тудырады.
Соңғы мәселе ерекше назар аударуды қажет етеді.
Бақылау тақтасының күйі және балама нұсқалары
Жобаның соңғы нұсқасында ұсынылған Kubernetes шығарылымдары бар бақылау тақтасының үйлесімділік кестесі (v1.10.1), өте қуанышты емес:
Осыған қарамастан, бар (қаңтарда қабылданған) PR №3476, ол K8s 1.13 қолдауын жариялайды. Сонымен қатар, жоба мәселелерінің ішінде панельмен жұмыс істейтін пайдаланушыларға сілтемелерді K8s 1.14. Ақырында, міндеттейді жобаның кодтық базасына кіру тоқтамайды. Сондықтан (кем дегенде!) Жобаның нақты күйі ресми үйлесімділік кестесінде көрінетіндей жаман емес.
Ақырында, бақылау тақтасына балама нұсқалар бар. Олардың ішінде:
K8Dash — кластердің ағымдағы күйін көрнекі түрде көрсету және оның объектілерін басқару сияқты жақсы мүмкіндіктерді ұсынатын жас интерфейс (алғашқы тапсырулар осы жылдың наурызында басталады). «Нақты уақыттағы интерфейс» ретінде орналастырылған, өйткені браузерде бетті жаңартуды талап етпестен, көрсетілген деректерді автоматты түрде жаңартады.
OpenShift консолі - Red Hat OpenShift веб-интерфейсі, бірақ ол сіздің кластеріңізге жобаның басқа әзірлемелерін әкеледі, бұл барлығына жарамайды.
Кубернатор барлық кластер нысандарын көру мүмкіндігі бар төменгі деңгейлі интерфейс ретінде жасалған (бақылау тақтасына қарағанда) қызықты жоба. Алайда оның дамуы тоқтап қалған сияқты.
Поляр - өткен күні ғана жариялады панель функцияларын біріктіретін жоба (кластердің ағымдағы күйін көрсетеді, бірақ оның нысандарын басқармайды) және автоматты түрде «үздік тәжірибелерді тексеру» (кластерді онда іске қосылған Орналастыру конфигурацияларының дұрыстығын тексереді).
Қорытындылар орнына
Бақылау тақтасы - біз қызмет көрсететін Kubernetes кластерлеріне арналған стандартты құрал. Оның GitLab-пен интеграциясы да әдепкі орнатуымыздың бір бөлігі болды, өйткені көптеген әзірлеушілер осы панельдің мүмкіндіктеріне қуанады.
Kubernetes бақылау тақтасында мезгіл-мезгіл Open Source қауымдастығының баламалары бар (және біз оларды қарауға қуаныштымыз), бірақ осы кезеңде біз осы шешіммен қала береміз.