เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ เจกเฉˆเจธเจผเจฌเฉ‹เจฐเจก เจ…เจคเฉ‡ เจ—เจฟเฉฑเจŸเจฒเฉˆเจฌ เจ‰เจชเจญเฉ‹เจ—เจคเจพเจตเจพเจ‚ เจฆเจพ เจเจ•เฉ€เจ•เจฐเจฃ

เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ เจกเฉˆเจธเจผเจฌเฉ‹เจฐเจก เจ…เจคเฉ‡ เจ—เจฟเฉฑเจŸเจฒเฉˆเจฌ เจ‰เจชเจญเฉ‹เจ—เจคเจพเจตเจพเจ‚ เจฆเจพ เจเจ•เฉ€เจ•เจฐเจฃ

เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ เจกเฉˆเจธเจผเจฌเฉ‹เจฐเจก เจคเฉเจนเจพเจกเฉ‡ เจšเฉฑเจฒ เจฐเจนเฉ‡ เจ•เจฒเฉฑเจธเจŸเจฐ เจฌเจพเจฐเฉ‡ เจ…เฉฑเจช-เจŸเฉ‚-เจกเฉ‡เจŸ เจœเจพเจฃเจ•เจพเจฐเฉ€ เจชเฉเจฐเจพเจชเจค เจ•เจฐเจจ เจ…เจคเฉ‡ เจ‡เจธ เจจเฉ‚เฉฐ เจ˜เฉฑเจŸเฉ‹-เจ˜เฉฑเจŸ เจ•เฉ‹เจธเจผเจฟเจธเจผเจพเจ‚ เจจเจพเจฒ เจชเฉเจฐเจฌเฉฐเจงเจฟเจค เจ•เจฐเจจ เจฒเจˆ เจตเจฐเจคเฉ‹เจ‚ เจตเจฟเฉฑเจš เจ†เจธเจพเจจ เจŸเฉ‚เจฒ เจนเฉˆเฅค เจคเฉเจธเฉ€เจ‚ เจ‡เจธเจฆเฉ€ เจนเฉ‹เจฐ เจตเฉ€ เจชเฉเจฐเจธเจผเฉฐเจธเจพ เจ•เจฐเจจเจพ เจธเจผเฉเจฐเฉ‚ เจ•เจฐ เจฆเจฟเฉฐเจฆเฉ‡ เจนเฉ‹ เจœเจฆเฉ‹เจ‚ เจ‡เจนเจจเจพเจ‚ เจธเจฎเจฐเฉฑเจฅเจพเจตเจพเจ‚ เจคเฉฑเจ• เจชเจนเฉเฉฐเจš เจฆเฉ€ เจฒเฉ‹เฉœ เจจเจพ เจธเจฟเจฐเจซเจผ เจชเฉเจฐเจธเจผเจพเจธเจ•เจพเจ‚/DevOps เจ‡เฉฐเจœเฉ€เจจเฉ€เจ…เจฐเจพเจ‚ เจฆเฉเจ†เจฐเจพ เจนเฉเฉฐเจฆเฉ€ เจนเฉˆ, เจธเจ—เฉ‹เจ‚ เจ‰เจนเจจเจพเจ‚ เจฆเฉเจ†เจฐเจพ เจตเฉ€ เจœเฉ‹ เจ•เฉฐเจธเฉ‹เจฒ เจฆเฉ‡ เจ˜เฉฑเจŸ เจ†เจฆเฉ€ เจนเจจ เจ…เจคเฉ‡/เจœเจพเจ‚ kubectl เจจเจพเจฒ เจ—เฉฑเจฒเจฌเจพเจค เจ•เจฐเจจ เจฆเฉ€เจ†เจ‚ เจธเจพเจฐเฉ€เจ†เจ‚ เจชเฉ‡เจšเฉ€เจฆเจ—เฉ€เจ†เจ‚ เจจเจพเจฒ เจจเจœเจฟเฉฑเจ เจฃ เจฆเจพ เจ‡เจฐเจพเจฆเจพ เจจเจนเฉ€เจ‚ เจฐเฉฑเจ–เจฆเฉ‡ เจนเจจเฅค เจนเฉ‹เจฐ เจ‰เจชเจฏเฉ‹เจ—เจคเจพเจตเจพเจ‚เฅค เจ‡เจน เจธเจพเจกเฉ‡ เจจเจพเจฒ เจนเฉ‹เจ‡เจ†: เจกเจฟเจตเฉˆเจฒเจชเจฐ เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ เจตเฉˆเฉฑเจฌ เจ‡เฉฐเจŸเจฐเจซเฉ‡เจธ เจคเฉฑเจ• เจคเฉเจฐเฉฐเจค เจชเจนเฉเฉฐเจš เจšเจพเจนเฉเฉฐเจฆเฉ‡ เจธเจจ, เจ…เจคเฉ‡ เจ•เจฟเจ‰เจ‚เจ•เจฟ เจ…เจธเฉ€เจ‚ GitLab เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚, เจนเฉฑเจฒ เจ•เฉเจฆเจฐเจคเฉ€ เจคเฉŒเจฐ 'เจคเฉ‡ เจ†เจ‡เจ†เฅค

เจ‡เจน เจ•เจฟเจ‰เจ‚ เจนเฉˆ?

เจกเจพเจ‡เจฐเฉˆเจ•เจŸ เจกเจฟเจตเฉˆเจฒเจชเจฐ เจกเฉ€เจฌเฉฑเจ—เจฟเฉฐเจ— เจ•เจพเจฐเจœเจพเจ‚ เจฒเจˆ K8s เจกเฉˆเจธเจผเจฌเฉ‹เจฐเจก เจตเจฐเจ—เฉ‡ เจŸเฉ‚เจฒ เจตเจฟเฉฑเจš เจฆเจฟเจฒเจšเจธเจชเฉ€ เจฒเฉˆ เจธเจ•เจฆเฉ‡ เจนเจจเฅค เจ•เจˆ เจตเจพเจฐ เจคเฉเจธเฉ€เจ‚ เจฒเฉŒเจ—เจธ เจ…เจคเฉ‡ เจธเจฐเฉ‹เจคเจพเจ‚ เจจเฉ‚เฉฐ เจฆเฉ‡เจ–เจฃเจพ เจšเจพเจนเฉเฉฐเจฆเฉ‡ เจนเฉ‹, เจ…เจคเฉ‡ เจ•เจˆ เจตเจพเจฐ เจชเฉŒเจกเจธ เจจเฉ‚เฉฐ เจฎเจพเจฐเจจเจพ เจšเจพเจนเฉเฉฐเจฆเฉ‡ เจนเฉ‹, เจกเจฟเจชเจฒเจพเจ‡เจฎเฉˆเจ‚เจŸเจธ/เจธเจŸเฉ‡เจŸเจซเฉเฉฑเจฒเจธเฉˆเจŸเจธ เจจเฉ‚เฉฐ เจธเจ•เฉ‡เจฒ เจ•เจฐเจจเจพ เจšเจพเจนเฉเฉฐเจฆเฉ‡ เจนเฉ‹, เจ…เจคเฉ‡ เจ•เฉฐเจŸเฉ‡เจจเจฐ เจ•เฉฐเจธเฉ‹เจฒ 'เจคเฉ‡ เจตเฉ€ เจœเจพเจฃเจพ เจšเจพเจนเฉเฉฐเจฆเฉ‡ เจนเฉ‹ (เจ‡เฉฑเจฅเฉ‡ เจฌเฉ‡เจจเจคเฉ€เจ†เจ‚ เจตเฉ€ เจนเจจ, เจนเจพเจฒเจพเจ‚เจ•เจฟ, เจ‡เฉฑเจ• เจนเฉ‹เจฐ เจคเจฐเฉ€เจ•เจพ เจนเฉˆ - เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ, เจฆเฉเจ†เจฐเจพ 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 เจนเฉˆเจธเจผ เจชเฉเจฐเจฆเจพเจจ เจ•เจฐเฉ‡เจ—เจพ:

เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ เจกเฉˆเจธเจผเจฌเฉ‹เจฐเจก เจ…เจคเฉ‡ เจ—เจฟเฉฑเจŸเจฒเฉˆเจฌ เจ‰เจชเจญเฉ‹เจ—เจคเจพเจตเจพเจ‚ เจฆเจพ เจเจ•เฉ€เจ•เจฐเจฃ

เจ‰เจน เจ‰เจน เจนเจจ เจœเฉ‹ เจธเจ•เฉเจฐเจฟเจชเจŸ เจฒเจˆ เจ†เจฐเจ—เฉ‚เจฎเฉˆเจ‚เจŸ เจตเจœเฉ‹เจ‚ เจตเจฐเจคเฉ‡ เจœเจพเจ‚เจฆเฉ‡ เจนเจจเฅค เจจเจคเฉ€เจœเฉ‡ เจตเจœเฉ‹เจ‚, เจ‡เฉฐเจธเจŸเจพเจฒเฉ‡เจธเจผเจจ เจ‡เจธ เจคเจฐเฉเจนเจพเจ‚ เจฆเจฟเจ–เจพเจˆ เจฆเจฟเฉฐเจฆเฉ€ เจนเฉˆ:

$ ./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 เจ‰เจธ เจ•เฉ‚เจ•เฉ€ เจจเฉ‚เฉฐ เจฎเจฟเจŸเจพ เจฆเจฟเฉฐเจฆเจพ เจนเฉˆ เจœเฉ‹ เจธเจนเฉเฉฐ เจ–เฉเจฆ เจธเจพเจจเฉ‚เฉฐ เจชเฉเจฐเจฆเจพเจจ เจ•เจฐเจฆเฉ€ เจนเฉˆ...

เจธเจฎเฉฑเจธเจฟเจ† เจฆเจพ เจนเฉฑเจฒ เจ‡เฉฑเจ• เจชเฉˆเจš เจฆเฉ‡ เจจเจพเจฒ เจคเฉเจนเจพเจกเฉ€ เจ†เจชเจฃเฉ€ เจธเจนเฉเฉฐ เจฆเฉ€ เจคเจธเจตเฉ€เจฐ เจฌเจฃเจพ เจ•เฉ‡ เจ•เฉ€เจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆเฅค

เจชเฉˆเจš เจธเจนเฉเฉฐ เจšเฉเฉฑเจ•เฉ‹ เจ…เจคเฉ‡ เจฎเฉเฉœ เจธเจฅเจพเจชเจฟเจค เจ•เจฐเฉ‹

เจ…เจœเจฟเจนเจพ เจ•เจฐเจจ เจฒเจˆ, เจ…เจธเฉ€เจ‚ เจนเฉ‡เจ เจพเจ‚ เจฆเจฟเฉฑเจคเฉ€ เจกเฉŒเจ•เจฐเจซเจพเจˆเจฒ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจพเจ‚เจ—เฉ‡:

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

เจงเจฟเจ†เจจ เจฆเฉ‡เจฃ เจตเจพเจฒเจพ เจชเจพเจ เจ• เจ‡เจน เจฆเฉ‡เจ–เฉ‡เจ—เจพ เจ•เจฟ เจ‰เจชเจฐเฉ‹เจ•เจค เจฒเฉฐเจฎเฉ€ เจธเจคเจฐ เจธเฉฐเจฐเจšเจจเจพ เจคเฉ‹เจ‚ เจฌเฉ‡เจธ 64 เจนเฉˆ:

{"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 เจ•เฉฐเจŸเฉ‡เจจเจฐ เจฆเฉ‡ เจ•เฉฐเจธเฉ‹เจฒ เจตเจฟเฉฑเจš เจ†เจ‰เจฃเจพ เจ…เจธเฉฐเจญเจต เจนเฉˆ;
  • เจกเจฟเจชเจฒเจพเจ‡เจฎเฉˆเจ‚เจŸเจธ เจ…เจคเฉ‡ เจธเจŸเฉ‡เจŸเจซเฉเจฒเจธเฉˆเฉฑเจŸเจธ เจจเฉ‚เฉฐ เจธเฉ‹เจงเจฃเจพ เจ…เจธเฉฐเจญเจต เจนเฉˆ, เจนเจพเจฒเจพเจ‚เจ•เจฟ เจ‡เจน เจ•เจฒเฉฑเจธเจŸเจฐเจฐเฉ‹เจฒ เจตเจฟเฉฑเจš เจซเจฟเจ•เจธ เจ•เฉ€เจคเจพ เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆ;
  • เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ เจฆเฉ‡ เจจเจตเฉ€เจจเจคเจฎ เจธเฉฐเจธเจ•เจฐเจฃเจพเจ‚ เจฆเฉ‡ เจจเจพเจฒ เจกเฉˆเจธเจผเจฌเฉ‹เจฐเจก เจฆเฉ€ เจ…เจจเฉเจ•เฉ‚เจฒเจคเจพ เจ…เจคเฉ‡ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจฆเฉ‡ เจญเจตเจฟเฉฑเจ– เจธเจตเจพเจฒ เจ–เฉœเฉ‡ เจ•เจฐเจฆเฉ‡ เจนเจจเฅค

เจ†เจ–เจฐเฉ€ เจธเจฎเฉฑเจธเจฟเจ† เจตเจฟเจธเจผเฉ‡เจธเจผ เจงเจฟเจ†เจจ เจฆเฉ€ เจนเฉฑเจ•เจฆเจพเจฐ เจนเฉˆ.

เจกเฉˆเจธเจผเจฌเฉ‹เจฐเจก เจธเจฅเจฟเจคเฉ€ เจ…เจคเฉ‡ เจตเจฟเจ•เจฒเจช

Kubernetes เจฐเฉ€เจฒเฉ€เจœเจผเจพเจ‚ เจฆเฉ‡ เจจเจพเจฒ เจกเฉˆเจธเจผเจฌเฉ‹เจฐเจก เจ…เจจเฉเจ•เฉ‚เจฒเจคเจพ เจธเจพเจฐเจฃเฉ€, เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจฆเฉ‡ เจจเจตเฉ€เจจเจคเจฎ เจธเฉฐเจธเจ•เจฐเจฃ เจตเจฟเฉฑเจš เจชเฉ‡เจธเจผ เจ•เฉ€เจคเฉ€ เจ—เจˆ (v1.10.1), เจฌเจนเฉเจค เจ–เฉเจธเจผ เจจเจนเฉ€เจ‚:

เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ เจกเฉˆเจธเจผเจฌเฉ‹เจฐเจก เจ…เจคเฉ‡ เจ—เจฟเฉฑเจŸเจฒเฉˆเจฌ เจ‰เจชเจญเฉ‹เจ—เจคเจพเจตเจพเจ‚ เจฆเจพ เจเจ•เฉ€เจ•เจฐเจฃ

เจ‡เจธ เจฆเฉ‡ เจฌเจพเจตเจœเฉ‚เจฆ, เจ‰เฉฑเจฅเฉ‡ เจนเฉˆ (เจชเจนเจฟเจฒเจพเจ‚ เจนเฉ€ เจœเจจเจตเจฐเฉ€ เจตเจฟเฉฑเจš เจ…เจชเจฃเจพเจ‡เจ† เจ—เจฟเจ†) เจชเฉ€เจ†เจฐ #3476, เจœเฉ‹ K8s 1.13 เจฒเจˆ เจธเจฎเจฐเจฅเจจ เจฆเจพ เจเจฒเจพเจจ เจ•เจฐเจฆเจพ เจนเฉˆเฅค เจ‡เจธ เจคเฉ‹เจ‚ เจ‡เจฒเจพเจตเจพ, เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจฎเฉเฉฑเจฆเจฟเจ†เจ‚ เจตเจฟเฉฑเจš เจคเฉเจธเฉ€เจ‚ K8s 1.14 เจตเจฟเฉฑเจš เจชเฉˆเจจเจฒ เจจเจพเจฒ เจ•เฉฐเจฎ เจ•เจฐเจจ เจตเจพเจฒเฉ‡ เจ‰เจชเจญเฉ‹เจ—เจคเจพเจตเจพเจ‚ เจฆเฉ‡ เจนเจตเจพเจฒเฉ‡ เจฒเฉฑเจญ เจธเจ•เจฆเฉ‡ เจนเฉ‹เฅค เจ…เฉฐเจค เจตเจฟเฉฑเจš, เจตเจšเจจเจฌเฉฑเจง เจ•เจฐเจฆเจพ เจนเฉˆ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจฆเฉ‡ เจ•เฉ‹เจก เจฌเฉ‡เจธ เจตเจฟเฉฑเจš เจจเจพ เจฐเฉเจ•เฉ‹เฅค เจ‡เจธ เจฒเจˆ (เจ˜เฉฑเจŸเฉ‹ เจ˜เฉฑเจŸ!) เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจฆเฉ€ เจ…เจธเจฒ เจธเจฅเจฟเจคเฉ€ เจ‡เฉฐเจจเฉ€ เจฎเจพเฉœเฉ€ เจจเจนเฉ€เจ‚ เจนเฉˆ เจœเจฟเฉฐเจจเฉ€ เจ‡เจน เจชเจนเจฟเจฒเจพเจ‚ เจ…เจงเจฟเจ•เจพเจฐเจค เจ…เจจเฉเจ•เฉ‚เจฒเจคเจพ เจธเจพเจฐเจฃเฉ€ เจคเฉ‹เจ‚ เจœเจพเจชเจฆเฉ€ เจนเฉˆ.

เจ…เฉฐเจค เจตเจฟเฉฑเจš, เจกเฉˆเจธเจผเจฌเฉ‹เจฐเจก เจฆเฉ‡ เจตเจฟเจ•เจฒเจช เจนเจจ. เจ‰เจจเฉเจนเจพเจ‚ เจฆเฉ‡ เจตเจฟเฉฑเจš:

  1. K8Dash โ€” เจ‡เฉฑเจ• เจจเฉŒเจœเจตเจพเจจ เจ‡เฉฐเจŸเจฐเจซเฉ‡เจธ (เจชเจนเจฟเจฒเจพ เจ•เจฎเจฟเจŸ เจ‡เจธ เจธเจพเจฒ เจฆเฉ‡ เจฎเจพเจฐเจš เจคเฉฑเจ• เจนเฉˆ), เจœเฉ‹ เจชเจนเจฟเจฒเจพเจ‚ เจนเฉ€ เจšเฉฐเจ—เฉ€เจ†เจ‚ เจตเจฟเจธเจผเฉ‡เจธเจผเจคเจพเจตเจพเจ‚ เจฆเฉ€ เจชเฉ‡เจธเจผเจ•เจธเจผ เจ•เจฐเจฆเจพ เจนเฉˆ, เจœเจฟเจตเฉ‡เจ‚ เจ•เจฟ เจ•เจฒเฉฑเจธเจŸเจฐ เจฆเฉ€ เจฎเฉŒเจœเฉ‚เจฆเจพ เจธเจฅเจฟเจคเฉ€ เจ…เจคเฉ‡ เจ‡เจธเจฆเฉ‡ เจ†เจฌเจœเฉˆเจ•เจŸ เจฆเฉ‡ เจชเฉเจฐเจฌเฉฐเจงเจจ เจฆเฉ€ เจตเจฟเจœเจผเฉ‚เจ…เจฒ เจชเฉเจฐเจคเฉ€เจจเจฟเจงเจคเจพเฅค เจ‡เฉฑเจ• "เจฐเฉ€เจ…เจฒ-เจŸเจพเจˆเจฎ เจ‡เฉฐเจŸเจฐเจซเฉ‡เจธ" เจฆเฉ‡ เจคเฉŒเจฐ เจคเฉ‡ เจฐเฉฑเจ–เจฟเจ† เจ—เจฟเจ† เจนเฉˆ, เจ•เจฟเจ‰เจ‚เจ•เจฟ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจฌเฉเจฐเจพเจŠเจœเจผเจฐ เจตเจฟเฉฑเจš เจชเฉฐเจจเฉ‡ เจจเฉ‚เฉฐ เจคเจพเจœเจผเจพ เจ•เจฐเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจคเฉ‹เจ‚ เจฌเจฟเจจเจพเจ‚ เจชเฉเจฐเจฆเจฐเจธเจผเจฟเจค เจกเฉ‡เจŸเจพ เจจเฉ‚เฉฐ เจ†เจชเจฃเฉ‡ เจ†เจช เจ…เฉฑเจชเจกเฉ‡เจŸ เจ•เจฐเจฆเจพ เจนเฉˆเฅค
  2. OpenShift เจ•เฉฐเจธเฉ‹เจฒ - Red Hat OpenShift เจคเฉ‹เจ‚ เจ‡เฉฑเจ• เจตเฉˆเฉฑเจฌ เจ‡เฉฐเจŸเจฐเจซเฉ‡เจธ, เจœเฉ‹ เจ•เจฟ, เจชเจฐ, เจคเฉเจนเจพเจกเฉ‡ เจ•เจฒเฉฑเจธเจŸเจฐ เจตเจฟเฉฑเจš เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจฆเฉ‡ เจนเฉ‹เจฐ เจตเจฟเจ•เจพเจธ เจฒเจฟเจ†เจเจ—เจพ, เจœเฉ‹ เจ•เจฟ เจนเจฐ เจ•เจฟเจธเฉ‡ เจฒเจˆ เจขเฉเจ•เจตเจพเจ‚ เจจเจนเฉ€เจ‚ เจนเฉˆเฅค
  3. เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจฐ เจ‡เฉฑเจ• เจฆเจฟเจฒเจšเจธเจช เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจนเฉˆ, เจœเฉ‹ เจ•เจฟ เจธเจพเจฐเฉ€เจ†เจ‚ เจ•เจฒเฉฑเจธเจŸเจฐ เจ†เจฌเจœเฉˆเจ•เจŸเจพเจ‚ เจจเฉ‚เฉฐ เจฆเฉ‡เจ–เจฃ เจฆเฉ€ เจฏเฉ‹เจ—เจคเจพ เจฆเฉ‡ เจจเจพเจฒ เจนเฉ‡เจ เจฒเฉ‡-เจชเฉฑเจงเจฐ (เจกเฉˆเจธเจผเจฌเฉ‹เจฐเจก เจคเฉ‹เจ‚ เจตเฉฑเจง) เจ‡เฉฐเจŸเจฐเจซเฉ‡เจธ เจตเจœเฉ‹เจ‚ เจฌเจฃเจพเจ‡เจ† เจ—เจฟเจ† เจนเฉˆเฅค เจนเจพเจฒเจพเจ‚เจ•เจฟ, เจ…เจœเจฟเจนเจพ เจฒเจ—เจฆเจพ เจนเฉˆ เจ•เจฟ เจ‡เจธเจฆเจพ เจตเจฟเจ•เจพเจธ เจฐเฉเจ• เจ—เจฟเจ† เจนเฉˆ.
  4. เจชเฉ‹เจฒเจฐเจฟเจธ - เจฆเฉ‚เจœเฉ‡ เจฆเจฟเจจ เจนเฉ€ เจฆเจพ เจเจฒเจพเจจ เจ•เฉ€เจคเจพ เจ‡เฉฑเจ• เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจœเฉ‹ เจ‡เฉฑเจ• เจชเฉˆเจจเจฒ เจฆเฉ‡ เจซเฉฐเจ•เจธเจผเจจเจพเจ‚ เจจเฉ‚เฉฐ เจœเฉ‹เฉœเจฆเจพ เจนเฉˆ (เจ•เจฒเฉฑเจธเจŸเจฐ เจฆเฉ€ เจฎเฉŒเจœเฉ‚เจฆเจพ เจธเจฅเจฟเจคเฉ€ เจจเฉ‚เฉฐ เจฆเจฟเจ–เจพเจ‰เจ‚เจฆเจพ เจนเฉˆ, เจชเจฐ เจ‡เจธเจฆเฉ‡ เจ†เจฌเจœเฉˆเจ•เจŸ เจฆเจพ เจชเฉเจฐเจฌเฉฐเจงเจจ เจจเจนเฉ€เจ‚ เจ•เจฐเจฆเจพ เจนเฉˆ) เจ…เจคเฉ‡ เจ†เจŸเฉ‹เจฎเฉˆเจŸเจฟเจ• "เจตเจงเฉ€เจ† เจ…เจญเจฟเจ†เจธเจพเจ‚ เจฆเฉ€ เจชเฉเจฐเจฎเจพเจฃเจฟเจ•เจคเจพ" (เจ‡เจธ เจตเจฟเฉฑเจš เจšเฉฑเจฒ เจฐเจนเฉ€เจ†เจ‚ เจคเฉˆเจจเจพเจคเฉ€เจ†เจ‚ เจฆเฉ€เจ†เจ‚ เจธเฉฐเจฐเจšเจจเจพเจตเจพเจ‚ เจฆเฉ€ เจธเจผเฉเฉฑเจงเจคเจพ เจฒเจˆ เจ•เจฒเฉฑเจธเจŸเจฐ เจฆเฉ€ เจœเจพเจ‚เจš เจ•เจฐเจฆเจพ เจนเฉˆ)เฅค

เจธเจฟเฉฑเจŸเฉ‡ เจฆเฉ€ เจฌเจœเจพเจ

เจกเฉˆเจธเจผเจฌเฉ‹เจฐเจก เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ เจ•เจฒเฉฑเจธเจŸเจฐเจพเจ‚ เจฒเจˆ เจ‡เฉฑเจ• เจฎเจฟเจ†เจฐเฉ€ เจŸเฉ‚เจฒ เจนเฉˆ เจœเฉ‹ เจ…เจธเฉ€เจ‚ เจธเฉ‡เจตเจพ เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚เฅค GitLab เจฆเฉ‡ เจจเจพเจฒ เจ‡เจธ เจฆเจพ เจเจ•เฉ€เจ•เจฐเจฃ เจตเฉ€ เจธเจพเจกเฉ€ เจกเจฟเจซเฉŒเจฒเจŸ เจธเจฅเจพเจชเจจเจพ เจฆเจพ เจนเจฟเฉฑเจธเจพ เจฌเจฃ เจ—เจฟเจ† เจนเฉˆ, เจ•เจฟเจ‰เจ‚เจ•เจฟ เจฌเจนเฉเจค เจธเจพเจฐเฉ‡ เจกเจฟเจตเฉˆเจฒเจชเจฐ เจ‡เจธ เจชเฉˆเจจเจฒ เจจเจพเจฒ เจ‰เจจเฉเจนเจพเจ‚ เจฆเฉ€เจ†เจ‚ เจธเจฎเจฐเฉฑเจฅเจพเจตเจพเจ‚ เจฌเจพเจฐเฉ‡ เจ‰เจคเจธเจผเจพเจนเจฟเจค เจนเจจเฅค

เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ เจกเฉˆเจธเจผเจฌเฉ‹เจฐเจก เจตเจฟเฉฑเจš เจธเจฎเฉ‡เจ‚-เจธเจฎเฉ‡เจ‚ 'เจคเฉ‡ เจ“เจชเจจ เจธเฉ‹เจฐเจธ เจ•เจฎเจฟเจŠเจจเจฟเจŸเฉ€ เจคเฉ‹เจ‚ เจตเจฟเจ•เจฒเจช เจนเฉเฉฐเจฆเฉ‡ เจนเจจ (เจ…เจคเฉ‡ เจ…เจธเฉ€เจ‚ เจ‰เจนเจจเจพเจ‚ 'เจคเฉ‡ เจตเจฟเจšเจพเจฐ เจ•เจฐเจจ เจตเจฟเฉฑเจš เจ–เฉเจธเจผ เจนเจพเจ‚), เจชเจฐ เจ‡เจธ เจชเฉœเจพเจ… 'เจคเฉ‡ เจ…เจธเฉ€เจ‚ เจ‡เจธ เจนเฉฑเจฒ เจฆเฉ‡ เจจเจพเจฒ เจฐเจนเจฟเฉฐเจฆเฉ‡ เจนเจพเจ‚เฅค

PS

เจธเจพเจกเฉ‡ เจฌเจฒเฉŒเจ— 'เจคเฉ‡ เจตเฉ€ เจชเฉœเฉเจนเฉ‹:

เจธเจฐเฉ‹เจค: www.habr.com

เจ‡เฉฑเจ• เจŸเจฟเฉฑเจชเจฃเฉ€ เจœเฉ‹เฉœเฉ‹