Kubernetes рдбреНрдпрд╛рд╕рдмреЛрд░реНрдб рд░ GitLab рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд╣рд░реВрдХреЛ рдПрдХреАрдХрд░рдг

Kubernetes рдбреНрдпрд╛рд╕рдмреЛрд░реНрдб рд░ GitLab рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд╣рд░реВрдХреЛ рдПрдХреАрдХрд░рдг

Kubernetes Dashboard рддрдкрд╛рдИрдХреЛ рдЪрд▓рд┐рд░рд╣реЗрдХреЛ рдХреНрд▓рд╕реНрдЯрд░рдХреЛ рдмрд╛рд░реЗрдорд╛ рдЕрджреНрдпрд╛рд╡рдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрди рд░ рдпрд╕рд▓рд╛рдИ рдиреНрдпреВрдирддрдо рдкреНрд░рдпрд╛рд╕рдорд╛ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди рдЧрд░реНрди рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдЬрд┐рд▓реЛ рдЙрдкрдХрд░рдг рд╣реЛред рддрдкрд╛рдЗрдБ рдпрд╕рд▓рд╛рдИ рдЕрдЭ рдмрдврд┐ рдХрджрд░ рдЧрд░реНрди рдерд╛рд▓реНрдиреБрд╣реБрдиреНрдЫ рдЬрдм рдпреА рдХреНрд╖рдорддрд╛рд╣рд░реВрдорд╛ рдкрд╣реБрдБрдЪ рдкреНрд░рд╢рд╛рд╕рдХрд╣рд░реВ/DevOps рдИрдиреНрдЬрд┐рдирд┐рдпрд░рд╣рд░реВ рджреНрд╡рд╛рд░рд╛ рдорд╛рддреНрд░ рдЖрд╡рд╢реНрдпрдХ рдкрд░реНрджреИрди, рддрд░ рдХрдиреНрд╕реЛрд▓рдорд╛ рдХрдо рдЕрднреНрдпрд╕реНрдд рд░/рд╡рд╛ kubectl рд╕рдБрдЧ рдЕрдиреНрддрд░реНрдХреНрд░рд┐рдпрд╛ рдЧрд░реНрдиреЗ рд╕рдмреИ рдЬрдЯрд┐рд▓рддрд╛рд╣рд░реВрд╕рдБрдЧ рд╡реНрдпрд╡рд╣рд╛рд░ рдЧрд░реНрди рдЪрд╛рд╣рдБрджреИрдирдиреНред рдЕрдиреНрдп рдЙрдкрдпреЛрдЧрд┐рддрд╛рд╣рд░реВред рдпреЛ рд╣рд╛рдореАрд╕рдБрдЧ рднрдпреЛ: рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛рд╣рд░реВ Kubernetes рд╡реЗрдм рдЗрдиреНрдЯрд░рдлреЗрд╕рдорд╛ рджреНрд░реБрдд рдкрд╣реБрдБрдЪ рдЪрд╛рд╣рдиреНрдереЗ, рд░ рд╣рд╛рдореАрд▓реЗ GitLab рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджрд╛, рд╕рдорд╛рдзрд╛рди рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдкрдорд╛ рдЖрдпреЛред

рдпреЛ рдХрд┐рди рд╣реЛ?

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

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

рдорд╛рдирдХ 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 рдорд╛ рдЬрд╛рдиреБ рдкрд░реНрдЫ: рдкреНрд░рд╢рд╛рд╕рди рдХреНрд╖реЗрддреНрд░ тЖТ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВ - рд░ рднрд╡рд┐рд╖реНрдп рдкреНрдпрд╛рдирд▓рдХреЛ рд▓рд╛рдЧрд┐ рдирдпрд╛рдБ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдердкреНрдиреБрд╣реЛрд╕реНред рдпрд╕рд▓рд╛рдИ "kubernetes рдбреНрдпрд╛рд╕рдмреЛрд░реНрдб" рднрдиреМрдВ:

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 рд▓реЗ рдХреБрдХреА рдореЗрдЯрд╛рдЙрдБрдЫ рдЬреБрди 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 рдкреНрдпрд╛рдЪ рдЖрдлреИ рдЬрд╕реНрддреЛ рджреЗрдЦрд┐рдиреНрдЫ

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

рдпреЛ рдбреНрдпрд╛рд╕рдмреЛрд░реНрдбрдорд╛ рдЬрд╛рдиреЗ рд░ рдкреБрд░рд╛рддрди рд▓рдЧрдЗрди рдмрдЯрди рдЦреЛрдЬреНрдиреЗ рд╕рдордп рд╣реЛ:

Kubernetes рдбреНрдпрд╛рд╕рдмреЛрд░реНрдб рд░ GitLab рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд╣рд░реВрдХреЛ рдПрдХреАрдХрд░рдг

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

Kubernetes рдбреНрдпрд╛рд╕рдмреЛрд░реНрдб рд░ GitLab рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд╣рд░реВрдХреЛ рдПрдХреАрдХрд░рдг

рд╣рд╛рдореА GitLab credentials рдХреЛ рд╕рд╛рде рд▓рдЧ рдЗрди рдЧрд░реНрдЫреМрдВ - рд░ рд╕рдмреИ рдХреБрд░рд╛ рд╕рдХрд┐рдпреЛ:

Kubernetes рдбреНрдпрд╛рд╕рдмреЛрд░реНрдб рд░ GitLab рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд╣рд░реВрдХреЛ рдПрдХреАрдХрд░рдг

рдбреНрдпрд╛рд╕рдмреЛрд░реНрдб рд╕реБрд╡рд┐рдзрд╛рд╣рд░реВ рдмрд╛рд░реЗ

рдпрджрд┐ рддрдкрд╛рдИрдВ рдПрдХ рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛ рд╣реБрдиреБрд╣реБрдиреНрдЫ рдЬрд╕рд▓реЗ рдкрд╣рд┐рд▓реЗ Kubernetes рд╕рдБрдЧ рдХрд╛рдо рдЧрд░реНрдиреБрднрдПрдХреЛ рдЫреИрди, рд╡рд╛ рдХреЗрд╡рд▓ рдХреБрдиреИ рдХрд╛рд░рдгрд▓реЗ рдЧрд░реНрджрд╛ рдбреНрдпрд╛рд╕рдмреЛрд░реНрдбрдХреЛ рд╕рд╛рдордирд╛ рдЧрд░реНрдиреБрднрдПрди рднрдиреЗ, рдо рдпрд╕рдХреЛ рдХреЗрд╣реА рдХреНрд╖рдорддрд╛рд╣рд░реВ рдЪрд┐рддреНрд░рдг рдЧрд░реНрдиреЗрдЫреБред

рдкрд╣рд┐рд▓реЗ, рддрдкрд╛рдИрд▓реЗ рджреЗрдЦреНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ рдХрд┐ "рд╕рдмреИ рд╣рд░рд┐рдпреЛ рдЫ":

Kubernetes рдбреНрдпрд╛рд╕рдмреЛрд░реНрдб рд░ GitLab рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд╣рд░реВрдХреЛ рдПрдХреАрдХрд░рдг

рдердк рд╡рд┐рд╕реНрддреГрдд рдбреЗрдЯрд╛ рдкреЛрдбрд╣рд░реВрдХрд╛ рд▓рд╛рдЧрд┐ рдкрдирд┐ рдЙрдкрд▓рдмреНрдз рдЫ, рдЬрд╕реНрддреИ рд╡рд╛рддрд╛рд╡рд░рдг рдЪрд░рд╣рд░реВ, рдбрд╛рдЙрдирд▓реЛрдб рдЧрд░рд┐рдПрдХреЛ рдЫрд╡рд┐, рд╕реБрд░реБрд╡рд╛рдд рддрд░реНрдХрд╣рд░реВ, рд░ рддрд┐рдиреАрд╣рд░реВрдХреЛ рдЕрд╡рд╕реНрдерд╛:

Kubernetes рдбреНрдпрд╛рд╕рдмреЛрд░реНрдб рд░ GitLab рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд╣рд░реВрдХреЛ рдПрдХреАрдХрд░рдг

рдбрд┐рдкреНрд▓реЛрдпрдореЗрдиреНрдЯрд╣рд░реВ рджреЗрдЦрд┐рдиреЗ рд╕реНрдерд┐рддрд┐рд╣рд░реВ рдЫрдиреН:

Kubernetes рдбреНрдпрд╛рд╕рдмреЛрд░реНрдб рд░ GitLab рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд╣рд░реВрдХреЛ рдПрдХреАрдХрд░рдг

... рд░ рдЕрдиреНрдп рд╡рд┐рд╡рд░рдгрд╣рд░реВ:

Kubernetes рдбреНрдпрд╛рд╕рдмреЛрд░реНрдб рд░ GitLab рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд╣рд░реВрдХреЛ рдПрдХреАрдХрд░рдг

... рд░ рддреНрдпрд╣рд╛рдБ рддреИрдирд╛рддреА рдорд╛рдкрди рдЧрд░реНрдиреЗ рдХреНрд╖рдорддрд╛ рдкрдирд┐ рдЫ:

Kubernetes рдбреНрдпрд╛рд╕рдмреЛрд░реНрдб рд░ GitLab рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд╣рд░реВрдХреЛ рдПрдХреАрдХрд░рдг

рдпрд╕ рдЕрдкрд░реЗрд╢рдирдХреЛ рдирддрд┐рдЬрд╛:

Kubernetes рдбреНрдпрд╛рд╕рдмреЛрд░реНрдб рд░ GitLab рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд╣рд░реВрдХреЛ рдПрдХреАрдХрд░рдг

рд▓реЗрдЦрдХреЛ рд╕реБрд░реБрдорд╛ рдкрд╣рд┐рд▓реЗ рдиреИ рдЙрд▓реНрд▓реЗрдЦ рдЧрд░рд┐рдПрдХрд╛ рдЕрдиреНрдп рдЙрдкрдпреЛрдЧреА рд╕реБрд╡рд┐рдзрд╛рд╣рд░реВ рдордзреНрдпреЗ рд▓рдЧрд╣рд░реВ рд╣реЗрд░реНрдиреБ рд╣реЛ:

Kubernetes рдбреНрдпрд╛рд╕рдмреЛрд░реНрдб рд░ GitLab рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд╣рд░реВрдХреЛ рдПрдХреАрдХрд░рдг

... рд░ рдЪрдпрди рдЧрд░рд┐рдПрдХреЛ рдкреЛрдбрдХреЛ рдХрдиреНрдЯреЗрдирд░ рдХрдиреНрд╕реЛрд▓рдорд╛ рд▓рдЧ рдЗрди рдЧрд░реНрдиреЗ рдкреНрд░рдХрд╛рд░реНрдп:

Kubernetes рдбреНрдпрд╛рд╕рдмреЛрд░реНрдб рд░ GitLab рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд╣рд░реВрдХреЛ рдПрдХреАрдХрд░рдг

рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рддрдкрд╛рдИрдВрд▓реЗ рдиреЛрдбрд╣рд░реВрдорд╛ рд╕реАрдорд╛/рдЕрдиреБрд░реЛрдзрд╣рд░реВ рдкрдирд┐ рд╣реЗрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ:

Kubernetes рдбреНрдпрд╛рд╕рдмреЛрд░реНрдб рд░ GitLab рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд╣рд░реВрдХреЛ рдПрдХреАрдХрд░рдг

рдирд┐рд╕реНрд╕рдиреНрджреЗрд╣, рдпреА рдкреНрдпрд╛рдирд▓рдХрд╛ рд╕рдмреИ рдХреНрд╖рдорддрд╛рд╣рд░реВ рд╣реЛрдЗрдирдиреН, рддрд░ рдорд▓рд╛рдИ рдЖрд╢рд╛ рдЫ рдХрд┐ рддрдкрд╛рдИрдВрд▓реЗ рд╕рд╛рдорд╛рдиреНрдп рд╡рд┐рдЪрд╛рд░ рдкрд╛рдЙрдиреБрд╣реБрдиреНрдЫред

рдПрдХреАрдХрд░рдг рд░ рдбреНрдпрд╛рд╕рдмреЛрд░реНрдбрдХрд╛ рдмреЗрдлрд╛рдЗрджрд╛рд╣рд░реВ

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

рдбреНрдпрд╛рд╕рдмреЛрд░реНрдбрдорд╛ рджреЗрдЦреНрди рд╕рдХрд┐рдиреЗ рдмреЗрдлрд╛рдЗрджрд╛рд╣рд░реВ рдордзреНрдпреЗ, рдо рдирд┐рдореНрдирд▓рд╛рдИ рдиреЛрдЯ рдЧрд░реНрдЫреБ:

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

рдкрдЫрд┐рд▓реНрд▓реЛ рд╕рдорд╕реНрдпрд╛ рд╡рд┐рд╢реЗрд╖ рдзреНрдпрд╛рди рдпреЛрдЧреНрдп рдЫред

рдбреНрдпрд╛рд╕рдмреЛрд░реНрдб рд╕реНрдерд┐рддрд┐ рд░ рд╡рд┐рдХрд▓реНрдкрд╣рд░реВ

Kubernetes рд╡рд┐рдЬреНрдЮрдкреНрддрд┐ рд╕рдВрдЧ рдбреНрдпрд╛рд╕рдмреЛрд░реНрдб рдЕрдиреБрдХреВрд▓рддрд╛ рддрд╛рд▓рд┐рдХрд╛, рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рдорд╛ рдкреНрд░рд╕реНрддреБрдд (v1.10.1), рдзреЗрд░реИ рдЦреБрд╕реА рдЫреИрди:

Kubernetes рдбреНрдпрд╛рд╕рдмреЛрд░реНрдб рд░ GitLab рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд╣рд░реВрдХреЛ рдПрдХреАрдХрд░рдг

рдпреЛ рдмрд╛рд╡рдЬреБрдж, рддреНрдпрд╣рд╛рдБ (рдкрд╣рд┐рд▓реЗ рдиреИ рдЬрдирд╡рд░реА рдорд╛ рдЕрдкрдирд╛рдЗрдПрдХреЛ) рдЫ PR #рейрекренрем, рдЬрд╕рд▓реЗ K8s 1.13 рдХреЛ рд▓рд╛рдЧрд┐ рд╕рдорд░реНрдерди рдШреЛрд╖рдгрд╛ рдЧрд░реНрджрдЫред рдердк рд░реВрдкрдорд╛, рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореБрджреНрджрд╛рд╣рд░реВ рдмреАрдЪрдорд╛ рддрдкрд╛рдЗрдБ K8s 1.14 рдорд╛ рдкреНрдпрд╛рдирд▓рд╕рдБрдЧ рдХрд╛рдо рдЧрд░реНрдиреЗ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд╣рд░реВрдХреЛ рд╕рдиреНрджрд░реНрднрд╣рд░реВ рдлреЗрд▓рд╛ рдкрд╛рд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред рдЕрдиреНрддрдорд╛, рдкреНрд░рддрд┐рдмрджреНрдз рдЧрд░реНрджрдЫ рдкрд░рд┐рдпреЛрдЬрдирд╛рдХреЛ рдХреЛрдб рдЖрдзрд╛рд░рдорд╛ рд░реЛрдХреНрдиреБрд╣реЛрд╕реНред рддреНрдпрд╕реЛрднрдП (рдХрдореНрддрд┐рдорд╛!) рдкрд░рд┐рдпреЛрдЬрдирд╛рдХреЛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕реНрдерд┐рддрд┐ рддреНрдпрддрд┐ рдЦрд░рд╛рдм рдЫреИрди рдЬрддрд┐ рдпреЛ рдкрд╣рд┐рд▓реЛ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдЕрдиреБрдХреВрд▓рддрд╛ рддрд╛рд▓рд┐рдХрд╛рдмрд╛рдЯ рджреЗрдЦрд┐рдиреНрдЫред

рдЕрдиреНрддрдорд╛, рддреНрдпрд╣рд╛рдБ рдбреНрдпрд╛рд╕рдмреЛрд░реНрдб рд╡рд┐рдХрд▓реНрдкрд╣рд░реВ рдЫрдиреНред рдЙрдиреАрд╣рд░реБ рдордзреНрдпреЗ:

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

рдирд┐рд╖реНрдХрд░реНрд╖рдХреЛ рд╕рдЯреНрдЯрд╛

рдбреНрдпрд╛рд╕рдмреЛрд░реНрдб рд╣рд╛рдореАрд▓реЗ рд╕реЗрд╡рд╛ рдЧрд░реНрдиреЗ Kubernetes рдХреНрд▓рд╕реНрдЯрд░рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдПрдХ рдорд╛рдирдХ рдЙрдкрдХрд░рдг рд╣реЛред GitLab рд╕рдБрдЧ рдпрд╕рдХреЛ рдПрдХреАрдХрд░рдг рдкрдирд┐ рд╣рд╛рдореНрд░реЛ рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╕реНрдерд╛рдкрдирд╛рдХреЛ рдЕрдВрд╢ рдмрдиреЗрдХреЛ рдЫ, рдХрд┐рдирдХрд┐ рдзреЗрд░реИ рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛рд╣рд░реВ рдпрд╕ рдкреНрдпрд╛рдирд▓рд╕рдБрдЧ рднрдПрдХрд╛ рдХреНрд╖рдорддрд╛рд╣рд░реВрдХреЛ рдмрд╛рд░реЗрдорд╛ рдЙрддреНрд╕рд╛рд╣рд┐рдд рдЫрдиреНред

Kubernetes Dashboard рд╕рдБрдЧ рдЖрд╡рдзрд┐рдХ рд░реВрдкрдорд╛ рдЦреБрд▓рд╛ рд╕реНрд░реЛрдд рд╕рдореБрджрд╛рдпрдмрд╛рдЯ рд╡рд┐рдХрд▓реНрдкрд╣рд░реВ рдЫрдиреН (рд░ рд╣рд╛рдореА рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рд╡рд┐рдЪрд╛рд░ рдЧрд░реНрди рдкрд╛рдЙрдБрджрд╛ рдЦреБрд╕реА рдЫреМрдВ), рддрд░ рдпрд╕ рдЪрд░рдгрдорд╛ рд╣рд╛рдореА рдпреЛ рд╕рдорд╛рдзрд╛рдирдХреЛ рд╕рд╛рде рд░рд╣рдиреНрдЫреМрдВред

PS

рд╣рд╛рдореНрд░реЛ рдмреНрд▓рдЧрдорд╛ рдкрдирд┐ рдкрдвреНрдиреБрд╣реЛрд╕реН:

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

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдердкреНрди