เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธ เชกเซ‡เชถเชฌเซ‹เชฐเซเชก เช…เชจเซ‡ เช—เชฟเชŸเชฒเซ‡เชฌ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพเช“เชจเซเช‚ เชเช•เซ€เช•เชฐเชฃ

เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธ เชกเซ‡เชถเชฌเซ‹เชฐเซเชก เช…เชจเซ‡ เช—เชฟเชŸเชฒเซ‡เชฌ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพเช“เชจเซเช‚ เชเช•เซ€เช•เชฐเชฃ

เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธ เชกเซ‡เชถเชฌเซ‹เชฐเซเชก เช เชคเชฎเชพเชฐเชพ เชšเชพเชฒเซ€ เชฐเชนเซ‡เชฒเชพ เช•เซเชฒเชธเซเชŸเชฐ เชตเชฟเชถเซ‡ เช…เชช-เชŸเซ‚-เชกเซ‡เชŸ เชฎเชพเชนเชฟเชคเซ€ เชฎเซ‡เชณเชตเชตเชพ เช…เชจเซ‡ เชคเซ‡เชจเซ‡ เชจเซเชฏเซ‚เชจเชคเชฎ เชชเซเชฐเชฏเชคเซเชจเซ‹ เชธเชพเชฅเซ‡ เชธเช‚เชšเชพเชฒเชฟเชค เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เช‰เชชเชฏเซ‹เช—เชฎเชพเช‚ เชธเชฐเชณ เชธเชพเชงเชจ เช›เซ‡. เชคเชฎเซ‡ เชคเซ‡เชจเซ€ เชตเชงเซ เชชเซเชฐเชถเช‚เชธเชพ เช•เชฐเชตเชพเชจเซเช‚ เชถเชฐเซ‚ เช•เชฐเซ‹ เช›เซ‹ เชœเซเชฏเชพเชฐเซ‡ เช† เช•เซเชทเชฎเชคเชพเช“เชจเซ€ เชเช•เซเชธเซ‡เชธ เชฎเชพเชคเซเชฐ เชเชกเชฎเชฟเชจเชฟเชธเซเชŸเซเชฐเซ‡เชŸเชฐเซเชธ/DevOps เชเชจเซเชœเชฟเชจเชฟเชฏเชฐเซ‹ เชฆเซเชตเชพเชฐเชพ เชœ เชœเชฐเซ‚เชฐเซ€ เชจเชฅเซ€, เชชเชฐเช‚เชคเซ เชœเซ‡เช“ เช•เชจเซเชธเซ‹เชฒเชฅเซ€ เช“เช›เชพ เชŸเซ‡เชตเชพเชฏเซ‡เชฒเชพ เช›เซ‡ เช…เชจเซ‡/เช…เชฅเชตเชพ kubectl เชธเชพเชฅเซ‡ เช•เซเชฐเชฟเชฏเชพเชชเซเชฐเชคเชฟเช•เซเชฐเชฟเชฏเชพ เช•เชฐเชตเชพเชจเซ€ เชคเชฎเชพเชฎ เชœเชŸเชฟเชฒเชคเชพเช“เชจเซ‡ เช‰เช•เซ‡เชฒเชตเชพเชจเซ‹ เช‡เชฐเชพเชฆเซ‹ เชงเชฐเชพเชตเชคเชพ เชจเชฅเซ€. เช…เชจเซเชฏ เช‰เชชเชฏเซ‹เช—เชฟเชคเชพเช“. เช† เช…เชฎเชพเชฐเซ€ เชธเชพเชฅเซ‡ เชฅเชฏเซเช‚: เชตเชฟเช•เชพเชธเช•เชฐเซเชคเชพเช“เชจเซ‡ เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธ เชตเซ‡เชฌ เชˆเชจเซเชŸเชฐเชซเซ‡เชธเชจเซ€ เชเชกเชชเซ€ เชเช•เซเชธเซ‡เชธ เชœเซ‹เชˆเชคเซ€ เชนเชคเซ€, เช…เชจเซ‡ เช…เชฎเซ‡ GitLab เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชคเชพ เชนเซ‹เชตเชพเชฅเซ€, เช‰เช•เซ‡เชฒ เช•เซเชฆเชฐเชคเซ€ เชฐเซ€เชคเซ‡ เช†เชตเซเชฏเซ‹.

เช† เช•เซ‡เชฎ เช›เซ‡?

เชกเชพเชฏเชฐเซ‡เช•เซเชŸ เชกเซ‡เชตเชฒเชชเชฐเชจเซ‡ เชกเซ€เชฌเช—เซ€เช‚เช— เช•เชพเชฐเซเชฏเซ‹ เชฎเชพเชŸเซ‡ K8s เชกเซ‡เชถเชฌเซ‹เชฐเซเชก เชœเซ‡เชตเชพ เชŸเซ‚เชฒเชฎเชพเช‚ เชฐเชธ เชนเซ‹เชˆ เชถเช•เซ‡ เช›เซ‡. เช•เซ‡เชŸเชฒเซ€เช•เชตเชพเชฐ เชคเชฎเซ‡ เชฒเซ‹เช— เช…เชจเซ‡ เชธเช‚เชธเชพเชงเชจเซ‹ เชœเซ‹เชตเชพ เชฎเชพเช‚เช—เซ‹ เช›เซ‹, เช…เชจเซ‡ เช•เซ‡เชŸเชฒเซ€เช•เชตเชพเชฐ เชชเซ‹เชกเซเชธเชจเซ‡ เชฎเชพเชฐเชตเชพ เชฎเชพเช‚เช—เซ‹ เช›เซ‹, เชกเชฟเชชเซเชฒเซ‹เชฏเชฎเซ‡เชจเซเชŸเซเชธ/เชธเซเชŸเซ‡เชŸเชซเซเชฒเชธเซ‡เชŸเซเชธ เชธเซเช•เซ‡เชฒ เช•เชฐเซ‹ เช›เซ‹, เช…เชจเซ‡ เช•เชจเซเชŸเซ‡เชจเชฐ เช•เชจเซเชธเซ‹เชฒ เชชเชฐ เชชเชฃ เชœเชพเช“ เช›เซ‹ (เชคเซเชฏเชพเช‚ เชชเชฃ เช†เชตเซ€ เชตเชฟเชจเช‚เชคเซ€เช“ เช›เซ‡, เชœเซ‡เชจเชพ เชฎเชพเชŸเซ‡, เชœเซ‹ เช•เซ‡, เชฌเซ€เชœเซ€ เชฐเซ€เชค เช›เซ‡ - เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เชฎเชพเชฐเชซเชคเซ‡ kubectl-เชกเชฟเชฌเช—).

เชตเชงเซเชฎเชพเช‚, เชฎเซ‡เชจเซ‡เชœเชฐเซ‹ เชฎเชพเชŸเซ‡ เชเช• เชฎเชจเซ‹เชตเซˆเชœเซเชžเชพเชจเชฟเช• เช•เซเชทเชฃ เช›เซ‡ เชœเซเชฏเชพเชฐเซ‡ เชคเซ‡เช“ เช•เซเชฒเชธเซเชŸเชฐเชจเซ‡ เชœเซ‹เชตเชพ เชฎเชพเช‚เช—เซ‡ เช›เซ‡ - เชคเซ‡ เชœเซ‹เชตเชพ เชฎเชพเชŸเซ‡ เช•เซ‡ "เชฌเชงเซเช‚ เชฒเซ€เชฒเซเช‚ เช›เซ‡", เช…เชจเซ‡ เช† เชฐเซ€เชคเซ‡ เชชเซ‹เชคเชพเชจเซ‡ เช–เชพเชคเชฐเซ€ เช†เชชเซ‹ เช•เซ‡ "เชฌเชงเซเช‚ เช•เชพเชฎ เช•เชฐเซ€ เชฐเชนเซเชฏเซเช‚ เช›เซ‡" (เชœเซ‡, เช…เชฒเชฌเชคเซเชค, เช–เซ‚เชฌ เชœ เชธเช‚เชฌเช‚เชงเชฟเชค เช›เซ‡... เชชเชฐเช‚เชคเซ เช† เชฒเซ‡เช–เชจเชพ เช…เชตเช•เชพเชถเชจเซ€ เชฌเชนเชพเชฐ เช›เซ‡).

เชชเซเชฐเชฎเชพเชฃเชญเซ‚เชค CI เชธเชฟเชธเซเชŸเชฎ เชคเชฐเซ€เช•เซ‡ เช…เชฎเชพเชฐเซ€ เชชเชพเชธเซ‡ เช›เซ‡ เชฒเชพเช—เซ เชชเชกเซ‡ เช›เซ‡ GitLab: เชฌเชงเชพ เชตเชฟเช•เชพเชธเช•เชฐเซเชคเชพเช“ เชชเชฃ เชคเซ‡เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ‡ เช›เซ‡. เชคเซ‡เชฅเซ€, เชคเซ‡เชฎเชจเซ‡ เชเช•เซเชธเซ‡เชธ เชชเซเชฐเชฆเชพเชจ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡, เช—เชฟเชŸเชฒเซ‡เชฌ เชเช•เชพเช‰เชจเซเชŸเซเชธ เชธเชพเชฅเซ‡ เชกเซ‡เชถเชฌเซ‹เชฐเซเชกเชจเซ‡ เชเช•เซ€เช•เซƒเชค เช•เชฐเชตเซเช‚ เชคเชพเชฐเซเช•เชฟเช• เชนเชคเซเช‚.

เชนเซเช‚ เช เชชเชฃ เชจเซ‹เช‚เชงเซ€เชถ เช•เซ‡ เช…เชฎเซ‡ NGINX Ingress เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เช เช›เซ€เช. เชœเซ‹ เชคเชฎเซ‡ เช…เชจเซเชฏ เชฒเซ‹เช•เซ‹ เชธเชพเชฅเซ‡ เช•เชพเชฎ เช•เชฐเซ‹ เช›เซ‹ เช‰เช•เซ‡เชฒเซ‹ เชฆเชพเช–เชฒ เช•เชฐเซ‹, เชคเชฎเชพเชฐเซ‡ เช…เชงเชฟเช•เซƒเชคเชคเชพ เชฎเชพเชŸเซ‡ เชŸเซ€เช•เชพเช“เชจเชพ เชเชจเชพเชฒเซ‹เช—เซเชธ เชธเซเชตเชคเช‚เชคเซเชฐ เชฐเซ€เชคเซ‡ เชถเซ‹เชงเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เชชเชกเชถเซ‡.

เชเช•เซ€เช•เชฐเชฃเชจเซ‹ เชชเซเชฐเชฏเชพเชธ เช•เชฐเซ€ เชฐเชนเซเชฏเชพเช‚ เช›เซ€เช

เชกเซ‡เชถเชฌเซ‹เชฐเซเชก เช‡เชจเซเชธเซเชŸเซ‹เชฒเซ‡เชถเชจ

เชธเชพเชตเชงเชพเชจ: เชœเซ‹ เชคเชฎเซ‡ เชจเซ€เชšเซ‡เชจเชพ เชชเช—เชฒเชพเช‚เชจเซ‡ เชชเซเชจเชฐเชพเชตเชฐเซเชคเชฟเชค เช•เชฐเชตเชพ เชœเชˆ เชฐเชนเซเชฏเชพ เช›เซ‹, เชคเซ‹ เชชเช›เซ€ - เชฌเชฟเชจเชœเชฐเซ‚เชฐเซ€ เช•เชพเชฎเช—เซ€เชฐเซ€ เชŸเชพเชณเชตเชพ เชฎเชพเชŸเซ‡ - เชชเชนเซ‡เชฒเชพ เช†เช—เชณเชจเซเช‚ เชธเชฌเชนเซ‡เชกเชฟเช‚เช— เชตเชพเช‚เชšเซ‹.

เช…เชฎเซ‡ เช˜เชฃเชพ เช‡เชจเซเชธเซเชŸเซ‹เชฒเซ‡เชถเชจเชฎเชพเช‚ เช† เชเช•เซ€เช•เชฐเชฃเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชคเชพ เชนเซ‹เชตเชพเชฅเซ€, เช…เชฎเซ‡ เชคเซ‡เชจเซเช‚ เช‡เชจเซเชธเซเชŸเซ‹เชฒเซ‡เชถเชจ เชธเซเชตเชšเชพเชฒเชฟเชค เช•เชฐเซเชฏเซเช‚ เช›เซ‡. เช† เชฎเชพเชŸเซ‡ เชœเชฐเซ‚เชฐเซ€ เชธเซเชคเซเชฐเซ‹เชคเซ‹ เชฎเชพเช‚ เชชเซเชฐเช•เชพเชถเชฟเชค เชฅเชฏเซ‡เชฒ เช›เซ‡ เช–เชพเชธ GitHub เชฐเซ€เชชเซ‹เชเซ€เชŸเชฐเซ€. เชคเซ‡เช“ เชฎเชพเช‚เชฅเซ€ เชธเชนเซ‡เชœ เชธเช‚เชถเซ‹เชงเชฟเชค YAML เชฐเซ‚เชชเชฐเซ‡เช–เชพเช‚เช•เชจเซ‹ เชชเชฐ เช†เชงเชพเชฐเชฟเชค เช›เซ‡ เชธเชคเซเชคเชพเชตเชพเชฐ เชกเซ‡เชถเชฌเซ‹เชฐเซเชก เชฐเซ€เชชเซ‹เชเซ€เชŸเชฐเซ€, เชคเซ‡เชฎเชœ เชเชกเชชเซ€ เชœเชฎเชพเชตเชŸ เชฎเชพเชŸเซ‡ Bash เชธเซเช•เซเชฐเชฟเชชเซเชŸ.

เชธเซเช•เซเชฐเชฟเชชเซเชŸ เช•เซเชฒเชธเซเชŸเชฐเชฎเชพเช‚ เชกเซ‡เชถเชฌเซ‹เชฐเซเชก เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเซ‡ เช›เซ‡ เช…เชจเซ‡ เช—เชฟเชŸเชฒเซ‡เชฌ เชธเชพเชฅเซ‡ เชเช•เซ€เช•เชฐเชฃ เชฎเชพเชŸเซ‡ เชคเซ‡เชจเซ‡ เช—เซ‹เช เชตเซ‡ เช›เซ‡:

$ ./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 เชชเชฐ เชœเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡: เชเชกเชฎเชฟเชจ เชตเชฟเชธเซเชคเชพเชฐ โ†’ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเซเชธ - เช…เชจเซ‡ เชญเชพเชตเชฟ เชชเซ‡เชจเชฒ เชฎเชพเชŸเซ‡ เชจเชตเซ€ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เช‰เชฎเซ‡เชฐเซ‹. เชšเชพเชฒเซ‹ เชคเซ‡เชจเซ‡ "เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธ เชกเซ‡เชถเชฌเซ‹เชฐเซเชก" เช•เชนเซ€เช:

เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธ เชกเซ‡เชถเชฌเซ‹เชฐเซเชก เช…เชจเซ‡ เช—เชฟเชŸเชฒเซ‡เชฌ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพเช“เชจเซเช‚ เชเช•เซ€เช•เชฐเชฃ

เชคเซ‡เชจเซ‡ เช‰เชฎเซ‡เชฐเชตเชพเชจเชพ เชชเชฐเชฟเชฃเชพเชฎเซ‡, 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

เชœเซ‹ เช•เซ‡, เชตเชนเซ‡เชฒเชพ เช•เซ‡ เชชเช›เซ€ เชฌเชงเซเช‚ เชถเชฐเซ‚ เชฅเชถเซ‡ เช…เชงเชฟเช•เซƒเชคเชคเชพ เชคเชฐเชค เช•เชพเชฎ เช•เชฐเชถเซ‡ เชจเชนเซ€เช‚! เชนเช•เซ€เช•เชค เช เช›เซ‡ เช•เซ‡ เชตเชชเชฐเชพเชฏเซ‡เชฒเซ€ เช›เชฌเซ€เชฎเชพเช‚ (เช…เชจเซเชฏ เช›เชฌเซ€เช“เชจเซ€ เชชเชฐเชฟเชธเซเชฅเชฟเชคเชฟ เชธเชฎเชพเชจ เช›เซ‡) เช•เซ‰เชฒเชฌเซ‡เช•เชฎเชพเช‚ เชฐเซ€เชกเชพเชฏเชฐเซ‡เช•เซเชŸ เชชเช•เชกเชตเชพเชจเซ€ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เช–เซ‹เชŸเซ€ เชฐเซ€เชคเซ‡ เชฒเชพเช—เซ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ€ เช›เซ‡. เช† เชธเช‚เชœเซ‹เช—เซ‹ เช เชนเช•เซ€เช•เชค เชคเชฐเชซ เชฆเซ‹เชฐเซ€ เชœเชพเชฏ เช›เซ‡ เช•เซ‡ เช“เชฅ เช เช•เซ‚เช•เซ€เชจเซ‡ เชญเซ‚เช‚เชธเซ€ เชจเชพเช–เซ‡ เช›เซ‡ เชœเซ‡ เชถเชชเชฅ เชชเซ‹เชคเซ‡ เชœ เช†เชชเชฃเชจเซ‡ เชชเซเชฐเชฆเชพเชจ เช•เชฐเซ‡ เช›เซ‡...

เชชเซ‡เชš เชธเชพเชฅเซ‡ เชคเชฎเชพเชฐเซ€ เชชเซ‹เชคเชพเชจเซ€ เชถเชชเชฅ เช‡เชฎเซ‡เชœ เชฌเชจเชพเชตเซ€เชจเซ‡ เชธเชฎเชธเซเชฏเชพ เชนเชฒ เชฅเชพเชฏ เช›เซ‡.

เชชเซ‡เชš เช“เชฅ เช…เชจเซ‡ เชซเชฐเซ€เชฅเซ€ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเซ‹

เช† เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡, เช…เชฎเซ‡ เชจเซ€เชšเซ‡เชจเซ€ เชกเซ‹เช•เชฐเชซเชพเช‡เชฒเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชถเซเช‚:

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 เช“เชณเช–เชชเชคเซเชฐเซ‹ เชธเชพเชฅเซ‡ เชฒเซ‰เช— เช‡เชจ เช•เชฐเซ€เช เช›เซ€เช - เช…เชจเซ‡ เชฌเชงเซเช‚ เชฅเชˆ เช—เชฏเซเช‚ เช›เซ‡:

เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธ เชกเซ‡เชถเชฌเซ‹เชฐเซเชก เช…เชจเซ‡ เช—เชฟเชŸเชฒเซ‡เชฌ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพเช“เชจเซเช‚ เชเช•เซ€เช•เชฐเชฃ

เชกเซ‡เชถเชฌเซ‹เชฐเซเชก เชธเซเชตเชฟเชงเชพเช“ เชตเชฟเชถเซ‡

เชœเซ‹ เชคเชฎเซ‡ เชเชตเชพ เชกเซ‡เชตเชฒเชชเชฐ เช›เซ‹ เช•เซ‡ เชœเซ‡เชฎเชฃเซ‡ เชชเชนเซ‡เชฒเชพเช‚ เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธ เชธเชพเชฅเซ‡ เช•เชพเชฎ เช•เชฐเซเชฏเซเช‚ เชจเชฅเซ€, เช…เชฅเชตเชพ เชซเช•เซเชค เช•เซ‹เชˆ เช•เชพเชฐเชฃเซ‹เชธเชฐ เชกเซ‡เชถเชฌเซ‹เชฐเซเชกเชจเซ‹ เชธเชพเชฎเชจเซ‹ เช•เชฐเชตเซ‹ เชชเชกเซเชฏเซ‹ เชจเชฅเซ€, เชคเซ‹ เชนเซเช‚ เชคเซ‡เชจเซ€ เช•เซ‡เชŸเชฒเซ€เช• เช•เซเชทเชฎเชคเชพเช“เชจเซ‡ เชธเชฎเชœเชพเชตเซ€เชถ.

เชชเซเชฐเชฅเชฎ, เชคเชฎเซ‡ เชœเซ‹เชˆ เชถเช•เซ‹ เช›เซ‹ เช•เซ‡ "เชฌเชงเซเช‚ เชฒเซ€เชฒเซเช‚ เช›เซ‡":

เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธ เชกเซ‡เชถเชฌเซ‹เชฐเซเชก เช…เชจเซ‡ เช—เชฟเชŸเชฒเซ‡เชฌ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพเช“เชจเซเช‚ เชเช•เซ€เช•เชฐเชฃ

เชชเซ‹เชกเซเชธ เชฎเชพเชŸเซ‡ เชตเชงเซ เชตเชฟเช—เชคเชตเชพเชฐ เชกเซ‡เชŸเชพ เชชเชฃ เช‰เชชเชฒเชฌเซเชง เช›เซ‡, เชœเซ‡เชฎ เช•เซ‡ เชชเชฐเซเชฏเชพเชตเชฐเชฃ เชšเชฒเซ‹, เชกเชพเช‰เชจเชฒเซ‹เชก เช•เชฐเซ‡เชฒเซ€ เช›เชฌเซ€, เชฒเซ‹เชจเซเชš เชฆเชฒเซ€เชฒเซ‹ เช…เชจเซ‡ เชคเซ‡เชฎเชจเซ€ เชธเซเชฅเชฟเชคเชฟ:

เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธ เชกเซ‡เชถเชฌเซ‹เชฐเซเชก เช…เชจเซ‡ เช—เชฟเชŸเชฒเซ‡เชฌ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพเช“เชจเซเช‚ เชเช•เซ€เช•เชฐเชฃ

เชœเชฎเชพเชตเชŸเชจเซ€ เชฆเซƒเชถเซเชฏเชฎเชพเชจ เชธเซเชฅเชฟเชคเชฟเช“ เช›เซ‡:

เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธ เชกเซ‡เชถเชฌเซ‹เชฐเซเชก เช…เชจเซ‡ เช—เชฟเชŸเชฒเซ‡เชฌ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพเช“เชจเซเช‚ เชเช•เซ€เช•เชฐเชฃ

...เช…เชจเซ‡ เช…เชจเซเชฏ เชตเชฟเช—เชคเซ‹:

เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธ เชกเซ‡เชถเชฌเซ‹เชฐเซเชก เช…เชจเซ‡ เช—เชฟเชŸเชฒเซ‡เชฌ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพเช“เชจเซเช‚ เชเช•เซ€เช•เชฐเชฃ

... เช…เชจเซ‡ เชœเชฎเชพเชตเชŸเชจเซ‡ เชฎเชพเชชเชตเชพเชจเซ€ เช•เซเชทเชฎเชคเชพ เชชเชฃ เช›เซ‡:

เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธ เชกเซ‡เชถเชฌเซ‹เชฐเซเชก เช…เชจเซ‡ เช—เชฟเชŸเชฒเซ‡เชฌ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพเช“เชจเซเช‚ เชเช•เซ€เช•เชฐเชฃ

เช† เช“เชชเชฐเซ‡เชถเชจเชจเซเช‚ เชชเชฐเชฟเชฃเชพเชฎ:

เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธ เชกเซ‡เชถเชฌเซ‹เชฐเซเชก เช…เชจเซ‡ เช—เชฟเชŸเชฒเซ‡เชฌ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพเช“เชจเซเช‚ เชเช•เซ€เช•เชฐเชฃ

เชฒเซ‡เช–เชจเซ€ เชถเชฐเซ‚เช†เชคเชฎเชพเช‚ เชชเชนเซ‡เชฒเซ‡เชฅเซ€ เชœ เช‰เชฒเซเชฒเซ‡เช–เชฟเชค เช…เชจเซเชฏ เช‰เชชเชฏเซ‹เช—เซ€ เชธเซเชตเชฟเชงเชพเช“เชฎเชพเช‚ เชฒเซ‹เช— เชœเซ‹เชตเชพเชจเซเช‚ เช›เซ‡:

เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธ เชกเซ‡เชถเชฌเซ‹เชฐเซเชก เช…เชจเซ‡ เช—เชฟเชŸเชฒเซ‡เชฌ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพเช“เชจเซเช‚ เชเช•เซ€เช•เชฐเชฃ

... เช…เชจเซ‡ เชชเชธเช‚เชฆ เช•เชฐเซ‡เชฒ เชชเซ‹เชกเชจเชพ เช•เชจเซเชŸเซ‡เชจเชฐ เช•เชจเซเชธเซ‹เชฒเชฎเชพเช‚ เชฒเซ‰เช— เช‡เชจ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡เชจเซเช‚ เช•เชพเชฐเซเชฏ:

เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธ เชกเซ‡เชถเชฌเซ‹เชฐเซเชก เช…เชจเซ‡ เช—เชฟเชŸเชฒเซ‡เชฌ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพเช“เชจเซเช‚ เชเช•เซ€เช•เชฐเชฃ

เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เชคเชฎเซ‡ เชจเซ‹เชกเซเชธ เชชเชฐเชจเซ€ เชฎเชฐเซเชฏเชพเชฆเชพ/เชตเชฟเชจเช‚เชคเซ€เช“เชจเซ‡ เชชเชฃ เชœเซ‹เชˆ เชถเช•เซ‹ เช›เซ‹:

เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธ เชกเซ‡เชถเชฌเซ‹เชฐเซเชก เช…เชจเซ‡ เช—เชฟเชŸเชฒเซ‡เชฌ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพเช“เชจเซเช‚ เชเช•เซ€เช•เชฐเชฃ

เช…เชฒเชฌเชคเซเชค, เช† เชฌเชงเซ€ เชชเซ‡เชจเชฒเชจเซ€ เช•เซเชทเชฎเชคเชพเช“ เชจเชฅเซ€, เชชเชฐเช‚เชคเซ เชนเซเช‚ เช†เชถเชพ เชฐเชพเช–เซเช‚ เช›เซเช‚ เช•เซ‡ เชคเชฎเชจเซ‡ เชธเชพเชฎเชพเชจเซเชฏ เช–เซเชฏเชพเชฒ เช†เชตเชถเซ‡.

เชเช•เซ€เช•เชฐเชฃ เช…เชจเซ‡ เชกเซ‡เชถเชฌเซ‹เชฐเซเชกเชจเชพ เช—เซ‡เชฐเชซเชพเชฏเชฆเชพ

เชตเชฐเซเชฃเชตเซ‡เชฒ เชเช•เซ€เช•เชฐเชฃเชฎเชพเช‚ เช•เซ‹เชˆ เชจเชฅเซ€ เชตเชชเชฐเชพเชถ เชจเชฟเชฏเช‚เชคเซเชฐเชฃ. เชคเซ‡เชจเซ€ เชธเชพเชฅเซ‡, เช—เชฟเชŸเชฒเซ‡เชฌเชจเซ€ เช•เซ‹เชˆเชชเชฃ เชเช•เซเชธเซ‡เชธ เชงเชฐเชพเชตเชคเชพ เชคเชฎเชพเชฎ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพเช“ เชกเซ‡เชถเชฌเซ‹เชฐเซเชกเชจเซ€ เชเช•เซเชธเซ‡เชธ เชฎเซ‡เชณเชตเซ‡ เช›เซ‡. เชคเซ‡เชฎเชจเซ€ เชชเชพเชธเซ‡ เชกเซ‡เชถเชฌเซ‹เชฐเซเชกเชฎเชพเช‚ เชœ เชธเชฎเชพเชจ เชเช•เซเชธเซ‡เชธ เช›เซ‡, เชœเซ‡ เชกเซ‡เชถเชฌเซ‹เชฐเซเชกเชจเชพ เช…เชงเชฟเช•เชพเชฐเซ‹เชจเซ‡ เช…เชจเซเชฐเซ‚เชช เช›เซ‡, เชœเซ‡ RBAC เชฎเชพเช‚ เชตเซเชฏเชพเช–เซเชฏเชพเชฏเชฟเชค เชฅเชฏเซ‡เชฒ เช›เซ‡. เชฆเซ‡เช–เซ€เชคเซ€ เชฐเซ€เชคเซ‡, เช† เชฆเชฐเซ‡เช• เชฎเชพเชŸเซ‡ เชฏเซ‹เช—เซเชฏ เชจเชฅเซ€, เชชเชฐเช‚เชคเซ เช…เชฎเชพเชฐเชพ เช•เซ‡เชธ เชฎเชพเชŸเซ‡ เชคเซ‡ เชชเซ‚เชฐเชคเซเช‚ เชนเซ‹เชตเชพเชจเซเช‚ เชฌเชนเชพเชฐ เช†เชตเซเชฏเซเช‚ เช›เซ‡.

เชกเซ‡เชถเชฌเซ‹เชฐเซเชกเชฎเชพเช‚ เชœ เชจเซ‹เช‚เชงเชชเชพเชคเซเชฐ เช—เซ‡เชฐเชซเชพเชฏเชฆเชพเช“ เชชเซˆเช•เซ€, เชนเซเช‚ เชจเซ€เชšเซ‡เชจเซ€ เชจเซ‹เช‚เชง เช•เชฐเซเช‚ เช›เซเช‚:

  • init เช•เชจเซเชŸเซ‡เชจเชฐเชจเชพ เช•เชจเซเชธเซ‹เชฒเชฎเชพเช‚ เชชเซเชฐเชตเซ‡เชถเชตเซเช‚ เช…เชถเช•เซเชฏ เช›เซ‡;
  • เชกเชฟเชชเซเชฒเซ‹เชฏเชฎเซ‡เชจเซเชŸเซเชธ เช…เชจเซ‡ เชธเซเชŸเซ‡เชŸเชซเซเชฒเชธเซ‡เชŸเซเชธเชจเซ‡ เชธเช‚เชชเชพเชฆเชฟเชค เช•เชฐเชตเซเช‚ เช…เชถเช•เซเชฏ เช›เซ‡, เชœเซ‹ เช•เซ‡ เช† เช•เซเชฒเชธเซเชŸเชฐเชฐเซ‹เชฒเชฎเชพเช‚ เชธเซเชงเชพเชฐเซ€ เชถเช•เชพเชฏ เช›เซ‡;
  • Kubernetes เชจเชพ เชจเชตเซ€เชจเชคเชฎ เชธเช‚เชธเซเช•เชฐเชฃเซ‹ เชธเชพเชฅเซ‡ เชกเซ‡เชถเชฌเซ‹เชฐเซเชกเชจเซ€ เชธเซเชธเช‚เช—เชคเชคเชพ เช…เชจเซ‡ เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸเชจเชพ เชญเชพเชตเชฟ เชชเซเชฐเชถเซเชจเซ‹ เช‰เชญเชพ เช•เชฐเซ‡ เช›เซ‡.

เช›เซ‡เชฒเซเชฒเซ€ เชธเชฎเชธเซเชฏเชพ เช–เชพเชธ เชงเซเชฏเชพเชจ เช†เชชเชตเชพเชจเซ€ เชชเชพเชคเซเชฐ เช›เซ‡.

เชกเซ‡เชถเชฌเซ‹เชฐเซเชก เชธเซเชฅเชฟเชคเชฟ เช…เชจเซ‡ เชตเชฟเช•เชฒเซเชชเซ‹

เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸเชจเชพ เชจเชตเซ€เชจเชคเชฎ เชธเช‚เชธเซเช•เชฐเชฃเชฎเชพเช‚ เชฐเชœเซ‚ เช•เชฐเชพเชฏเซ‡เชฒ เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธ เชชเซเชฐเช•เชพเชถเชจเซ‹ เชธเชพเชฅเซ‡ เชกเซ‡เชถเชฌเซ‹เชฐเซเชก เชธเซเชธเช‚เช—เชคเชคเชพ เช•เซ‹เชทเซเชŸเช• (v1.10.1), เช–เซ‚เชฌ เช–เซเชถ เชจเชฅเซ€:

เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธ เชกเซ‡เชถเชฌเซ‹เชฐเซเชก เช…เชจเซ‡ เช—เชฟเชŸเชฒเซ‡เชฌ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพเช“เชจเซเช‚ เชเช•เซ€เช•เชฐเชฃ

เช† เชนเซ‹เชตเชพ เช›เชคเชพเช‚, เชคเซเชฏเชพเช‚ เช›เซ‡ (เชชเชนเซ‡เชฒเซ‡เชฅเซ€ เชœ เชœเชพเชจเซเชฏเซเช†เชฐเซ€เชฎเชพเช‚ เช…เชชเชจเชพเชตเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซเช‚ เช›เซ‡) PR #3476, เชœเซ‡ K8s 1.13 เชฎเชพเชŸเซ‡ เชธเชฎเชฐเซเชฅเชจเชจเซ€ เชœเชพเชนเซ‡เชฐเชพเชค เช•เชฐเซ‡ เช›เซ‡. เชตเชงเซเชฎเชพเช‚, เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸ เชธเชฎเชธเซเชฏเชพเช“ เชตเชšเซเชšเซ‡ เชคเชฎเซ‡ K8s 1.14 เชฎเชพเช‚ เชชเซ‡เชจเชฒ เชธเชพเชฅเซ‡ เช•เชพเชฎ เช•เชฐเชคเชพ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพเช“เชจเชพ เชธเช‚เชฆเชฐเซเชญเซ‹ เชถเซ‹เชงเซ€ เชถเช•เซ‹ เช›เซ‹. เช›เซ‡เชตเชŸเซ‡, เชชเซเชฐเชคเชฟเชฌเชฆเซเชง เช•เชฐเซ‡ เช›เซ‡ เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸเชจเชพ เช•เซ‹เชก เชฌเซ‡เชเชฎเชพเช‚ เชฐเซ‹เช•เชถเซ‹ เชจเชนเซ€เช‚. เชคเซ‡เชฅเซ€ (เช“เช›เชพเชฎเชพเช‚ เช“เช›เซเช‚!) เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸเชจเซ€ เชตเชพเชธเซเชคเชตเชฟเช• เชธเซเชฅเชฟเชคเชฟ เชเชŸเชฒเซ€ เช–เชฐเชพเชฌ เชจเชฅเซ€ เชœเซ‡เชŸเชฒเซ€ เชคเซ‡ เชธเชคเซเชคเชพเชตเชพเชฐ เชธเซเชธเช‚เช—เชคเชคเชพ เช•เซ‹เชทเซเชŸเช•เชฎเชพเช‚เชฅเซ€ เชชเซเชฐเชฅเชฎ เชฒเชพเช—เซ‡ เช›เซ‡.

เช›เซ‡เชฒเซเชฒเซ‡, เชกเซ‡เชถเชฌเซ‹เชฐเซเชกเชจเชพ เชตเชฟเช•เชฒเซเชชเซ‹ เช›เซ‡. เชคเซ‡เชฎเชจเซ€ เชตเชšเซเชšเซ‡:

  1. K8Dash โ€” เชเช• เชฏเซเชตเชพเชจ เชˆเชจเซเชŸเชฐเชซเซ‡เชธ (เชชเซเชฐเชฅเชฎ เช•เชฎเชฟเชŸเซ‡เชก เชคเชพเชฐเซ€เช– เช† เชตเชฐเซเชทเชจเชพ เชฎเชพเชฐเซเชšเชฎเชพเช‚ เช›เซ‡), เชœเซ‡ เชชเชนเซ‡เชฒเซ‡เชฅเซ€ เชœ เชธเชพเชฐเซ€ เชธเซเชตเชฟเชงเชพเช“ เชชเซเชฐเชฆเชพเชจ เช•เชฐเซ‡ เช›เซ‡, เชœเซ‡เชฎ เช•เซ‡ เช•เซเชฒเชธเซเชŸเชฐเชจเซ€ เชตเชฐเซเชคเชฎเชพเชจ เชธเซเชฅเชฟเชคเชฟเชจเซเช‚ เชตเชฟเชเซเชฏเซเช…เชฒ เชชเซเชฐเชคเชฟเชจเชฟเชงเชฟเชคเซเชต เช…เชจเซ‡ เชคเซ‡เชจเชพ เช‘เชฌเซเชœเซ‡เช•เซเชŸเซเชธเชจเซเช‚ เชธเช‚เชšเชพเชฒเชจ. "เชฐเซ€เช…เชฒ-เชŸเชพเช‡เชฎ เช‡เชจเซเชŸเชฐเชซเซ‡เชธ" เชคเชฐเซ€เช•เซ‡ เชธเซเชฅเชฟเชค เช›เซ‡, เช•เชพเชฐเชฃ เช•เซ‡ เชคเชฎเชจเซ‡ เชฌเซเชฐเชพเช‰เชเชฐเชฎเชพเช‚ เชชเซƒเชทเซเช เชจเซ‡ เชคเชพเชœเซเช‚ เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เชตเชฟเชจเชพ เชชเซเชฐเชฆเชฐเซเชถเชฟเชค เชกเซ‡เชŸเชพเชจเซ‡ เช†เชชเชฎเซ‡เชณเซ‡ เช…เชชเชกเซ‡เชŸ เช•เชฐเซ‡ เช›เซ‡.
  2. เช“เชชเชจเชถเชฟเชซเซเชŸ เช•เชจเซเชธเซ‹เชฒ - Red Hat OpenShift เชจเซเช‚ เชตเซ‡เชฌ เชˆเชจเซเชŸเชฐเชซเซ‡เชธ, เชœเซ‡ เชœเซ‹ เช•เซ‡, เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸเชจเชพ เช…เชจเซเชฏ เชตเชฟเช•เชพเชธเชจเซ‡ เชคเชฎเชพเชฐเชพ เช•เซเชฒเชธเซเชŸเชฐเชฎเชพเช‚ เชฒเชพเชตเชถเซ‡, เชœเซ‡ เชฆเชฐเซ‡เช• เชฎเชพเชŸเซ‡ เชฏเซ‹เช—เซเชฏ เชจเชฅเซ€.
  3. เช•เซเชฌเชฐเชจเซ‡เชŸเชฐ เชเช• เชฐเชธเชชเซเชฐเชฆ เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸ เช›เซ‡, เชœเซ‡ เชคเชฎเชพเชฎ เช•เซเชฒเชธเซเชŸเชฐ เช‘เชฌเซเชœเซ‡เช•เซเชŸเซเชธเชจเซ‡ เชœเซ‹เชตเชพเชจเซ€ เช•เซเชทเชฎเชคเชพ เชธเชพเชฅเซ‡ เชจเซ€เชšเชฒเชพ-เชธเซเชคเชฐเชจเชพ (เชกเซ…เชถเชฌเซ‹เชฐเซเชก เช•เชฐเชคเชพเช‚) เช‡เชจเซเชŸเชฐเชซเซ‡เชธ เชคเชฐเซ€เช•เซ‡ เชฌเชจเชพเชตเซ‡เชฒ เช›เซ‡. เชœเซ‹ เช•เซ‡, เชเชตเซเช‚ เชฒเชพเช—เซ‡ เช›เซ‡ เช•เซ‡ เชคเซ‡เชจเซ‹ เชตเชฟเช•เชพเชธ เช…เชŸเช•เซ€ เช—เชฏเซ‹ เช›เซ‡.
  4. เชชเซ‹เชฒเชพเชฐเชฟเชธ - เชฌเซ€เชœเชพ เชฆเชฟเชตเชธเซ‡ เชœ เชœเชพเชนเซ‡เชฐเชพเชค เช•เชฐเซ€ เชเช• เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸ เช•เซ‡ เชœเซ‡ เชชเซ‡เชจเชฒเชจเชพ เช•เชพเชฐเซเชฏเซ‹เชจเซ‡ เชœเซ‹เชกเซ‡ เช›เซ‡ (เช•เซเชฒเชธเซเชŸเชฐเชจเซ€ เชตเชฐเซเชคเชฎเชพเชจ เชธเซเชฅเชฟเชคเชฟ เชฌเชคเชพเชตเซ‡ เช›เซ‡, เชชเชฐเช‚เชคเซ เชคเซ‡เชจเชพ เช‘เชฌเซเชœเซ‡เช•เซเชŸเซเชธเชจเซเช‚ เชธเช‚เชšเชพเชฒเชจ เช•เชฐเชคเซเช‚ เชจเชฅเซ€) เช…เชจเซ‡ เชธเซเชตเชšเชพเชฒเชฟเชค "เชถเซเชฐเซ‡เชทเซเช  เชชเซเชฐเซ‡เช•เซเชŸเชฟเชธเชจเซ€ เชฎเชพเชจเซเชฏเชคเชพ" (เชคเซ‡เชฎเชพเช‚ เชšเชพเชฒเซ€ เชฐเชนเซ‡เชฒเชพ เชกเชฟเชชเซเชฒเซ‹เชฏเชฎเซ‡เชจเซเชŸเซเชธเชจเซ€ เช—เซ‹เช เชตเชฃเซ€เชจเซ€ เชถเซเชฆเซเชงเชคเชพ เชฎเชพเชŸเซ‡ เช•เซเชฒเชธเซเชŸเชฐ เชคเชชเชพเชธเซ‡ เช›เซ‡).

เชคเชพเชฐเชฃเซ‹เชจเซ‡ เชฌเชฆเชฒเซ‡

เชกเซ‡เชถเชฌเซ‹เชฐเซเชก เช…เชฎเซ‡ เชธเซ‡เชตเชพ เช†เชชเซ€เช เช›เซ€เช เชคเซ‡ เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธ เช•เซเชฒเชธเซเชŸเชฐเซ‹ เชฎเชพเชŸเซ‡เชจเซเช‚ เชชเซเชฐเชฎเชพเชฃเชญเซ‚เชค เชธเชพเชงเชจ เช›เซ‡. GitLab เชธเชพเชฅเซ‡ เชคเซ‡เชจเซเช‚ เชธเช‚เช•เชฒเชจ เชชเชฃ เช…เชฎเชพเชฐเชพ เชกเชฟเชซเซ‹เชฒเซเชŸ เช‡เชจเซเชธเซเชŸเซ‹เชฒเซ‡เชถเชจเชจเซ‹ เชเช• เชญเชพเช— เชฌเชจเซ€ เช—เชฏเซเช‚ เช›เซ‡, เช•เชพเชฐเชฃ เช•เซ‡ เช˜เชฃเชพ เชกเซ‡เชตเชฒเชชเชฐเซเชธ เช† เชชเซ‡เชจเชฒ เชธเชพเชฅเซ‡ เชคเซ‡เชฎเชจเซ€ เชชเชพเชธเซ‡ เชฐเชนเซ‡เชฒเซ€ เช•เซเชทเชฎเชคเชพเช“ เชตเชฟเชถเซ‡ เช‰เชคเซเชธเชพเชนเชฟเชค เช›เซ‡.

Kubernetes เชกเซ‡เชถเชฌเซ‹เชฐเซเชกเชฎเชพเช‚ เชธเชฎเชฏเชพเช‚เชคเชฐเซ‡ เช“เชชเชจ เชธเซ‹เชฐเซเชธ เชธเชฎเซเชฆเชพเชฏเชจเชพ เชตเชฟเช•เชฒเซเชชเซ‹ เชนเซ‹เชฏ เช›เซ‡ (เช…เชจเซ‡ เช…เชฎเซ‡ เชคเซ‡เชฎเชจเซ‡ เชงเซเชฏเชพเชจเชฎเชพเช‚ เชฒเชˆเชจเซ‡ เช–เซเชถ เช›เซ€เช), เชชเชฐเช‚เชคเซ เช† เชคเชฌเช•เซเช•เซ‡ เช…เชฎเซ‡ เช† เช‰เช•เซ‡เชฒ เชธเชพเชฅเซ‡ เชœ เชฐเชนเซ€เช เช›เซ€เช.

PS

เช…เชฎเชพเชฐเชพ เชฌเซเชฒเซ‹เช— เชชเชฐ เชชเชฃ เชตเชพเช‚เชšเซ‹:

เชธเซ‹เชฐเซเชธ: www.habr.com

เชเช• เชŸเชฟเชชเซเชชเชฃเซ€ เช‰เชฎเซ‡เชฐเซ‹