Kubernetes рдбреЕрд╢рдмреЛрд░реНрдб рдЖрдгрд┐ GitLab рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рдВрдЪреЗ рдПрдХрддреНрд░реАрдХрд░рдг

Kubernetes рдбреЕрд╢рдмреЛрд░реНрдб рдЖрдгрд┐ GitLab рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рдВрдЪреЗ рдПрдХрддреНрд░реАрдХрд░рдг

рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рдбреЕрд╢рдмреЛрд░реНрдб рд╣реЗ рддреБрдордЪреНрдпрд╛ рдЪрд╛рд▓реВ рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рдХреНрд▓рд╕реНрдЯрд░рдмрджреНрджрд▓ рдЕрджреНрдпрдпрд╛рд╡рдд рдорд╛рд╣рд┐рддреА рдорд┐рд│рд╡рдгреНрдпрд╛рд╕рд╛рдареА рдЖрдгрд┐ рдХрдореАрддрдХрдореА рдкреНрд░рдпрддреНрдирд╛рдд рддреЗ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╡рд╛рдкрд░рдгреНрдпрд╛рд╕ рд╕реЛрдкреЗ рд╕рд╛рдзрди рдЖрд╣реЗ. рдХреЗрд╡рд│ рдкреНрд░рд╢рд╛рд╕рдХ/DevOps рдЕрднрд┐рдпрдВрддреНрдпрд╛рдВрдирд╛рдЪ рдирд╡реНрд╣реЗ, рддрд░ рдХрдиреНрд╕реЛрд▓рдЪреА рдХрдореА рд╕рд╡рдп рдирд╕рд▓реЗрд▓реНрдпрд╛ рдЖрдгрд┐/рдХрд┐рдВрд╡рд╛ kubectl рд╢реА рд╕рдВрд╡рд╛рдж рд╕рд╛рдзрдгреНрдпрд╛рдЪреНрдпрд╛ рд╕рд░реНрд╡ рдЧреБрдВрддрд╛рдЧреБрдВрддреАрдВрдирд╛ рд╕рд╛рдореЛрд░реЗ рдЬрд╛рдгреНрдпрд╛рдЪрд╛ рд╣реЗрддреВ рдирд╕рд▓реЗрд▓реНрдпрд╛рдВрдирд╛рд╣реА рдпрд╛ рдХреНрд╖рдорддрд╛рдВрдордзреНрдпреЗ рдкреНрд░рд╡реЗрд╢ рдЖрд╡рд╢реНрдпрдХ рдЕрд╕рддреЛ рддреЗрд╡реНрд╣рд╛ рддреБрдореНрд╣реА рддреНрдпрд╛рдЪреЗ рдЕрдзрд┐рдХ рдХреМрддреБрдХ рдХрд░реВ рд╢рдХрддрд╛. рдЗрддрд░ рдЙрдкрдпреБрдХреНрддрддрд╛. рд╣реЗ рдЖрдордЪреНрдпрд╛рд╕реЛрдмрдд рдШрдбрд▓реЗ: рд╡рд┐рдХрд╛рд╕рдХрд╛рдВрдирд╛ рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рд╡реЗрдм рдЗрдВрдЯрд░рдлреЗрд╕рдордзреНрдпреЗ рддреНрд╡рд░рд┐рдд рдкреНрд░рд╡реЗрд╢ рд╣рд╡рд╛ рд╣реЛрддрд╛ рдЖрдгрд┐ рдЖрдореНрд╣реА GitLab рд╡рд╛рдкрд░рдд рдЕрд╕рд▓реНрдпрд╛рдиреЗ, рд╕рдорд╛рдзрд╛рди рдиреИрд╕рд░реНрдЧрд┐рдХрд░рд┐рддреНрдпрд╛ рдЖрд▓реЗ.

рд╣реЗ рдХрд╛?

рдбреАрдмрдЧрд┐рдВрдЧ рдХрд╛рд░реНрдпрд╛рдВрд╕рд╛рдареА K8s рдбреЕрд╢рдмреЛрд░реНрдб рд╕рд╛рд░рдЦреНрдпрд╛ рд╕рд╛рдзрдирд╛рдордзреНрдпреЗ рдереЗрдЯ рд╡рд┐рдХрд╛рд╕рдХрд╛рдВрдирд╛ рд╕реНрд╡рд╛рд░рд╕реНрдп рдЕрд╕реВ рд╢рдХрддреЗ. рдХрд╛рд╣реАрд╡реЗрд│рд╛ рддреБрдореНрд╣рд╛рд▓рд╛ рд▓реЙрдЧ рдЖрдгрд┐ рд╕рдВрд╕рд╛рдзрдиреЗ рдкрд╣рд╛рдпрдЪреА рдЖрд╣реЗрдд рдЖрдгрд┐ рдХрд╛рд╣реАрд╡реЗрд│рд╛ рдкреЙрдбреНрд╕ рдорд╛рд░рд╛рдпрдЪреЗ рдЖрд╣реЗрдд, рдбрд┐рдкреНрд▓реЙрдпрдореЗрдВрдЯ/рд╕реНрдЯреЗрдЯрдлреБрд▓рд╕реЗрдЯреНрд╕ рд╕реНрдХреЗрд▓ рдХрд░рд╛рдпрдЪреЗ рдЖрд╣реЗрдд рдЖрдгрд┐ рдХрдВрдЯреЗрдирд░ рдХрдиреНрд╕реЛрд▓рд╡рд░ рджреЗрдЦреАрд▓ рдЬрд╛рдпрдЪреЗ рдЖрд╣реЗ (рдЬреНрдпрд╛рд╕рд╛рдареА рд╡рд┐рдирдВрддреНрдпрд╛ рджреЗрдЦреАрд▓ рдЖрд╣реЗрдд, рддрдерд╛рдкрд┐, рджреБрд╕рд░рд╛ рдорд╛рд░реНрдЧ рдЖрд╣реЗ - рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рдпрд╛рджреНрд╡рд╛рд░реЗ kubectl-рдбреАрдмрдЧ).

рдпрд╛рд╡реНрдпрддрд┐рд░рд┐рдХреНрдд, рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХрд╛рдВрд╕рд╛рдареА рдПрдХ рдордиреЛрд╡реИрдЬреНрдЮрд╛рдирд┐рдХ рдХреНрд╖рдг рдЕрд╕рддреЛ рдЬреЗрд╡реНрд╣рд╛ рддреЗ рдХреНрд▓рд╕реНрдЯрд░рдХрдбреЗ рдкрд╛рд╣реВ рдЗрдЪреНрдЫрд┐рддрд╛рдд - "рд╕рд░реНрд╡ рдХрд╛рд╣реА рд╣рд┐рд░рд╡реЗ рдЖрд╣реЗ" рд╣реЗ рдкрд╛рд╣рдгреНрдпрд╛рд╕рд╛рдареА, рдЖрдгрд┐ рдЕрд╢рд╛ рдкреНрд░рдХрд╛рд░реЗ рд╕реНрд╡рддрдГрд▓рд╛ рдЦрд╛рддреНрд░реА рджреЗрддрд╛рдд рдХреА "рд╕рд░реНрд╡ рдХрд╛рд╣реА рдХрд╛рд░реНрдпрд░рдд рдЖрд╣реЗ" (рдЬреЗ, рдЕрд░реНрдерд╛рддрдЪ, рдЦреВрдк рд╕рд╛рдкреЗрдХреНрд╖ рдЖрд╣реЗ ... рдкрд░рдВрддреБ рд╣реЗ рд▓реЗрдЦрд╛рдЪреНрдпрд╛ рд╡реНрдпрд╛рдкреНрддреАрдЪреНрдпрд╛ рдкрд▓реАрдХрдбреЗ рдЖрд╣реЗ).

рдПрдХ рдорд╛рдирдХ CI рдкреНрд░рдгрд╛рд▓реА рдореНрд╣рдгреВрди рдЖрдордЪреНрдпрд╛рдХрдбреЗ рдЖрд╣реЗ рд▓рд╛рдЧреВ GitLab: рд╕рд░реНрд╡ рд╡рд┐рдХрд╕рдХ рджреЗрдЦреАрд▓ рддреЗ рд╡рд╛рдкрд░рддрд╛рдд. рдореНрд╣рдгреВрди, рддреНрдпрд╛рдВрдирд╛ рдкреНрд░рд╡реЗрд╢ рдкреНрд░рджрд╛рди рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, GitLab рдЦрд╛рддреНрдпрд╛рдВрд╕рд╣ рдбреЕрд╢рдмреЛрд░реНрдб рд╕рдорд╛рдХрд▓рд┐рдд рдХрд░рдгреЗ рддрд░реНрдХрд╕рдВрдЧрдд рд╣реЛрддреЗ.

рдореА рд╣реЗ рджреЗрдЦреАрд▓ рд▓рдХреНрд╖рд╛рдд рдШреЗрдИрди рдХреА рдЖрдореНрд╣реА NGINX Ingress рд╡рд╛рдкрд░рддреЛ. рдЬрд░ рддреБрдореНрд╣реА рдЗрддрд░рд╛рдВрд╕реЛрдмрдд рдХрд╛рдо рдХрд░рддрд╛ рдЙрдкрд╛рдпрд╛рдВрдордзреНрдпреЗ рдкреНрд░рд╡реЗрд╢ рдХрд░рд╛, рдЖрдкрд▓реНрдпрд╛рд▓рд╛ рдЕрдзрд┐рдХреГрддрддреЗрд╕рд╛рдареА рднрд╛рд╖реНрдпрд╛рдВрдЪреЗ рдПрдирд╛рд▓реЙрдЧ рд╕реНрд╡рддрдВрддреНрд░рдкрдгреЗ рд╢реЛрдзрдгреНрдпрд╛рдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЕрд╕реЗрд▓.

рдПрдХрддреНрд░реАрдХрд░рдгрд╛рдЪрд╛ рдкреНрд░рдпрддреНрди рдХрд░рдд рдЖрд╣реЗ

рдбреЕрд╢рдмреЛрд░реНрдб рд╕реНрдерд╛рдкрдирд╛

рдЦрдмрд░рджрд╛рд░реА: рдЬрд░ рддреБрдореНрд╣реА рдЦрд╛рд▓реАрд▓ рдЪрд░рдгрд╛рдВрдЪреА рдкреБрдирд░рд╛рд╡реГрддреНрддреА рдХрд░рдгрд╛рд░ рдЕрд╕рд╛рд▓, рддрд░ - рдЕрдирд╛рд╡рд╢реНрдпрдХ рдСрдкрд░реЗрд╢рдиреНрд╕ рдЯрд╛рд│рдгреНрдпрд╛рд╕рд╛рдареА - рдкреНрд░рдердо рдкреБрдвреАрд▓ рдЙрдкрд╢реАрд░реНрд╖рдХ рд╡рд╛рдЪрд╛.

рдЖрдореНрд╣реА рдЕрдиреЗрдХ рдкреНрд░рддрд┐рд╖реНрдард╛рдкрдирд╛рдВрдордзреНрдпреЗ рд╣реЗ рдПрдХрддреНрд░реАрдХрд░рдг рд╡рд╛рдкрд░рдд рдЕрд╕рд▓реНрдпрд╛рдиреЗ, рдЖрдореНрд╣реА рддреНрдпрд╛рдЪреА рд╕реНрдерд╛рдкрдирд╛ рд╕реНрд╡рдпрдВрдЪрд▓рд┐рдд рдХреЗрд▓реА рдЖрд╣реЗ. рдпрд╛рд╕рд╛рдареА рд▓рд╛рдЧрдгрд╛рд░реЗ рд╕реНрд░реЛрдд рдордзреНрдпреЗ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХреЗрд▓реЗ рдЖрд╣реЗрдд рд╡рд┐рд╢реЗрд╖ GitHub рднрд╛рдВрдбрд╛рд░. рддреЗ рдХрд┐рдВрдЪрд┐рдд рд╕реБрдзрд╛рд░рд┐рдд 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 рдХреНрд╖реЗрддреНрд░ тЖТ Applications - рд╡рд░ рдЬрд╛рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ рдЖрдгрд┐ рднрд╡рд┐рд╖реНрдпрд╛рддреАрд▓ рдкреЕрдиреЗрд▓рд╕рд╛рдареА рдирд╡реАрди рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдЬреЛрдбрдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ. рдЪрд▓рд╛ рддреНрдпрд╛рд▓рд╛ тАЬрдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рдбреЕрд╢рдмреЛрд░реНрдбтАЭ рдореНрд╣рдгреВрдпрд╛:

Kubernetes рдбреЕрд╢рдмреЛрд░реНрдб рдЖрдгрд┐ GitLab рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рдВрдЪреЗ рдПрдХрддреНрд░реАрдХрд░рдг

рддреЗ рдЬреЛрдбрдгреНрдпрд╛рдЪреНрдпрд╛ рдкрд░рд┐рдгрд╛рдореА, 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

рдбреЕрд╢рдмреЛрд░реНрдбрд╡рд░ рдЬрд╛рдгреНрдпрд╛рдЪреА рдЖрдгрд┐ рддреНрдпрд╛рдРрд╡рдЬреА рдкреБрд░рд╛рддрди рд▓реЙрдЧрд┐рди рдмрдЯрдг рд╢реЛрдзрдгреНрдпрд╛рдЪреА рд╡реЗрд│ рдЖрд▓реА рдЖрд╣реЗ:

Kubernetes рдбреЕрд╢рдмреЛрд░реНрдб рдЖрдгрд┐ GitLab рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рдВрдЪреЗ рдПрдХрддреНрд░реАрдХрд░рдг

рддреНрдпрд╛рд╡рд░ рдХреНрд▓рд┐рдХ рдХреЗрд▓реНрдпрд╛рдирдВрддрд░, GitLab рдЖрдореНрд╣рд╛рд▓рд╛ рд╢реБрднреЗрдЪреНрдЫрд╛ рджреЗрдИрд▓, рддреНрдпрд╛рдЪреНрдпрд╛ рдиреЗрд╣рдореАрдЪреНрдпрд╛ рдкреГрд╖реНрдард╛рд╡рд░ рд▓реЙрдЧ рдЗрди рдХрд░рдгреНрдпрд╛рдЪреА рдСрдлрд░ рджреЗрдИрд▓ (рдЕрд░реНрдерд╛рддрдЪ, рдЖрдореНрд╣реА рдпрд╛рдкреВрд░реНрд╡реА рддреЗрдереЗ рд▓реЙрдЧ рдЗрди рдХреЗрд▓реЗ рдирд╕рд▓реНрдпрд╛рд╕):

Kubernetes рдбреЕрд╢рдмреЛрд░реНрдб рдЖрдгрд┐ GitLab рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рдВрдЪреЗ рдПрдХрддреНрд░реАрдХрд░рдг

рдЖрдореНрд╣реА GitLab рдХреНрд░реЗрдбреЗрдиреНрд╢рд┐рдпрд▓реНрд╕рд╕рд╣ рд▓реЙрдЧ рдЗрди рдХрд░рддреЛ - рдЖрдгрд┐ рд╕рд░реНрд╡рдХрд╛рд╣реА рдкреВрд░реНрдг рдЭрд╛рд▓реЗ:

Kubernetes рдбреЕрд╢рдмреЛрд░реНрдб рдЖрдгрд┐ GitLab рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рдВрдЪреЗ рдПрдХрддреНрд░реАрдХрд░рдг

рдбреЕрд╢рдмреЛрд░реНрдб рд╡реИрд╢рд┐рд╖реНрдЯреНрдпрд╛рдВрдмрджреНрджрд▓

рдЬрд░ рддреБрдореНрд╣реА рдбреЗрд╡реНрд╣рд▓рдкрд░ рдЕрд╕рд╛рд▓ рдЬреНрдпрд╛рдиреЗ рдпрд╛рдЖрдзреА рдХреБрдмрд░реНрдиреЗрдЯреНрд╕рд╕реЛрдмрдд рдХрд╛рдо рдХреЗрд▓реЗ рдирд╕реЗрд▓ рдХрд┐рдВрд╡рд╛ рдХрд╛рд╣реА рдХрд╛рд░рдгрд╛рд╕реНрддрд╡ рддреБрдореНрд╣рд╛рд▓рд╛ рдбреЕрд╢рдмреЛрд░реНрдбрдЪрд╛ рд╕рд╛рдордирд╛ рдХрд░рд╛рд╡рд╛ рд▓рд╛рдЧрд▓рд╛ рдирд╕реЗрд▓, рддрд░ рдореА рддреНрдпрд╛рдЪреНрдпрд╛ рдХрд╛рд╣реА рдХреНрд╖рдорддрд╛ рд╕реНрдкрд╖реНрдЯ рдХрд░реЗрди.

рдкреНрд░рдердо, рдЖрдкрдг рдкрд╛рд╣реВ рд╢рдХрддрд╛ рдХреА "рд╕рд░реНрд╡ рдХрд╛рд╣реА рд╣рд┐рд░рд╡реЗ рдЖрд╣реЗ":

Kubernetes рдбреЕрд╢рдмреЛрд░реНрдб рдЖрдгрд┐ GitLab рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рдВрдЪреЗ рдПрдХрддреНрд░реАрдХрд░рдг

рдкреЙрдбрд╕рд╛рдареА рдЕрдзрд┐рдХ рддрдкрд╢реАрд▓рд╡рд╛рд░ рдбреЗрдЯрд╛ рджреЗрдЦреАрд▓ рдЙрдкрд▓рдмреНрдз рдЖрд╣реЗ, рдЬрд╕реЗ рдХреА рдкрд░реНрдпрд╛рд╡рд░рдг рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓реНрд╕, рдбрд╛рдЙрдирд▓реЛрдб рдХреЗрд▓реЗрд▓реА рдкреНрд░рддрд┐рдорд╛, рд▓реЙрдиреНрдЪ рдпреБрдХреНрддрд┐рд╡рд╛рдж рдЖрдгрд┐ рддреНрдпрд╛рдВрдЪреА рд╕реНрдерд┐рддреА:

Kubernetes рдбреЕрд╢рдмреЛрд░реНрдб рдЖрдгрд┐ GitLab рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рдВрдЪреЗ рдПрдХрддреНрд░реАрдХрд░рдг

рдЙрдкрдпреЛрдЬрдирд╛рдВрдирд╛ рджреГрд╢реНрдпрдорд╛рди рд╕реНрдерд┐рддреА рдЖрд╣реЗрдд:

Kubernetes рдбреЕрд╢рдмреЛрд░реНрдб рдЖрдгрд┐ GitLab рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рдВрдЪреЗ рдПрдХрддреНрд░реАрдХрд░рдг

...рдЖрдгрд┐ рдЗрддрд░ рддрдкрд╢реАрд▓:

Kubernetes рдбреЕрд╢рдмреЛрд░реНрдб рдЖрдгрд┐ GitLab рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рдВрдЪреЗ рдПрдХрддреНрд░реАрдХрд░рдг

... рдЖрдгрд┐ рдЙрдкрдпреЛрдЬрди рд╕реНрдХреЗрд▓ рдХрд░рдгреНрдпрд╛рдЪреА рдХреНрд╖рдорддрд╛ рджреЗрдЦреАрд▓ рдЖрд╣реЗ:

Kubernetes рдбреЕрд╢рдмреЛрд░реНрдб рдЖрдгрд┐ GitLab рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рдВрдЪреЗ рдПрдХрддреНрд░реАрдХрд░рдг

рдпрд╛ рдСрдкрд░реЗрд╢рдирдЪрд╛ рдкрд░рд┐рдгрд╛рдо:

Kubernetes рдбреЕрд╢рдмреЛрд░реНрдб рдЖрдгрд┐ GitLab рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рдВрдЪреЗ рдПрдХрддреНрд░реАрдХрд░рдг

рд▓реЗрдЦрд╛рдЪреНрдпрд╛ рд╕реБрд░реБрд╡рд╛рддреАрд▓рд╛ рдирдореВрдж рдХреЗрд▓реЗрд▓реНрдпрд╛ рдЗрддрд░ рдЙрдкрдпреБрдХреНрдд рд╡реИрд╢рд┐рд╖реНрдЯреНрдпрд╛рдВрдкреИрдХреА рд▓реЙрдЧ рдкрд╛рд╣рдгреЗ рдЖрд╣реЗ:

Kubernetes рдбреЕрд╢рдмреЛрд░реНрдб рдЖрдгрд┐ GitLab рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рдВрдЪреЗ рдПрдХрддреНрд░реАрдХрд░рдг

... рдЖрдгрд┐ рдирд┐рд╡рдбрд▓реЗрд▓реНрдпрд╛ рдкреЙрдбрдЪреНрдпрд╛ рдХрдВрдЯреЗрдирд░ рдХрдиреНрд╕реЛрд▓рдордзреНрдпреЗ рд▓реЙрдЧ рдЗрди рдХрд░рдгреНрдпрд╛рдЪреЗ рдХрд╛рд░реНрдп:

Kubernetes рдбреЕрд╢рдмреЛрд░реНрдб рдЖрдгрд┐ GitLab рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рдВрдЪреЗ рдПрдХрддреНрд░реАрдХрд░рдг

рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рддреБрдореНрд╣реА рдиреЛрдбреНрд╕рд╡рд░реАрд▓ рдорд░реНрдпрд╛рджрд╛/рд╡рд┐рдирдВрддреНрдпрд╛ рджреЗрдЦреАрд▓ рдкрд╛рд╣реВ рд╢рдХрддрд╛:

Kubernetes рдбреЕрд╢рдмреЛрд░реНрдб рдЖрдгрд┐ GitLab рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рдВрдЪреЗ рдПрдХрддреНрд░реАрдХрд░рдг

рдЕрд░реНрдерд╛рдд, рдпрд╛ рдкреЕрдиреЗрд▓рдЪреНрдпрд╛ рд╕рд░реНрд╡ рдХреНрд╖рдорддрд╛ рдирд╛рд╣реАрдд, рдкрд░рдВрддреБ рдорд▓рд╛ рдЖрд╢рд╛ рдЖрд╣реЗ рдХреА рддреБрдореНрд╣рд╛рд▓рд╛ рд╕рд╛рдорд╛рдиреНрдп рдХрд▓реНрдкрдирд╛ рдорд┐рд│реЗрд▓.

рдПрдХрддреНрд░реАрдХрд░рдг рдЖрдгрд┐ рдбреЕрд╢рдмреЛрд░реНрдбрдЪреЗ рддреЛрдЯреЗ

рд╡рд░реНрдгрди рдХреЗрд▓реЗрд▓реНрдпрд╛ рдПрдХрд╛рддреНрдорддреЗрдордзреНрдпреЗ рдирд╛рд╣реА рдкреНрд░рд╡реЗрд╢ рдирд┐рдпрдВрддреНрд░рдг. рдпрд╛рд╕рд╣, GitLab рдордзреНрдпреЗ рдкреНрд░рд╡реЗрд╢ рдЕрд╕рд▓реЗрд▓реЗ рд╕рд░реНрд╡ рд╡рд╛рдкрд░рдХрд░реНрддреЗ рдбреЕрд╢рдмреЛрд░реНрдбрд╡рд░ рдкреНрд░рд╡реЗрд╢ рдорд┐рд│рд╡рддрд╛рдд. рддреНрдпрд╛рдВрдирд╛ рдбреЕрд╢рдмреЛрд░реНрдбрдордзреНрдпреЗ рд╕рдорд╛рди рдкреНрд░рд╡реЗрд╢ рдЖрд╣реЗ, рдбреЕрд╢рдмреЛрд░реНрдбрдЪреНрдпрд╛ рдЕрдзрд┐рдХрд╛рд░рд╛рдВрд╢реА рд╕рдВрдмрдВрдзрд┐рдд рдЖрд╣реЗ, рдЬреЗ RBAC рдордзреНрдпреЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХреЗрд▓реЗ рдЖрд╣реЗрдд. рдЕрд░реНрдерд╛рдд, рд╣реЗ рдкреНрд░рддреНрдпреЗрдХрд╛рд╕рд╛рдареА рдпреЛрдЧреНрдп рдирд╛рд╣реА, рдкрд░рдВрддреБ рдЖрдордЪреНрдпрд╛ рдмрд╛рдмрддреАрдд рддреЗ рдкреБрд░реЗрд╕реЗ рдЕрд╕рд▓реНрдпрд╛рдЪреЗ рджрд┐рд╕реВрди рдЖрд▓реЗ.

рдбреЕрд╢рдмреЛрд░реНрдбрдордзреАрд▓рдЪ рд▓рдХреНрд╖рд╛рдд рдпреЗрдгреНрдпрд╛рдЬреЛрдЧреНрдпрд╛ рддреЛрдЯреНрдпрд╛рдВрдкреИрдХреА, рдореА рдЦрд╛рд▓реАрд▓ рдЧреЛрд╖реНрдЯреА рд▓рдХреНрд╖рд╛рдд рдШреЗрддреЛ:

  • init рдХрдВрдЯреЗрдирд░рдЪреНрдпрд╛ рдХрдиреНрд╕реЛрд▓рдордзреНрдпреЗ рдкреНрд░рд╡реЗрд╢ рдХрд░рдгреЗ рдЕрд╢рдХреНрдп рдЖрд╣реЗ;
  • рдбрд┐рдкреНрд▓реЙрдпрдореЗрдВрдЯреНрд╕ рдЖрдгрд┐ рд╕реНрдЯреЗрдЯрдлреБрд▓рд╕реЗрдЯ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдгреЗ рдЕрд╢рдХреНрдп рдЖрд╣реЗ, рдЬрд░реА рд╣реЗ рдХреНрд▓рд╕реНрдЯрд░рд░реЛрд▓рдордзреНрдпреЗ рдирд┐рд╢реНрдЪрд┐рдд рдХреЗрд▓реЗ рдЬрд╛рдК рд╢рдХрддреЗ;
  • Kubernetes рдЪреНрдпрд╛ рдирд╡реАрдирддрдо рдЖрд╡реГрддреНрддреНрдпрд╛рдВрд╕рд╣ рдбреЕрд╢рдмреЛрд░реНрдбрдЪреА рд╕реБрд╕рдВрдЧрддрддрд╛ рдЖрдгрд┐ рдкреНрд░рдХрд▓реНрдкрд╛рдЪреЗ рднрд╡рд┐рд╖реНрдп рдкреНрд░рд╢реНрди рдирд┐рд░реНрдорд╛рдг рдХрд░рддреЗ.

рд╢реЗрд╡рдЯрдЪреА рд╕рдорд╕реНрдпрд╛ рд╡рд┐рд╢реЗрд╖ рд▓рдХреНрд╖ рджреЗрдгреНрдпрд╛рд╕ рдкрд╛рддреНрд░ рдЖрд╣реЗ.

рдбреЕрд╢рдмреЛрд░реНрдб рд╕реНрдерд┐рддреА рдЖрдгрд┐ рдкрд░реНрдпрд╛рдп

рдкреНрд░рдХрд▓реНрдкрд╛рдЪреНрдпрд╛ рдирд╡реАрдирддрдо рдЖрд╡реГрддреНрддреАрдордзреНрдпреЗ рд╕рд╛рджрд░ рдХреЗрд▓реЗрд▓реНрдпрд╛ рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рд░рд┐рд▓реАрдЭрд╕рд╣ рдбреЕрд╢рдмреЛрд░реНрдб рд╕реБрд╕рдВрдЧрддрддрд╛ рд╕рд╛рд░рдгреА (v1.10.1), рдлрд╛рд░ рдЖрдирдВрджреА рдирд╛рд╣реА:

Kubernetes рдбреЕрд╢рдмреЛрд░реНрдб рдЖрдгрд┐ GitLab рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рдВрдЪреЗ рдПрдХрддреНрд░реАрдХрд░рдг

рдЕрд╕реЗ рдЕрд╕реВрдирд╣реА, рддреЗрдереЗ рдЖрд╣реЗ (рдЖрдзреАрдЪ рдЬрд╛рдиреЗрд╡рд╛рд░реАрдордзреНрдпреЗ рджрддреНрддрдХ) рдкреАрдЖрд░ #3476, рдЬреЗ K8s 1.13 рд╕рд╛рдареА рд╕рдорд░реНрдерди рдЬрд╛рд╣реАрд░ рдХрд░рддреЗ. рдпрд╛рд╡реНрдпрддрд┐рд░рд┐рдХреНрдд, рдкреНрд░рдХрд▓реНрдк рд╕рдорд╕реНрдпрд╛рдВрдкреИрдХреА рддреБрдореНрд╣рд╛рд▓рд╛ K8s 1.14 рдордзреНрдпреЗ рдкреЕрдиреЗрд▓рд╕рд╣ рдХрд╛рдо рдХрд░рдгрд╛рд▒реНрдпрд╛ рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рдВрдЪреЗ рд╕рдВрджрд░реНрдн рдорд┐рд│реВ рд╢рдХрддрд╛рдд. рд╢реЗрд╡рдЯреА, рд╡рдЪрдирдмрджреНрдз рдХрд░рддреЗ рдкреНрд░рдХрд▓реНрдкрд╛рдЪреНрдпрд╛ рдХреЛрдб рдмреЗрд╕рдордзреНрдпреЗ рдерд╛рдВрдмреВ рдирдХрд╛. рддреНрдпрд╛рдореБрд│реЗ (рдХрд┐рдорд╛рди!) рдкреНрд░рдХрд▓реНрдкрд╛рдЪреА рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕реНрдерд┐рддреА рддрд┐рддрдХреА рд╡рд╛рдИрдЯ рдирд╛рд╣реА рдЬрд┐рддрдХреА рддреА рдкреНрд░рдердо рдЕрдзрд┐рдХреГрдд рд╕реБрд╕рдВрдЧрддрддрд╛ рд╕рд╛рд░рдгреАрд╡рд░реВрди рджрд┐рд╕рддреЗ.

рд╢реЗрд╡рдЯреА, рдбреЕрд╢рдмреЛрд░реНрдбрдЪреЗ рдкрд░реНрдпрд╛рдп рдЖрд╣реЗрдд. рддреНрдпрд╛рдкреИрдХреА:

  1. K8Dash тАФ рдПрдХ рддрд░реБрдг рдЗрдВрдЯрд░рдлреЗрд╕ (рдкрд╣рд┐рд▓рд╛ рдХрдорд┐рдЯ рдпрд╛ рд╡рд░реНрд╖рд╛рдЪреНрдпрд╛ рдорд╛рд░реНрдЪрдордзреНрдпреЗ рдЖрд╣реЗ), рдЬреЛ рдХреНрд▓рд╕реНрдЯрд░рдЪреНрдпрд╛ рд╕рджреНрдп рд╕реНрдерд┐рддреАрдЪреЗ рд╡реНрд╣рд┐рдЬреНрдпреБрдЕрд▓ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдЖрдгрд┐ рддреНрдпрд╛рдЪреНрдпрд╛ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕рдЪреЗ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди рдпрд╛рд╕рд╛рд░рдЦреА рдЪрд╛рдВрдЧрд▓реА рд╡реИрд╢рд┐рд╖реНрдЯреНрдпреЗ рдЖрдзреАрдЪ рдСрдлрд░ рдХрд░рддреЛ. "рд░рд┐рдЕрд▓-рдЯрд╛рдЗрдо рдЗрдВрдЯрд░рдлреЗрд╕" рдореНрд╣рдгреВрди рд╕реНрдерд┐рдд, рдХрд╛рд░рдг рддреБрдореНрд╣рд╛рд▓рд╛ рдмреНрд░рд╛рдЙрдЭрд░рдордзреНрдпреЗ рдкреЗрдЬ рд░рд┐рдлреНрд░реЗрд╢ рдХрд░рдгреНрдпрд╛рдЪреА рдЧрд░рдЬ рди рдкрдбрддрд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХреЗрд▓реЗрд▓рд╛ рдбреЗрдЯрд╛ рдЖрдкреЛрдЖрдк рдЕрдкрдбреЗрдЯ рд╣реЛрддреЛ.
  2. рдУрдкрдирд╢рд┐рдлреНрдЯ рдХрдиреНрд╕реЛрд▓ - Red Hat OpenShift рдХрдбреВрди рд╡реЗрдм рдЗрдВрдЯрд░рдлреЗрд╕, рдЬреЗ рддрдерд╛рдкрд┐, рдкреНрд░рдХрд▓реНрдкрд╛рддреАрд▓ рдЗрддрд░ рдШрдбрд╛рдореЛрдбреА рддреБрдордЪреНрдпрд╛ рдХреНрд▓рд╕реНрдЯрд░рдордзреНрдпреЗ рдЖрдгреЗрд▓, рдЬреЗ рдкреНрд░рддреНрдпреЗрдХрд╛рд╕рд╛рдареА рдпреЛрдЧреНрдп рдирд╛рд╣реА.
  3. рдХреБрдмрд░реНрдиреЗрдЯрд░ рд╕рд░реНрд╡ рдХреНрд▓рд╕реНрдЯрд░ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдкрд╛рд╣рдгреНрдпрд╛рдЪреНрдпрд╛ рдХреНрд╖рдорддреЗрд╕рд╣ рдирд┐рдореНрди-рд╕реНрддрд░реАрдп (рдбреЕрд╢рдмреЛрд░реНрдбрдкреЗрдХреНрд╖рд╛) рдЗрдВрдЯрд░рдлреЗрд╕ рдореНрд╣рдгреВрди рддрдпрд╛рд░ рдХреЗрд▓реЗрд▓рд╛ рдПрдХ рдордиреЛрд░рдВрдЬрдХ рдкреНрд░рдХрд▓реНрдк рдЖрд╣реЗ. рдорд╛рддреНрд░, рддреНрдпрд╛рдЪрд╛ рд╡рд┐рдХрд╛рд╕ рдерд╛рдВрдмрд▓реНрдпрд╛рдЪреЗ рджрд┐рд╕рдд рдЖрд╣реЗ.
  4. рдкреЛрд▓рд╛рд░рд┐рд╕ - рдлрдХреНрдд рджреБрд╕рд▒реНрдпрд╛ рджрд┐рд╡рд╢реА рдШреЛрд╖рд┐рдд рдХреЗрд▓реЗ рдПрдХ рдкреНрд░рдХрд▓реНрдк рдЬреЛ рдкреЕрдиреЗрд▓рдЪреА рдХрд╛рд░реНрдпреЗ рдПрдХрддреНрд░рд┐рдд рдХрд░рддреЛ (рдХреНрд▓рд╕реНрдЯрд░рдЪреА рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддреА рджрд░реНрд╢рд╡рд┐рддреЛ, рдкрд░рдВрддреБ рддреНрдпрд╛рдЪреЗ рдСрдмреНрдЬреЗрдХреНрдЯ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдд рдирд╛рд╣реА) рдЖрдгрд┐ рд╕реНрд╡рдпрдВрдЪрд▓рд┐рдд "рд╕рд░реНрд╡реЛрддреНрддрдо рдкрджреНрдзрддреАрдВрдЪреЗ рдкреНрд░рдорд╛рдгреАрдХрд░рдг" (рддреНрдпрд╛рдордзреНрдпреЗ рдЪрд╛рд▓реВ рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рдЙрдкрдпреЛрдЬрдирд╛рдВрдЪреНрдпрд╛ рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рдирдЪреНрдпрд╛ рдЕрдЪреВрдХрддреЗрд╕рд╛рдареА рдХреНрд▓рд╕реНрдЯрд░ рддрдкрд╛рд╕рддреЛ).

рддреНрдпрд╛рдРрд╡рдЬреА рдирд┐рд╖реНрдХрд░реНрд╖

рдбреЕрд╢рдмреЛрд░реНрдб рд╣реЗ рдЖрдореНрд╣реА рд╕реЗрд╡рд╛ рджреЗрдд рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рдХреНрд▓рд╕реНрдЯрд░рд╕рд╛рдареА рдПрдХ рдорд╛рдирдХ рд╕рд╛рдзрди рдЖрд╣реЗ. GitLab рд╕рд╣ рддреНрдпрд╛рдЪреЗ рдПрдХрддреНрд░реАрдХрд░рдг рджреЗрдЦреАрд▓ рдЖрдордЪреНрдпрд╛ рдбреАрдлреЙрд▓реНрдЯ рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рдирдЪрд╛ рдПрдХ рднрд╛рдЧ рдмрдирд▓реЗ рдЖрд╣реЗ, рдХрд╛рд░рдг рдЕрдиреЗрдХ рд╡рд┐рдХрд╛рд╕рдХ рддреНрдпрд╛рдВрдЪреНрдпрд╛рдХрдбреЗ рдпрд╛ рдкреЕрдиреЗрд▓рдЪреНрдпрд╛ рдХреНрд╖рдорддрд╛рдВрдмрджреНрджрд▓ рдЙрддреНрд╕рд╛рд╣рд┐рдд рдЖрд╣реЗрдд.

Kubernetes рдбреЕрд╢рдмреЛрд░реНрдбрд╡рд░ рдореБрдХреНрдд рд╕реНрд░реЛрдд рд╕рдореБрджрд╛рдпрд╛рдХрдбреВрди рд╡реЗрд│реЛрд╡реЗрд│реА рдкрд░реНрдпрд╛рдп рдЕрд╕рддрд╛рдд (рдЖрдгрд┐ рдЖрдореНрд╣рд╛рд▓рд╛ рддреНрдпрд╛рдВрдЪрд╛ рд╡рд┐рдЪрд╛рд░ рдХрд░рдгреНрдпрд╛рдд рдЖрдирдВрдж рд╣реЛрддреЛ), рдкрд░рдВрддреБ рдпрд╛ рдЯрдкреНрдкреНрдпрд╛рд╡рд░ рдЖрдореНрд╣реА рд╣реЗ рд╕рдорд╛рдзрд╛рди рдХрд╛рдпрдо рдареЗрд╡рддреЛ.

PS

рдЖрдордЪреНрдпрд╛ рдмреНрд▓реЙрдЧрд╡рд░ рджреЗрдЦреАрд▓ рд╡рд╛рдЪрд╛:

рд╕реНрддреНрд░реЛрдд: www.habr.com

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╛