เบเบฒเบ™เบ›เบฐเบชเบปเบกเบ›เบฐเบชเบฒเบ™เบ‚เบญเบ‡ Kubernetes Dashboard เปเบฅเบฐเบœเบนเป‰เปƒเบŠเป‰ GitLab

เบเบฒเบ™เบ›เบฐเบชเบปเบกเบ›เบฐเบชเบฒเบ™เบ‚เบญเบ‡ Kubernetes Dashboard เปเบฅเบฐเบœเบนเป‰เปƒเบŠเป‰ GitLab

Kubernetes Dashboard เป€เบ›เบฑเบ™เป€เบ„เบทเปˆเบญเบ‡เบกเบทเบ—เบตเปˆเบ‡เปˆเบฒเบเบ•เปเปˆเบเบฒเบ™เปƒเบŠเป‰เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป„เบ”เป‰เบฎเบฑเบšเบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเบ—เบฑเบ™เบชเบฐเป„เบซเบกเบเปˆเบฝเบงเบเบฑเบšเบเบธเปˆเบกเบ—เบตเปˆเป€เบฎเบฑเบ”เบงเบฝเบเบ‚เบญเบ‡เบ—เปˆเบฒเบ™เปเบฅเบฐเบˆเบฑเบ”เบเบฒเบ™เบกเบฑเบ™เบ”เป‰เบงเบเบ„เบงเบฒเบกเบžเบฐเบเบฒเบเบฒเบกเบซเบ™เป‰เบญเบเบ—เบตเปˆเบชเบธเบ”. เบ—เปˆเบฒเบ™เป€เบฅเบตเปˆเบกเบฎเบนเป‰เบˆเบฑเบเบกเบฑเบ™เบซเบผเบฒเบเบ‚เบถเป‰เบ™เป€เบกเบทเปˆเบญเบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบšเปเปˆเบžเบฝเบ‡เปเบ•เปˆเป‚เบ”เบเบœเบนเป‰เบšเปเบฅเบดเบซเบฒเบ™ / เบงเบดเบชเบฐเบงเบฐเบเบญเบ™ DevOps เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™, เปเบ•เปˆเบเบฑเบ‡เป‚เบ”เบเบœเบนเป‰เบ—เบตเปˆเบšเปเปˆเบ„เบธเป‰เบ™เป€เบ„เบตเบเบเบฑเบš console เปเบฅเบฐ / เบซเบผเบทเบšเปเปˆเบ•เบฑเป‰เบ‡เปƒเบˆเบ—เบตเปˆเบˆเบฐเบˆเบฑเบ”เบเบฒเบ™เบเบฑเบšเบ„เบงเบฒเบกเบชเบฑเบšเบชเบปเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เบ‚เบญเบ‡เบเบฒเบ™เบžเบปเบงเบžเบฑเบ™เบเบฑเบš kubectl เปเบฅเบฐ เบญเบธเบ›เบฐเป‚เบžเบเบญเบทเปˆเบ™เป†. เบ™เบตเป‰เป€เบเบตเบ”เบ‚เบถเป‰เบ™เบเบฑเบšเบžเบงเบเป€เบฎเบปเบฒ: เบ™เบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เป„เบงเปƒเบ™เบเบฒเบ™เป‚เบ•เป‰เบ•เบญเบšเป€เบงเบฑเบšเป„เบŠเบ•เปŒ Kubernetes, เปเบฅเบฐเบ™เบฑเบšเบ•เบฑเป‰เบ‡เปเบ•เปˆเบžเบงเบเป€เบฎเบปเบฒเปƒเบŠเป‰ GitLab, เบเบฒเบ™เปเบเป‰เป„เบ‚เปเบกเปˆเบ™เบกเบฒเบˆเบฒเบเบ—เปเบฒเบกเบฐเบŠเบฒเบ”.

เป€เบ›เบฑเบ™เบซเบเบฑเบ‡เบ„เบทเบญเบฑเบ™เบ™เบตเป‰?

เบ™เบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒเป‚เบ”เบเบเบปเบ‡เบญเบฒเบ”เบˆเบฐเบกเบตเบ„เบงเบฒเบกเบชเบปเบ™เปƒเบˆเปƒเบ™เป€เบ„เบทเปˆเบญเบ‡เบกเบทเป€เบŠเบฑเปˆเบ™ K8s Dashboard เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เปเบเป‰เป„เบ‚เบšเบฑเบ™เบซเบฒเบงเบฝเบเบ‡เบฒเบ™. เบšเบฒเบ‡เบ„เบฑเป‰เบ‡เบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เป€เบšเบดเปˆเบ‡เบšเบฑเบ™เบ—เบถเบเปเบฅเบฐเบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™, เปเบฅเบฐเบšเบฒเบ‡เบ„เบฑเป‰เบ‡เบ‚เป‰เบฒ pods, เบ‚เบฐเบซเบ™เบฒเบ” Deployments/StatefulSets, เปเบฅเบฐเปเบกเป‰เบเบฐเบ—เบฑเป‰เบ‡เป„เบ›เบ—เบตเปˆ container console (เบเบฑเบ‡เบกเบตเบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เปเบ—เบตเปˆ, เบขเปˆเบฒเบ‡เปƒเบ”เบเปเบ•เบฒเบก, เบกเบตเบงเบดเบ—เบตเบญเบทเปˆเบ™ - เบ•เบปเบงเบขเปˆเบฒเบ‡, เป‚เบ”เบเบœเปˆเบฒเบ™. kubectl-debug).

เบ™เบญเบเบˆเบฒเบเบ™เบฑเป‰เบ™, เบกเบตเบŠเปˆเบงเบ‡เป€เบงเบฅเบฒเบ—เบฒเบ‡เบˆเบดเบ”เปƒเบˆเบชเปเบฒเบฅเบฑเบšเบœเบนเป‰เบˆเบฑเบ”เบเบฒเบ™เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบžเบงเบเป€เบ‚เบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เป€เบšเบดเปˆเบ‡เบเบธเปˆเบก - เป€เบžเบทเปˆเบญเป€เบšเบดเปˆเบ‡เบงเปˆเบฒ "เบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เปเบกเปˆเบ™เบชเบตเบ‚เบฝเบง", เปเบฅเบฐเบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบˆเบดเปˆเบ‡เบซเบกเบฑเป‰เบ™เปƒเบˆเบ•เบปเบ™เป€เบญเบ‡เบงเปˆเบฒ "เบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เป€เบฎเบฑเบ”เบงเบฝเบ" (เป€เบŠเบดเปˆเบ‡, เปเบ™เปˆเบ™เบญเบ™, เปเบกเปˆเบ™เบžเบตเปˆเบ™เป‰เบญเบ‡เบซเบผเบฒเบ ... เปเบ•เปˆเบ™เบตเป‰เปเบกเปˆเบ™เป€เบเบตเบ™เบ‚เบญเบšเป€เบ‚เบ”เบ‚เบญเบ‡เบšเบปเบ”เบ„เบงเบฒเบก).

เป€เบ›เบฑเบ™เบฅเบฐเบšเบปเบš CI เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบกเบต เบ™เบณ เปƒเบŠเป‰เปเบฅเป‰เบง GitLab: เบ™เบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒเบ—เบธเบเบ„เบปเบ™เปƒเบŠเป‰เบกเบฑเบ™เบ„เบทเบเบฑเบ™. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เป€เบžเบทเปˆเบญเปƒเบซเป‰เบžเบงเบเป€เบ‚เบปเบฒเป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡, เบกเบฑเบ™เบชเบปเบกเป€เบซเบ”เบชเบปเบกเบœเบปเบ™เบ—เบตเปˆเบˆเบฐเบ›เบฐเบชเบปเบกเบ›เบฐเบชเบฒเบ™ Dashboard เบเบฑเบšเบšเบฑเบ™เบŠเบต GitLab.

เบ‚เป‰เบญเบเบเบฑเบ‡เบˆเบฐเบชเบฑเบ‡เป€เบเบ”เบงเปˆเบฒเบžเบงเบเป€เบฎเบปเบฒเปƒเบŠเป‰ NGINX Ingress. เบ–เป‰เบฒเบ—เปˆเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบšเบ„เบปเบ™เบญเบทเปˆเบ™ เบงเบดเบ—เบตเปเบเป‰เป„เบ‚ ingress, เบ—เปˆเบฒเบ™เบˆเบฐเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป„เบ”เป‰เป€เบ›เบฑเบ™เป€เบญเบเบฐเบฅเบฒเบ”เบŠเบญเบเบซเบฒ analogues เบ‚เบญเบ‡เบ„เปเบฒเบšเบฑเบ™เบเบฒเบเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบญเบฐเบ™เบธเบเบฒเบ”.

เบžเบฐเบเบฒเบเบฒเบกเบ›เบฐเบชเบปเบกเบ›เบฐเบชเบฒเบ™

เบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡ Dashboard

เบฅเบฐเบกเบฑเบ”เบฅเบฐเบงเบฑเบ‡: เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบเปเบฒเบฅเบฑเบ‡เบˆเบฐเป€เบฎเบฑเบ”เบŠเป‰เปเบฒเบ‚เบฑเป‰เบ™เบ•เบญเบ™เบ‚เป‰เบฒเบ‡เบฅเบธเปˆเบกเบ™เบตเป‰, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™ - เป€เบžเบทเปˆเบญเบซเบผเบตเบเป€เบงเบฑเป‰เบ™เบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบ—เบตเปˆเบšเปเปˆเบˆเปเบฒเป€เบ›เบฑเบ™ - เบ—เปเบฒเบญเบดเบ”เบญเปˆเบฒเบ™เบเบฑเบšเบซเบปเบงเบ‚เปเป‰เบเปˆเบญเบเบ•เปเปˆเป„เบ›.

เบ™เบฑเบšเบ•เบฑเป‰เบ‡เปเบ•เปˆเบžเบงเบเป€เบฎเบปเบฒเบ™เปเบฒเปƒเบŠเป‰เบเบฒเบ™เบ›เบฐเบชเบปเบกเบ›เบฐเบชเบฒเบ™เบ™เบตเป‰เปƒเบ™เบซเบผเบฒเบเป†เบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡, เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เป€เบฎเบฑเบ”เบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡เบ‚เบญเบ‡เบกเบฑเบ™เป‚เบ”เบเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”. เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ™เบตเป‰เป„เบ”เป‰เบ–เบทเบเบˆเบฑเบ”เบžเบตเบกเบกเบฒเบขเบนเปˆเปƒเบ™ เบ„เบฑเบ‡เป€เบเบฑเบš GitHub เบžเบดเป€เบชเบ”. เบžเบงเบเป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒเปเบกเปˆเบ™เบญเบตเบ‡เปƒเบชเปˆเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ YAML เบ”เบฑเบ”เปเบเป‰เป€เบฅเบฑเบเบ™เป‰เบญเบเบˆเบฒเบ เบ„เบฑเบ‡เป€เบเบฑเบšเบ‚เปเป‰เบกเบนเบ™ Dashboard เบขเปˆเบฒเบ‡เป€เบ›เบฑเบ™เบ—เบฒเบ‡เบเบฒเบ™, เป€เบŠเบฑเปˆเบ™เบ”เบฝเบงเบเบฑเบ™เบเบฑเบš Bash script เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เป„เบง.

เบชเบฐเบ„เบฃเบดเบšเบ•เบดเบ”เบ•เบฑเป‰เบ‡ Dashboard เปƒเบ™เบเบธเปˆเบก เปเบฅเบฐเบเบณเบ™เบปเบ”เบ„เปˆเบฒเบกเบฑเบ™เบชเบณเบฅเบฑเบšเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเป‚เบเบ‡เบเบฑเบš 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 dashboard":

เบเบฒเบ™เบ›เบฐเบชเบปเบกเบ›เบฐเบชเบฒเบ™เบ‚เบญเบ‡ Kubernetes Dashboard เปเบฅเบฐเบœเบนเป‰เปƒเบŠเป‰ GitLab

เป€เบ›เบฑเบ™เบœเบปเบ™เบกเบฒเบˆเบฒเบเบเบฒเบ™เป€เบžเบตเปˆเบกเบกเบฑเบ™, GitLab เบˆเบฐเบชเบฐเบซเบ™เบญเบ‡ hashes:

เบเบฒเบ™เบ›เบฐเบชเบปเบกเบ›เบฐเบชเบฒเบ™เบ‚เบญเบ‡ Kubernetes Dashboard เปเบฅเบฐเบœเบนเป‰เปƒเบŠเป‰ GitLab

เบžเบงเบเป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒเปเบกเปˆเบ™เบœเบนเป‰เบ—เบตเปˆเบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เป€เบ›เบฑเบ™เบเบฒเบ™เป‚เบ•เป‰เบ–เบฝเบ‡เบเบฑเบš script. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡เป€เบšเบดเปˆเบ‡เบ„เบทเบงเปˆเบฒ:

$ ./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

เบšเปเปˆเบ”เบปเบ™เบซเบผเบทเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เบˆเบฐเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™, เบขเปˆเบฒเบ‡เปƒเบ”เบเปเบ•เบฒเบก เบเบฒเบ™เบญเบฐเบ™เบธเบเบฒเบ”เบˆเบฐเบšเปเปˆเป€เบฎเบฑเบ”เบงเบฝเบเบ—เบฑเบ™เบ—เบต! เบ„เบงเบฒเบกเบˆเบดเบ‡เปเบฅเป‰เบงเปเบกเปˆเบ™เบงเปˆเบฒเปƒเบ™เบฎเบนเบšเบžเบฒเบšเบ—เบตเปˆเปƒเบŠเป‰ (เบชเบฐเบ–เบฒเบ™เบฐเบเบฒเบ™เปƒเบ™เบฎเบนเบšเบžเบฒเบšเบญเบทเปˆเบ™เป†เปเบกเปˆเบ™เบ„เป‰เบฒเบเบ„เบทเบเบฑเบ™) เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบˆเบฑเบšเบเบฒเบ™เบ›เปˆเบฝเบ™เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เปƒเบ™เบเบฒเบ™เป‚เบ—เบเบฑเบšเบ„เบทเบ™เป„เบ›เบšเปˆเบญเบ™เบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”เบšเปเปˆเบ–เบทเบเบ•เป‰เบญเบ‡. เบชเบฐเบ–เบฒเบ™เบฐเบเบฒเบ™เบ™เบตเป‰เบ™เปเบฒเป„เบ›เบชเบนเปˆเบ„เบงเบฒเบกเบˆเบดเบ‡เบ—เบตเปˆเบงเปˆเบฒ oauth เบฅเบปเบš cookie เบ—เบตเปˆ oauth เบ•เบปเบงเบ‚เบญเบ‡เบกเบฑเบ™เป€เบญเบ‡เบชเบฐเบซเบ™เบญเบ‡เปƒเบซเป‰เบžเบงเบเป€เบฎเบปเบฒ ...

เบšเบฑเบ™เบซเบฒเป„เบ”เป‰เบ–เบทเบเปเบเป‰เป„เบ‚เป‚เบ”เบเบเบฒเบ™เบชเป‰เบฒเบ‡เบฎเบนเบšเบžเบฒเบš oauth เบ‚เบญเบ‡เบ—เปˆเบฒเบ™เป€เบญเบ‡เบ”เป‰เบงเบ patch.

Patch oauth เปเบฅเบฐเบ•เบดเบ”เบ•เบฑเป‰เบ‡เปƒเบซเบกเปˆ

เป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เบชเบดเปˆเบ‡เบ™เบตเป‰, เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเปƒเบŠเป‰ 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 เบˆเบฒเบ config:

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

เบ™เบตเป‰เปเบกเปˆเบ™เบ‚เปเป‰เบกเบนเบ™เบœเบนเป‰เปƒเบŠเป‰เปƒเบ™ GitLab, เบฅเบฐเบซเบฑเบ” Kubernetes เบˆเบฐเบ”เบถเบ‡เบฎเบนเบšเบžเบฒเบšเบˆเบฒเบเบฅเบตเบˆเบดเบ”เบŠเบต.

เบซเบผเบฑเบ‡เบˆเบฒเบเบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เบ–เบทเบเป€เบฎเบฑเบ”เปเบฅเป‰เบง, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ–เบญเบ™เบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡ Dashboard เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™ (เบšเปเปˆเป€เบฎเบฑเบ”เบงเบฝเบเบขเปˆเบฒเบ‡เบ–เบทเบเบ•เป‰เบญเบ‡) เบ”เป‰เบงเบเบ„เปเบฒเบชเบฑเปˆเบ‡:

$ ./ctl.sh -d

... เปเบฅเบฐเบ•เบดเบ”เบ•เบฑเป‰เบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เบญเบตเบเบ„เบฑเป‰เบ‡:

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

เบกเบฑเบ™เป€เบ–เบดเบ‡เป€เบงเบฅเบฒเบ—เบตเปˆเบˆเบฐเป„เบ›เบ—เบตเปˆ Dashboard เปเบฅเบฐเบŠเบญเบเบซเบฒเบ›เบธเปˆเบกเป€เบ‚เบปเป‰เบฒเบชเบนเปˆเบฅเบฐเบšเบปเบšเบ—เบตเปˆเป€เบเบปเปˆเบฒเปเบเปˆเบซเบผเบฒเบ:

เบเบฒเบ™เบ›เบฐเบชเบปเบกเบ›เบฐเบชเบฒเบ™เบ‚เบญเบ‡ Kubernetes Dashboard เปเบฅเบฐเบœเบนเป‰เปƒเบŠเป‰ GitLab

เบซเบผเบฑเบ‡เบˆเบฒเบเบ—เบตเปˆเบ„เบฅเบดเบเปƒเบชเปˆเบกเบฑเบ™, GitLab เบˆเบฐเบ—เบฑเบเบ—เบฒเบเบžเบงเบเป€เบฎเบปเบฒ, เบชเบฐเป€เบซเบ™เบตเปƒเบซเป‰เป€เบ‚เบปเป‰เบฒเบชเบนเปˆเบฅเบฐเบšเบปเบšเบซเบ™เป‰เบฒเบ›เบปเบเบเบฐเบ•เบดเบ‚เบญเบ‡เบกเบฑเบ™ (เปเบ™เปˆเบ™เบญเบ™, เบ–เป‰เบฒเบžเบงเบเป€เบฎเบปเบฒเบšเปเปˆเป„เบ”เป‰เป€เบ‚เบปเป‰เบฒเบชเบนเปˆเบฅเบฐเบšเบปเบšเบเปˆเบญเบ™เบซเบ™เป‰เบฒเบ™เบฑเป‰เบ™):

เบเบฒเบ™เบ›เบฐเบชเบปเบกเบ›เบฐเบชเบฒเบ™เบ‚เบญเบ‡ Kubernetes Dashboard เปเบฅเบฐเบœเบนเป‰เปƒเบŠเป‰ GitLab

เบžเบงเบเป€เบฎเบปเบฒเป€เบ‚เบปเป‰เบฒเบชเบนเปˆเบฅเบฐเบšเบปเบšเบ”เป‰เบงเบ GitLab credentials - เปเบฅเบฐเบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เปเบกเปˆเบ™เปเบฅเป‰เบง:

เบเบฒเบ™เบ›เบฐเบชเบปเบกเบ›เบฐเบชเบฒเบ™เบ‚เบญเบ‡ Kubernetes Dashboard เปเบฅเบฐเบœเบนเป‰เปƒเบŠเป‰ GitLab

เบเปˆเบฝเบงเบเบฑเบšเบฅเบฑเบเบชเบฐเบ™เบฐ Dashboard

เบ–เป‰เบฒเบ—เปˆเบฒเบ™เป€เบ›เบฑเบ™เบ™เบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒเบ—เบตเปˆเบšเปเปˆเป€เบ„เบตเบเป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบš Kubernetes เบกเบฒเบเปˆเบญเบ™, เบซเบผเบทเบžเบฝเบ‡เปเบ•เปˆเบชเปเบฒเบฅเบฑเบšเป€เบซเบ”เบœเบปเบ™เบšเบฒเบ‡เบขเปˆเบฒเบ‡เบ—เบตเปˆเบšเปเปˆเป€เบ„เบตเบเบžเบปเบš Dashboard เบกเบฒเบเปˆเบญเบ™, เบ‚เป‰เบญเบเบˆเบฐเบชเบฐเปเบ”เบ‡เบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”เบšเบฒเบ‡เบขเปˆเบฒเบ‡เบ‚เบญเบ‡เบกเบฑเบ™.

เบเปˆเบญเบ™เบญเบทเปˆเบ™ เปเบปเบ”, เป€เบˆเบปเป‰เบฒเบชเบฒเบกเบฒเบ”เป€เบซเบฑเบ™เป„เบ”เป‰เบงเปˆเบฒ "เบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เปเบกเปˆเบ™เบชเบตเบ‚เบฝเบง":

เบเบฒเบ™เบ›เบฐเบชเบปเบกเบ›เบฐเบชเบฒเบ™เบ‚เบญเบ‡ Kubernetes Dashboard เปเบฅเบฐเบœเบนเป‰เปƒเบŠเป‰ GitLab

เบ‚เปเป‰โ€‹เบกเบนเบ™โ€‹เบฅเบฐโ€‹เบญเบฝเบ”โ€‹เป€เบžเบตเปˆเบกโ€‹เป€เบ•เบตเบกโ€‹เปเบกเปˆเบ™โ€‹เบเบฑเบ‡โ€‹เบกเบตโ€‹เปƒเบซเป‰โ€‹เบชเปเบฒโ€‹เบฅเบฑเบš podsโ€‹, เป€เบŠเบฑเปˆเบ™โ€‹: เบ•เบปเบงโ€‹เปเบ›โ€‹เบชเบฐโ€‹เบžเบฒเบšโ€‹เปเบงเบ”โ€‹เบฅเป‰เบญเบกโ€‹, เบฎเบนเบšโ€‹เบžเบฒเบšโ€‹เบ—เบตเปˆโ€‹เบ”เบฒเบงโ€‹เป‚เบซเบผเบ”โ€‹, arguments เบเบฒเบ™โ€‹เป€เบ›เบตเบ”โ€‹เบ•เบปเบงโ€‹, เปเบฅเบฐโ€‹เบชเบฐโ€‹เบžเบฒเบšโ€‹เบ‚เบญเบ‡โ€‹เป€เบ‚เบปเบฒโ€‹เป€เบˆเบปเป‰เบฒโ€‹:

เบเบฒเบ™เบ›เบฐเบชเบปเบกเบ›เบฐเบชเบฒเบ™เบ‚เบญเบ‡ Kubernetes Dashboard เปเบฅเบฐเบœเบนเป‰เปƒเบŠเป‰ GitLab

เบเบฒเบ™เบ™เบณเปƒเบŠเป‰เบกเบตเบชเบฐเบ–เบฒเบ™เบฐเบ—เบตเปˆเป€เบซเบฑเบ™เป„เบ”เป‰:

เบเบฒเบ™เบ›เบฐเบชเบปเบกเบ›เบฐเบชเบฒเบ™เบ‚เบญเบ‡ Kubernetes Dashboard เปเบฅเบฐเบœเบนเป‰เปƒเบŠเป‰ GitLab

...เปเบฅเบฐเบฅเบฒเบเบฅเบฐเบญเบฝเบ”เบญเบทเปˆเบ™เป†:

เบเบฒเบ™เบ›เบฐเบชเบปเบกเบ›เบฐเบชเบฒเบ™เบ‚เบญเบ‡ Kubernetes Dashboard เปเบฅเบฐเบœเบนเป‰เปƒเบŠเป‰ GitLab

... เปเบฅเบฐโ€‹เบเบฑเบ‡โ€‹เบกเบตโ€‹เบ„เบงเบฒเบกโ€‹เบชเบฒโ€‹เบกเบฒเบ”โ€‹เปƒเบ™โ€‹เบ‚เบฐโ€‹เบซเบ™เบฒเบ”โ€‹เบเบฒเบ™โ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰โ€‹:

เบเบฒเบ™เบ›เบฐเบชเบปเบกเบ›เบฐเบชเบฒเบ™เบ‚เบญเบ‡ Kubernetes Dashboard เปเบฅเบฐเบœเบนเป‰เปƒเบŠเป‰ GitLab

เบœเบปเบ™โ€‹เบ‚เบญเบ‡โ€‹เบเบฒเบ™โ€‹เบ”เปเบฒโ€‹เป€เบ™เบตเบ™โ€‹เบ‡เบฒเบ™โ€‹เบ™เบตเป‰โ€‹:

เบเบฒเบ™เบ›เบฐเบชเบปเบกเบ›เบฐเบชเบฒเบ™เบ‚เบญเบ‡ Kubernetes Dashboard เปเบฅเบฐเบœเบนเป‰เปƒเบŠเป‰ GitLab

เปƒเบ™เบšเบฑเบ™เบ”เบฒเบ„เบธเบ™เบชเบปเบกเบšเบฑเบ”เบ—เบตเปˆเป€เบ›เบฑเบ™เบ›เบฐเป‚เบซเบเบ”เบญเบทเปˆเบ™เป†เบ—เบตเปˆเป„เบ”เป‰เบเปˆเบฒเบงเบกเบฒเปเบฅเป‰เบงเปƒเบ™เบ•เบญเบ™เบ•เบปเป‰เบ™เบ‚เบญเบ‡เบšเบปเบ”เบ„เบงเบฒเบกเปเบกเปˆเบ™เบเบฒเบ™เป€เบšเบดเปˆเบ‡เบšเบฑเบ™เบ—เบถเบ:

เบเบฒเบ™เบ›เบฐเบชเบปเบกเบ›เบฐเบชเบฒเบ™เบ‚เบญเบ‡ Kubernetes Dashboard เปเบฅเบฐเบœเบนเป‰เปƒเบŠเป‰ GitLab

... เปเบฅเบฐเบŸเบฑเบ‡เบŠเบฑเบ™เป€เบžเบทเปˆเบญเป€เบ‚เบปเป‰เบฒเบชเบนเปˆเบฅเบฐเบšเบปเบš container console เบ‚เบญเบ‡ pod เบ—เบตเปˆเป€เบฅเบทเบญเบ:

เบเบฒเบ™เบ›เบฐเบชเบปเบกเบ›เบฐเบชเบฒเบ™เบ‚เบญเบ‡ Kubernetes Dashboard เปเบฅเบฐเบœเบนเป‰เปƒเบŠเป‰ GitLab

เบ•เบปเบงเบขเปˆเบฒเบ‡, เบ—เปˆเบฒเบ™เบเบฑเบ‡เบชเบฒเบกเบฒเบ”เป€เบšเบดเปˆเบ‡เบ‚เปเป‰เบˆเปเบฒเบเบฑเบ” / เบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เปเปƒเบ™ nodes:

เบเบฒเบ™เบ›เบฐเบชเบปเบกเบ›เบฐเบชเบฒเบ™เบ‚เบญเบ‡ Kubernetes Dashboard เปเบฅเบฐเบœเบนเป‰เปƒเบŠเป‰ GitLab

เปเบ™เปˆเบ™เบญเบ™, เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบšเปเปˆเปเบกเปˆเบ™เบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”เบ—เบฑเบ‡เบซเบกเบปเบ”เบ‚เบญเบ‡เบเบฐเบ”เบฒเบ™, เปเบ•เปˆเบ‚เป‰เบญเบเบซเบงเบฑเบ‡เบงเปˆเบฒเป€เบˆเบปเป‰เบฒเบˆเบฐเป„เบ”เป‰เบฎเบฑเบšเบ„เบงเบฒเบกเบ„เบดเบ”เบ—เบปเปˆเบงเป„เบ›.

เบ‚เปเป‰เป€เบชเบเบ‚เบญเบ‡เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเป‚เบเบ‡เปเบฅเบฐ Dashboard

เปƒเบ™เบเบฒเบ™เบ›เบฐเบชเบปเบกเบ›เบฐเบชเบฒเบ™เบ—เบตเปˆเบญเบฐเบ—เบดเบšเบฒเบเบšเปเปˆเบกเบต เบเบฒเบ™โ€‹เบ„เบงเบšโ€‹เบ„เบธเบกโ€‹เบเบฒเบ™โ€‹เป€เบ‚เบปเป‰เบฒโ€‹เป€เบ–เบดเบ‡โ€‹. เบ”เป‰เบงเบเบกเบฑเบ™, เบœเบนเป‰เปƒเบŠเป‰เบ—เบธเบเบ„เบปเบ™เบ—เบตเปˆเบกเบตเบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡ GitLab เบชเบฒเบกเบฒเบ”เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡ Dashboard เป„เบ”เป‰. เบžเบงเบเป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒเบกเบตเบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบ”เบฝเบงเบเบฑเบ™เปƒเบ™ Dashboard เบ•เบปเบงเบ‚เบญเบ‡เบกเบฑเบ™เป€เบญเบ‡, เบ—เบตเปˆเบชเบญเบ”เบ„เป‰เบญเบ‡เบเบฑเบ™เบเบฑเบšเบชเบดเบ”เบ—เบดเบ‚เบญเบ‡ Dashboard เป€เบญเบ‡, เป€เบŠเบดเปˆเบ‡. เบ–เบทเบเบเปเบฒเบ™เบปเบ”เป„เบงเป‰เปƒเบ™ RBAC. เปเบ™เปˆเบ™เบญเบ™, เบ™เบตเป‰เบšเปเปˆเปเบกเปˆเบ™เป€เบซเบกเบฒเบฐเบชเบปเบกเบชเปเบฒเบฅเบฑเบšเบ—เบธเบเบ„เบปเบ™, เปเบ•เปˆเบชเปเบฒเบฅเบฑเบšเบเปเบฅเบฐเบ™เบตเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ, เบกเบฑเบ™เป„เบ”เป‰เบเบฒเบเป€เบ›เบฑเบ™เบžเบฝเบ‡เบžเป.

เปƒเบ™เบšเบฑเบ™เบ”เบฒเบ‚เปเป‰เป€เบชเบเบ—เบตเปˆเบชเบฑเบ‡เป€เบเบ”เป€เบซเบฑเบ™เปƒเบ™ Dashboard เบ•เบปเบงเบ‚เบญเบ‡เบกเบฑเบ™เป€เบญเบ‡, เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบชเบฑเบ‡เป€เบเบ”เป€เบซเบฑเบ™เบ”เบฑเปˆเบ‡เบ•เปเปˆเป„เบ›เบ™เบตเป‰:

  • เบกเบฑเบ™เป€เบ›เบฑเบ™เป„เบ›เบšเปเปˆเป„เบ”เป‰เบ—เบตเปˆเบˆเบฐเป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™ console เบ‚เบญเบ‡เบ–เบฑเบ‡ init;
  • เบกเบฑเบ™เป€เบ›เบฑเบ™เป„เบ›เบšเปเปˆเป„เบ”เป‰เบ—เบตเปˆเบˆเบฐเปเบเป‰เป„เบ‚ Deployments เปเบฅเบฐ StatefulSets, เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเบ™เบตเป‰เบชเบฒเบกเบฒเบ”เปเบเป‰เป„เบ‚เป„เบ”เป‰เปƒเบ™ ClusterRole;
  • เบ„เบงเบฒเบกเป€เบ‚เบปเป‰เบฒเบเบฑเบ™เป„เบ”เป‰เบ‚เบญเบ‡ Dashboard เบเบฑเบš Kubernetes เบฎเบธเปˆเบ™เบซเบผเป‰เบฒเบชเบธเบ” เปเบฅเบฐเบญเบฐเบ™เบฒเบ„เบปเบ”เบ‚เบญเบ‡เป‚เบ„เบ‡เบเบฒเบ™เป€เบฎเบฑเบ”เปƒเบซเป‰เป€เบเบตเบ”เบ„เปเบฒเบ–เบฒเบก.

เบšเบฑเบ™เบซเบฒเบชเบธเบ”เบ—เป‰เบฒเบเบชเบปเบกเบ„เบงเบ™เป„เบ”เป‰เบฎเบฑเบšเบ„เบงเบฒเบกเบชเบปเบ™เปƒเบˆเป€เบ›เบฑเบ™เบžเบดเป€เบชเบ”.

เบชเบฐเบ–เบฒเบ™เบฐ dashboard เปเบฅเบฐเบ—เบฒเบ‡เป€เบฅเบทเบญเบ

เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบ„เบงเบฒเบกเป€เบ‚เบปเป‰เบฒเบเบฑเบ™เป„เบ”เป‰เบ‚เบญเบ‡ Dashboard เบเบฑเบšเบเบฒเบ™เป€เบ›เบตเบ”เบ•เบปเบง Kubernetes, เบ™เปเบฒเบชเบฐเป€เบซเบ™เบตเปƒเบ™เบชเบฐเบšเบฑเบšเบซเบฅเป‰เบฒเบชเบธเบ”เบ‚เบญเบ‡เป‚เบ„เบ‡เบเบฒเบ™ (v1.10.1), เบšเปเปˆโ€‹เบกเบตโ€‹เบ„เบงเบฒเบกโ€‹เบชเบธเบโ€‹เบซเบผเบฒเบโ€‹:

เบเบฒเบ™เบ›เบฐเบชเบปเบกเบ›เบฐเบชเบฒเบ™เบ‚เบญเบ‡ Kubernetes Dashboard เปเบฅเบฐเบœเบนเป‰เปƒเบŠเป‰ GitLab

เป€เบ–เบดเบ‡เบงเปˆเบฒเบˆเบฐเบกเบตเบ™เบตเป‰, เบกเบต (เป„เบ”เป‰เบฎเบฑเบšเบฎเบญเบ‡เป€เบญเบปเบฒเปเบฅเป‰เบงเปƒเบ™เป€เบ”เบทเบญเบ™เบกเบฑเบ‡เบเบญเบ™) เบ›เบ— #3476, เป€เบŠเบดเปˆเบ‡เบ›เบฐเบเบฒเบ”เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™ K8s 1.13. เบ™เบญเบเบˆเบฒเบเบ™เบฑเป‰เบ™, เปƒเบ™เบšเบฑเบ™เบ”เบฒเบšเบฑเบ™เบซเบฒเบ‚เบญเบ‡เป‚เบ„เบ‡เบเบฒเบ™เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบŠเบญเบเบซเบฒเบเบฒเบ™เบญเป‰เบฒเบ‡เบญเบตเบ‡เป€เบ–เบดเบ‡เบœเบนเป‰เปƒเบŠเป‰เบ—เบตเปˆเป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบšเบเบฐเบ”เบฒเบ™เปƒเบ™ K8s 1.14. เบชเบธเบ”เบ—เป‰เบฒเบ, เบ„เปเบฒเบซเบกเบฑเป‰เบ™เบชเบฑเบ™เบเบฒ เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบ–เบฒเบ™เบฅเบฐเบซเบฑเบ”เบ‚เบญเบ‡เป‚เบ„เบ‡เบเบฒเบ™เบšเปเปˆเบขเบธเบ”. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™ (เบขเปˆเบฒเบ‡เบซเบ™เป‰เบญเบ!) เบชเบฐเบ–เบฒเบ™เบฐเบžเบฒเบšเบ•เบปเบงเบˆเบดเบ‡เบ‚เบญเบ‡เป‚เบ„เบ‡เบเบฒเบ™เปเบกเปˆเบ™เบšเปเปˆเบฎเป‰เบฒเบเปเบฎเบ‡เป€เบ—เบปเปˆเบฒเบ—เบตเปˆเบกเบฑเบ™เบญเบฒเบ”เบˆเบฐเป€เบšเบดเปˆเบ‡เบ„เบทเบงเปˆเบฒเบ—เปเบฒเบญเบดเบ”เบˆเบฒเบเบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบ„เบงเบฒเบกเป€เบ‚เบปเป‰เบฒเบเบฑเบ™เป„เบ”เป‰เบขเปˆเบฒเบ‡เป€เบ›เบฑเบ™เบ—เบฒเบ‡เบเบฒเบ™.

เบชเบธเบ”เบ—เป‰เบฒเบ, เบกเบตเบ—เบฒเบ‡เป€เบฅเบทเบญเบเปƒเบ™เบเบฒเบ™ Dashboard. เปƒเบ™เบšเบฑเบ™เบ”เบฒเบžเบงเบเป€เบ‚เบปเบฒ:

  1. K8Dash โ€” เป€เบ›เบฑเบ™เบเบฒเบ™เป‚เบ•เป‰เบ•เบญเบšเป„เบงเบซเบ™เบธเปˆเบก (เบ„เปเบฒเบซเบกเบฑเป‰เบ™เบชเบฑเบ™เบเบฒเบ„เบฑเป‰เบ‡เบ—เปเบฒเบญเบดเบ”เบเบฑเบšเป€เบ”เบทเบญเบ™เบกเบตเบ™เบฒเบ‚เบญเบ‡เบ›เบตเบ™เบตเป‰), เป€เบŠเบดเปˆเบ‡เบชเบฐเป€เบซเบ™เบตเบ„เบธเบ™เบชเบปเบกเบšเบฑเบ”เบ—เบตเปˆเบ”เบตเป€เบŠเบฑเปˆเบ™: เบเบฒเบ™เบชเบฐเปเบ”เบ‡เบžเบฒเบšเบ‚เบญเบ‡เบชเบฐเบ–เบฒเบ™เบฐเบžเบฒเบšเบ›เบฐเบˆเบธเบšเบฑเบ™เบ‚เบญเบ‡เบเบธเปˆเบกเปเบฅเบฐเบเบฒเบ™เบ„เบธเป‰เบกเบ„เบญเบ‡เบงเบฑเบ”เบ–เบธเบ‚เบญเบ‡เบกเบฑเบ™. เบ•เปเบฒเปเบซเบ™เปˆเบ‡เป€เบ›เบฑเบ™ "เบเบฒเบ™เป‚เบ•เป‰เบ•เบญเบšเปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเปเบ—เป‰เบˆเบดเบ‡", เป€เบžเบฒเบฐเบงเปˆเบฒ เบ›เบฑเบšเบ›เบธเบ‡เบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเบชเบฐเปเบ”เบ‡เป‚เบ”เบเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เป‚เบ”เบเบšเปเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เปƒเบซเป‰เบ—เปˆเบฒเบ™เป‚เบซเบผเบ”เบซเบ™เป‰เบฒเปƒเบซเบกเปˆเปƒเบ™เบ•เบปเบงเบ—เปˆเบญเบ‡เป€เบงเบฑเบš.
  2. OpenShift Console - เบเบฒเบ™เป‚เบ•เป‰เบ•เบญเบšเป€เบงเบฑเบšเป„เบŠเบ•เปŒเบˆเบฒเบ Red Hat OpenShift, เป€เบŠเบดเปˆเบ‡, เบขเปˆเบฒเบ‡เปƒเบ”เบเปเบ•เบฒเบก, เบˆเบฐเบ™เปเบฒเป€เบญเบปเบฒเบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเบญเบทเปˆเบ™เป†เบ‚เบญเบ‡เป‚เบ„เบ‡เบเบฒเบ™เป„เบ›เบซเบฒเบเบธเปˆเบกเบ‚เบญเบ‡เบ—เปˆเบฒเบ™, เป€เบŠเบดเปˆเบ‡เบšเปเปˆเป€เบซเบกเบฒเบฐเบชเบปเบกเบชเปเบฒเบฅเบฑเบšเบ—เบธเบเบ„เบปเบ™.
  3. Kubernator เป€เบ›เบฑเบ™เป‚เบ„เบ‡เบเบฒเบ™เบ—เบตเปˆเบซเบ™เป‰เบฒเบชเบปเบ™เปƒเบˆ, เบชเป‰เบฒเบ‡เป€เบ›เบฑเบ™เบเบฒเบ™เป‚เบ•เป‰เบ•เบญเบšเบฅเบฐเบ”เบฑเบšเบ•เปˆเปเบฒ (เบเปˆเบงเบฒ Dashboard) เบ—เบตเปˆเบกเบตเบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”เปƒเบ™เบเบฒเบ™เป€เบšเบดเปˆเบ‡เบงเบฑเบ”เบ–เบธเบ‚เบญเบ‡เบเบธเปˆเบกเบ—เบฑเบ‡เบซเบกเบปเบ”. เบขเปˆเบฒเบ‡เปƒเบ”เบเปเปˆเบ•เบฒเบก, เป€เบšเบดเปˆเบ‡เบ„เบทเบงเปˆเบฒเบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเบ‚เบญเบ‡เบกเบฑเบ™เป„เบ”เป‰เบขเบธเบ”เป€เบŠเบปเบฒ.
  4. Polaris - เบžเบฝเบ‡โ€‹เปเบ•เปˆโ€‹เบกเบทเป‰โ€‹เบญเบทเปˆเบ™โ€‹ เบ›เบฐโ€‹เบเบฒเบ” เป‚เบ„เบ‡โ€‹เบเบฒเบ™โ€‹เบ—เบตเปˆโ€‹เบฅเบงเบกโ€‹เบซเบ™เป‰เบฒโ€‹เบ—เบตเปˆโ€‹เบ‚เบญเบ‡โ€‹เบ„เบฐโ€‹เบ™เบฐโ€‹เบเปเบฒโ€‹เบกเบฐ (เบชเบฐโ€‹เปเบ”เบ‡โ€‹เปƒเบซเป‰โ€‹เป€เบซเบฑเบ™โ€‹เบชเบฐโ€‹เบ–เบฒโ€‹เบ™เบฐโ€‹เบเบฒเบ™โ€‹เบ›เบฐโ€‹เบˆเบธโ€‹เบšเบฑเบ™โ€‹เบ‚เบญเบ‡โ€‹เบเบธเปˆเบกโ€‹, เปเบ•เปˆโ€‹เบšเปเปˆโ€‹เป„เบ”เป‰โ€‹เบˆเบฑเบ”โ€‹เบเบฒเบ™โ€‹เบงเบฑเบ”โ€‹เบ–เบธโ€‹เบ‚เบญเบ‡โ€‹เบ•เบปเบ™โ€‹) เปเบฅเบฐโ€‹เบญเบฑเบ”โ€‹เบ•เบฐโ€‹เป‚เบ™โ€‹เบกเบฑเบ” "เบเบฒเบ™โ€‹เบเบงเบ”โ€‹เบชเบญเบšโ€‹เบเบฒเบ™โ€‹เบ›เบฐโ€‹เบ•เบดโ€‹เบšเบฑเบ”โ€‹เบ—เบตเปˆโ€‹เบ”เบตโ€‹เบ—เบตเปˆโ€‹เบชเบธเบ”โ€‹" (เบเบงเบ”โ€‹เบชเบญเบšโ€‹เบเบธเปˆเบกโ€‹เบชเปเบฒโ€‹เบฅเบฑเบšโ€‹เบ„เบงเบฒเบกโ€‹เบ–เบทเบโ€‹เบ•เป‰เบญเบ‡โ€‹เบ‚เบญเบ‡โ€‹เบเบฒเบ™โ€‹เบ•เบฑเป‰เบ‡โ€‹เบ„เปˆเบฒโ€‹เบ‚เบญเบ‡โ€‹เบเบฒเบ™โ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰โ€‹เปƒเบ™โ€‹เบกเบฑเบ™โ€‹)โ€‹.

เปเบ—เบ™เบ—เบตเปˆเบˆเบฐเบชเบฐเบซเบฅเบธเบš

Dashboard เป€เบ›เบฑเบ™เป€เบ„เบทเปˆเบญเบ‡เบกเบทเบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™เบชเปเบฒเบฅเบฑเบšเบเบธเปˆเบก Kubernetes เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเปƒเบซเป‰เบšเปเบฅเบดเบเบฒเบ™. เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเป‚เบเบ‡เบ‚เบญเบ‡เบกเบฑเบ™เบเบฑเบš GitLab เป„เบ”เป‰เบเบฒเบเป€เบ›เบฑเบ™เบชเปˆเบงเบ™เบซเบ™เบถเปˆเบ‡เบ‚เบญเบ‡เบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡เปƒเบ™เบ•เบญเบ™เบ•เบปเป‰เบ™เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ, เบเป‰เบญเบ™เบงเปˆเบฒเบ™เบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒเบซเบผเบฒเบเบ„เบปเบ™เบ•เบทเปˆเบ™เป€เบ•เบฑเป‰เบ™เบเบฑเบšเบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”เบ—เบตเปˆเบžเบงเบเป€เบ‚เบปเบฒเบกเบตเบเบฑเบšเบเบฐเบ”เบฒเบ™เบ™เบตเป‰.

Kubernetes Dashboard เปเบ•เปˆเบฅเบฐเป„เบฅเบเบฐเบกเบตเบ—เบฒเบ‡เป€เบฅเบทเบญเบเบˆเบฒเบเบŠเบธเบกเบŠเบปเบ™เปเบซเบผเปˆเบ‡เป€เบ›เบตเบ” (เปเบฅเบฐเบžเบงเบเป€เบฎเบปเบฒเบเบดเบ™เบ”เบตเบ—เบตเปˆเบˆเบฐเบžเบดเบˆเบฒเบฅเบฐเบ™เบฒเบžเบงเบเบกเบฑเบ™), เปเบ•เปˆเปƒเบ™เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบ™เบตเป‰เบžเบงเบเป€เบฎเบปเบฒเบเบฑเบ‡เบ„เบปเบ‡เบขเบนเปˆเบเบฑเบšเบเบฒเบ™เปเบเป‰เป„เบ‚เบ™เบตเป‰.

PS

เบญเปˆเบฒเบ™เบเบฑเบ‡เบขเบนเปˆเปƒเบ™ blog เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ:

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: www.habr.com

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™