Kubernetes Dashboard рддрдкрд╛рдИрдХреЛ рдЪрд▓рд┐рд░рд╣реЗрдХреЛ рдХреНрд▓рд╕реНрдЯрд░рдХреЛ рдмрд╛рд░реЗрдорд╛ рдЕрджреНрдпрд╛рд╡рдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрди рд░ рдпрд╕рд▓рд╛рдИ рдиреНрдпреВрдирддрдо рдкреНрд░рдпрд╛рд╕рдорд╛ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди рдЧрд░реНрди рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдЬрд┐рд▓реЛ рдЙрдкрдХрд░рдг рд╣реЛред рддрдкрд╛рдЗрдБ рдпрд╕рд▓рд╛рдИ рдЕрдЭ рдмрдврд┐ рдХрджрд░ рдЧрд░реНрди рдерд╛рд▓реНрдиреБрд╣реБрдиреНрдЫ рдЬрдм рдпреА рдХреНрд╖рдорддрд╛рд╣рд░реВрдорд╛ рдкрд╣реБрдБрдЪ рдкреНрд░рд╢рд╛рд╕рдХрд╣рд░реВ/DevOps рдИрдиреНрдЬрд┐рдирд┐рдпрд░рд╣рд░реВ рджреНрд╡рд╛рд░рд╛ рдорд╛рддреНрд░ рдЖрд╡рд╢реНрдпрдХ рдкрд░реНрджреИрди, рддрд░ рдХрдиреНрд╕реЛрд▓рдорд╛ рдХрдо рдЕрднреНрдпрд╕реНрдд рд░/рд╡рд╛ kubectl рд╕рдБрдЧ рдЕрдиреНрддрд░реНрдХреНрд░рд┐рдпрд╛ рдЧрд░реНрдиреЗ рд╕рдмреИ рдЬрдЯрд┐рд▓рддрд╛рд╣рд░реВрд╕рдБрдЧ рд╡реНрдпрд╡рд╣рд╛рд░ рдЧрд░реНрди рдЪрд╛рд╣рдБрджреИрдирдиреНред рдЕрдиреНрдп рдЙрдкрдпреЛрдЧрд┐рддрд╛рд╣рд░реВред рдпреЛ рд╣рд╛рдореАрд╕рдБрдЧ рднрдпреЛ: рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛рд╣рд░реВ Kubernetes рд╡реЗрдм рдЗрдиреНрдЯрд░рдлреЗрд╕рдорд╛ рджреНрд░реБрдд рдкрд╣реБрдБрдЪ рдЪрд╛рд╣рдиреНрдереЗ, рд░ рд╣рд╛рдореАрд▓реЗ GitLab рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджрд╛, рд╕рдорд╛рдзрд╛рди рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдкрдорд╛ рдЖрдпреЛред
рдпреЛ рдХрд┐рди рд╣реЛ?
рдкреНрд░рддреНрдпрдХреНрд╖ рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛рд╣рд░реВрд▓реЗ рдбрд┐рдмрдЧрд┐рдЩ рдХрд╛рд░реНрдпрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ K8s рдбреНрдпрд╛рд╕рдмреЛрд░реНрдб рдЬрд╕реНрддрд╛ рдЙрдкрдХрд░рдгрдорд╛ рд░реБрдЪрд┐ рд░рд╛рдЦреНрди рд╕рдХреНрдЫрдиреНред рдХрд╣рд┐рд▓реЗрдХрд╛рд╣реАрдБ рддрдкрд╛рдИрдВ рд▓рдЧрд╣рд░реВ рд░ рд╕реНрд░реЛрддрд╣рд░реВ рд╣реЗрд░реНрди рдЪрд╛рд╣рдиреБрд╣реБрдиреНрдЫ, рд░ рдХрд╣рд┐рд▓реЗрдХрд╛рд╣реАрдВ рдкреЛрдбрд╣рд░реВ рдорд╛рд░реНрди рдЪрд╛рд╣рдиреБрд╣реБрдиреНрдЫ, рдбрд┐рдкреНрд▓реЛрдпрдореЗрдиреНрдЯ/рд╕реНрдЯреЗрдЯрдлреБрд▓рд╕реЗрдЯрд╣рд░реВ рдорд╛рдкрди рдЧрд░реНрдиреБрд╣реЛрд╕реН рд░ рдХрдиреНрдЯреЗрдирд░ рдХрдиреНрд╕реЛрд▓рдорд╛ рдкрдирд┐ рдЬрд╛рдиреБрд╣реЛрд╕реН (рддреНрдпрд╣рд╛рдБ рдЕрдиреБрд░реЛрдзрд╣рд░реВ рдкрдирд┐ рдЫрдиреН, рддрдерд╛рдкрд┐, рддреНрдпрд╣рд╛рдБ рдЕрд░реНрдХреЛ рддрд░рд┐рдХрд╛ рдЫ - рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рдорд╛рд░реНрдлрддред
рдердк рд░реВрдкрдорд╛, рддреНрдпрд╣рд╛рдБ рдкреНрд░рдмрдиреНрдзрдХрд╣рд░реВрдХрд╛ рд▓рд╛рдЧрд┐ рдПрдХ рдордиреЛрд╡реИрдЬреНрдЮрд╛рдирд┐рдХ рдХреНрд╖рдг рд╣реЛ рдЬрдм рддрд┐рдиреАрд╣рд░реВ рдХреНрд▓рд╕реНрдЯрд░рдорд╛ рд╣реЗрд░реНрди рдЪрд╛рд╣рдиреНрдЫрдиреН - "рд╕рдмреИ рдХреБрд░рд╛ рд╣рд░рд┐рдпреЛ рдЫ" рд╣реЗрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐, рд░ рдпрд╕рд░реА рдЖрдлреВрд▓рд╛рдИ "рд╕рдмреИ рдХреБрд░рд╛рд▓реЗ рдХрд╛рдо рдЧрд░рд┐рд░рд╣реЗрдХреЛ рдЫ" рднрдиреЗрд░ рдЖрд╢реНрд╡рд╕реНрдд рдкрд╛рд░реНрдЫ (рдЬреБрди, рдЕрд╡рд╢реНрдп рдкрдирд┐, рдзреЗрд░реИ рд╕рд╛рдкреЗрдХреНрд╖ рдЫ ... рддрд░ рдпреЛ рд▓реЗрдЦрдХреЛ рджрд╛рдпрд░рд╛ рдмрд╛рд╣рд┐рд░ рдЫ)ред
рдорд╛рдирдХ CI рдкреНрд░рдгрд╛рд▓реАрдХреЛ рд░реВрдкрдорд╛ рд╣рд╛рдореАрд╕рдБрдЧ рдЫ
рдо рдпреЛ рдкрдирд┐ рдиреЛрдЯ рдЧрд░реНрдиреЗрдЫреБ рдХрд┐ рд╣рд╛рдореА NGINX Ingress рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдЫреМрдВред рдпрджрд┐ рддрдкрд╛рдИрдВ рдЕрд░реВрд╕рдБрдЧ рдХрд╛рдо рдЧрд░реНрдиреБрд╣реБрдиреНрдЫ
рдПрдХреАрдХрд░рдг рдкреНрд░рдпрд╛рд╕ рдЧрд░реНрджреИ
рдбреНрдпрд╛рд╕рдмреЛрд░реНрдб рд╕реНрдерд╛рдкрдирд╛
рд╕рд╛рд╡рдзрд╛рдиреА: рдпрджрд┐ рддрдкрд╛рдЗрдБ рддрд▓рдХрд╛ рдЪрд░рдгрд╣рд░реВ рджреЛрд╣реЛрд░реНрдпрд╛рдЙрди рдЬрд╛рдБрджреИ рд╣реБрдиреБрд╣реБрдиреНрдЫ рднрдиреЗ, рддреНрдпрд╕рдкрдЫрд┐ - рдЕрдирд╛рд╡рд╢реНрдпрдХ рдХрд╛рд░реНрдпрд╣рд░реВрдмрд╛рдЯ рдмрдЪреНрди - рдкрд╣рд┐рд▓реЗ рдЕрд░реНрдХреЛ рдЙрдкрд╢реАрд░реНрд╖рдХрдорд╛ рдкрдвреНрдиреБрд╣реЛрд╕реНред
рд╣рд╛рдореАрд▓реЗ рдзреЗрд░реИ рд╕реНрдерд╛рдкрдирд╛рд╣рд░реВрдорд╛ рдпреЛ рдПрдХреАрдХрд░рдг рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрдХреЛ рд╣реБрдирд╛рд▓реЗ, рд╣рд╛рдореАрд▓реЗ рдпрд╕рдХреЛ рд╕реНрдерд╛рдкрдирд╛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдЧрд░реЗрдХрд╛ рдЫреМрдВред рдпрд╕рдХрд╛ рд▓рд╛рдЧрд┐ рдЖрд╡рд╢реНрдпрдХ рд╕реНрд░реЛрддрд╣рд░реВ рдкреНрд░рдХрд╛рд╢рд┐рдд рдЫрдиреН
рд╕реНрдХреНрд░рд┐рдкреНрдЯрд▓реЗ рдХреНрд▓рд╕реНрдЯрд░рдорд╛ рдбреНрдпрд╛рд╕рдмреЛрд░реНрдб рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрджрдЫ рд░ рдпрд╕рд▓рд╛рдИ 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 рд▓реЗ рдХреБрдХреА рдореЗрдЯрд╛рдЙрдБрдЫ рдЬреБрди 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
рдпреЛ рдбреНрдпрд╛рд╕рдмреЛрд░реНрдбрдорд╛ рдЬрд╛рдиреЗ рд░ рдкреБрд░рд╛рддрди рд▓рдЧрдЗрди рдмрдЯрди рдЦреЛрдЬреНрдиреЗ рд╕рдордп рд╣реЛ:
рдпрд╕рдорд╛ рдХреНрд▓рд┐рдХ рдЧрд░реЗрдкрдЫрд┐, GitLab рд▓реЗ рд╣рд╛рдореАрд▓рд╛рдИ рдЕрднрд┐рд╡рд╛рджрди рдЧрд░реНрдиреЗрдЫ, рдпрд╕рдХреЛ рд╕рд╛рдорд╛рдиреНрдп рдкреГрд╖реНрдардорд╛ рд▓рдЧ рдЗрди рдЧрд░реНрди рдкреНрд░рд╕реНрддрд╛рд╡ рдЧрд░реНрджреИ (рдЕрд╡рд╢реНрдп рдкрдирд┐, рдпрджрд┐ рд╣рд╛рдореАрд▓реЗ рдкрд╣рд┐рд▓реЗ рддреНрдпрд╣рд╛рдБ рд▓рдЧ рдЗрди рдЧрд░реЗрдХрд╛ рдЫреИрдиреМрдВ):
рд╣рд╛рдореА GitLab credentials рдХреЛ рд╕рд╛рде рд▓рдЧ рдЗрди рдЧрд░реНрдЫреМрдВ - рд░ рд╕рдмреИ рдХреБрд░рд╛ рд╕рдХрд┐рдпреЛ:
рдбреНрдпрд╛рд╕рдмреЛрд░реНрдб рд╕реБрд╡рд┐рдзрд╛рд╣рд░реВ рдмрд╛рд░реЗ
рдпрджрд┐ рддрдкрд╛рдИрдВ рдПрдХ рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛ рд╣реБрдиреБрд╣реБрдиреНрдЫ рдЬрд╕рд▓реЗ рдкрд╣рд┐рд▓реЗ Kubernetes рд╕рдБрдЧ рдХрд╛рдо рдЧрд░реНрдиреБрднрдПрдХреЛ рдЫреИрди, рд╡рд╛ рдХреЗрд╡рд▓ рдХреБрдиреИ рдХрд╛рд░рдгрд▓реЗ рдЧрд░реНрджрд╛ рдбреНрдпрд╛рд╕рдмреЛрд░реНрдбрдХреЛ рд╕рд╛рдордирд╛ рдЧрд░реНрдиреБрднрдПрди рднрдиреЗ, рдо рдпрд╕рдХреЛ рдХреЗрд╣реА рдХреНрд╖рдорддрд╛рд╣рд░реВ рдЪрд┐рддреНрд░рдг рдЧрд░реНрдиреЗрдЫреБред
рдкрд╣рд┐рд▓реЗ, рддрдкрд╛рдИрд▓реЗ рджреЗрдЦреНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ рдХрд┐ "рд╕рдмреИ рд╣рд░рд┐рдпреЛ рдЫ":
рдердк рд╡рд┐рд╕реНрддреГрдд рдбреЗрдЯрд╛ рдкреЛрдбрд╣рд░реВрдХрд╛ рд▓рд╛рдЧрд┐ рдкрдирд┐ рдЙрдкрд▓рдмреНрдз рдЫ, рдЬрд╕реНрддреИ рд╡рд╛рддрд╛рд╡рд░рдг рдЪрд░рд╣рд░реВ, рдбрд╛рдЙрдирд▓реЛрдб рдЧрд░рд┐рдПрдХреЛ рдЫрд╡рд┐, рд╕реБрд░реБрд╡рд╛рдд рддрд░реНрдХрд╣рд░реВ, рд░ рддрд┐рдиреАрд╣рд░реВрдХреЛ рдЕрд╡рд╕реНрдерд╛:
рдбрд┐рдкреНрд▓реЛрдпрдореЗрдиреНрдЯрд╣рд░реВ рджреЗрдЦрд┐рдиреЗ рд╕реНрдерд┐рддрд┐рд╣рд░реВ рдЫрдиреН:
... рд░ рдЕрдиреНрдп рд╡рд┐рд╡рд░рдгрд╣рд░реВ:
... рд░ рддреНрдпрд╣рд╛рдБ рддреИрдирд╛рддреА рдорд╛рдкрди рдЧрд░реНрдиреЗ рдХреНрд╖рдорддрд╛ рдкрдирд┐ рдЫ:
рдпрд╕ рдЕрдкрд░реЗрд╢рдирдХреЛ рдирддрд┐рдЬрд╛:
рд▓реЗрдЦрдХреЛ рд╕реБрд░реБрдорд╛ рдкрд╣рд┐рд▓реЗ рдиреИ рдЙрд▓реНрд▓реЗрдЦ рдЧрд░рд┐рдПрдХрд╛ рдЕрдиреНрдп рдЙрдкрдпреЛрдЧреА рд╕реБрд╡рд┐рдзрд╛рд╣рд░реВ рдордзреНрдпреЗ рд▓рдЧрд╣рд░реВ рд╣реЗрд░реНрдиреБ рд╣реЛ:
... рд░ рдЪрдпрди рдЧрд░рд┐рдПрдХреЛ рдкреЛрдбрдХреЛ рдХрдиреНрдЯреЗрдирд░ рдХрдиреНрд╕реЛрд▓рдорд╛ рд▓рдЧ рдЗрди рдЧрд░реНрдиреЗ рдкреНрд░рдХрд╛рд░реНрдп:
рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рддрдкрд╛рдИрдВрд▓реЗ рдиреЛрдбрд╣рд░реВрдорд╛ рд╕реАрдорд╛/рдЕрдиреБрд░реЛрдзрд╣рд░реВ рдкрдирд┐ рд╣реЗрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ:
рдирд┐рд╕реНрд╕рдиреНрджреЗрд╣, рдпреА рдкреНрдпрд╛рдирд▓рдХрд╛ рд╕рдмреИ рдХреНрд╖рдорддрд╛рд╣рд░реВ рд╣реЛрдЗрдирдиреН, рддрд░ рдорд▓рд╛рдИ рдЖрд╢рд╛ рдЫ рдХрд┐ рддрдкрд╛рдИрдВрд▓реЗ рд╕рд╛рдорд╛рдиреНрдп рд╡рд┐рдЪрд╛рд░ рдкрд╛рдЙрдиреБрд╣реБрдиреНрдЫред
рдПрдХреАрдХрд░рдг рд░ рдбреНрдпрд╛рд╕рдмреЛрд░реНрдбрдХрд╛ рдмреЗрдлрд╛рдЗрджрд╛рд╣рд░реВ
рд╡рд░реНрдгрди рдЧрд░рд┐рдПрдХреЛ рдПрдХреАрдХрд░рдгрдорд╛ рддреНрдпрд╣рд╛рдБ рдЫреИрди рдкрд╣реБрдБрдЪ рдирд┐рдпрдиреНрддреНрд░рдгред рдпрд╕рдХреЛ рд╕рд╛рде, GitLab рдорд╛ рдкрд╣реБрдБрдЪ рднрдПрдХрд╛ рд╕рдмреИ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд╣рд░реВрд▓реЗ рдбреНрдпрд╛рд╕рдмреЛрд░реНрдбрдорд╛ рдкрд╣реБрдБрдЪ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрдЫрдиреНред рддрд┐рдиреАрд╣рд░реВрд╕рдБрдЧ рдбреНрдпрд╛рд╕рдмреЛрд░реНрдбрдорд╛ рдиреИ рд╕рдорд╛рди рдкрд╣реБрдБрдЪ рдЫ, рдбреНрдпрд╛рд╕рдмреЛрд░реНрдбрдХреЛ рдЕрдзрд┐рдХрд╛рд░рд╕рдБрдЧ рд╕рдореНрдмрдиреНрдзрд┐рдд, рдЬреБрди
рдбреНрдпрд╛рд╕рдмреЛрд░реНрдбрдорд╛ рджреЗрдЦреНрди рд╕рдХрд┐рдиреЗ рдмреЗрдлрд╛рдЗрджрд╛рд╣рд░реВ рдордзреНрдпреЗ, рдо рдирд┐рдореНрдирд▓рд╛рдИ рдиреЛрдЯ рдЧрд░реНрдЫреБ:
- init рдХрдиреНрдЯреЗрдирд░рдХреЛ рдХрдиреНрд╕реЛрд▓рдорд╛ рдкреБрдЧреНрди рдЕрд╕рдореНрднрд╡ рдЫ;
- рдпреЛ рдбрд┐рдкреНрд▓реЛрдпрдореЗрдиреНрдЯ рд░ рд╕реНрдЯреЗрдЯрдлреБрд▓рд╕реЗрдЯрд╣рд░реВ рд╕рдореНрдкрд╛рджрди рдЧрд░реНрди рдЕрд╕рдореНрднрд╡ рдЫ, рдпрджреНрдпрдкрд┐ рдпрд╕рд▓рд╛рдИ рдХреНрд▓рд╕реНрдЯрд░рд░реЛрд▓рдорд╛ рдлрд┐рдХреНрд╕ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ;
- Kubernetes рдХреЛ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдгрд╣рд░реБ рд╕рдВрдЧ рдбреНрдпрд╛рд╕рдмреЛрд░реНрдбрдХреЛ рдЕрдиреБрдХреВрд▓рддрд╛ рд░ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рднрд╡рд┐рд╖реНрдп рдкреНрд░рд╢реНрди рдЙрдард╛рдЙрдБрдЫред
рдкрдЫрд┐рд▓реНрд▓реЛ рд╕рдорд╕реНрдпрд╛ рд╡рд┐рд╢реЗрд╖ рдзреНрдпрд╛рди рдпреЛрдЧреНрдп рдЫред
рдбреНрдпрд╛рд╕рдмреЛрд░реНрдб рд╕реНрдерд┐рддрд┐ рд░ рд╡рд┐рдХрд▓реНрдкрд╣рд░реВ
Kubernetes рд╡рд┐рдЬреНрдЮрдкреНрддрд┐ рд╕рдВрдЧ рдбреНрдпрд╛рд╕рдмреЛрд░реНрдб рдЕрдиреБрдХреВрд▓рддрд╛ рддрд╛рд▓рд┐рдХрд╛, рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рдорд╛ рдкреНрд░рд╕реНрддреБрдд (
рдпреЛ рдмрд╛рд╡рдЬреБрдж, рддреНрдпрд╣рд╛рдБ (рдкрд╣рд┐рд▓реЗ рдиреИ рдЬрдирд╡рд░реА рдорд╛ рдЕрдкрдирд╛рдЗрдПрдХреЛ) рдЫ
рдЕрдиреНрддрдорд╛, рддреНрдпрд╣рд╛рдБ рдбреНрдпрд╛рд╕рдмреЛрд░реНрдб рд╡рд┐рдХрд▓реНрдкрд╣рд░реВ рдЫрдиреНред рдЙрдиреАрд╣рд░реБ рдордзреНрдпреЗ:
-
K8Dash тАФ рдПрдХ рдпреБрд╡рд╛ рдЗрдиреНрдЯрд░рдлреЗрд╕ (рдкрд╣рд┐рд▓реЛ рдХрдорд┐рдЯ рдпрд╕ рд╡рд░реНрд╖рдХреЛ рдорд╛рд░реНрдЪрдорд╛ рдлрд┐рд░реНрддрд╛ рд╣реБрдиреНрдЫ), рдЬрд╕рд▓реЗ рдкрд╣рд┐рд▓реЗ рдиреИ рд░рд╛рдореНрд░реЛ рд╕реБрд╡рд┐рдзрд╛рд╣рд░реВ рдкреНрд░рджрд╛рди рдЧрд░реНрджрдЫ, рдЬрд╕реНрддреИ рдХреНрд▓рд╕реНрдЯрд░рдХреЛ рд╣рд╛рд▓рдХреЛ рд╕реНрдерд┐рддрд┐рдХреЛ рджреГрд╢реНрдп рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рд░ рдпрд╕рдХреЛ рд╡рд╕реНрддреБрд╣рд░реВрдХреЛ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдиред "рд╡рд╛рд╕реНрддрд╡рд┐рдХ-рд╕рдордп рдЗрдиреНрдЯрд░рдлреЗрд╕" рдХреЛ рд░реВрдкрдорд╛ рд░рд╛рдЦрд┐рдПрдХреЛ, рдХрд┐рдирднрдиреЗ рддрдкрд╛рдИрдБрд▓реЗ рдмреНрд░рд╛рдЙрдЬрд░рдорд╛ рдкреГрд╖реНрда рд░рд┐рдлреНрд░реЗрд╕ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдмрд┐рдирд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдбрд╛рдЯрд╛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдкрдорд╛ рдЕрджреНрдпрд╛рд╡рдзрд┐рдХ рдЧрд░реНрджрдЫред -
OpenShift рдХрдиреНрд╕реЛрд▓ - Red Hat OpenShift рдмрд╛рдЯ рдПрдХ рд╡реЗрдм рдЗрдиреНрдЯрд░рдлреЗрд╕, рдЬрд╕рд▓реЗ, рддрдерд╛рдкрд┐, рддрдкрд╛рдЗрдБрдХреЛ рдХреНрд▓рд╕реНрдЯрд░рдорд╛ рдкрд░рд┐рдпреЛрдЬрдирд╛рдХреЛ рдЕрдиреНрдп рд╡рд┐рдХрд╛рд╕рд╣рд░реВ рд▓реНрдпрд╛рдЙрдиреЗрдЫ, рдЬреБрди рд╕рдмреИрдХрд╛ рд▓рд╛рдЧрд┐ рдЙрдкрдпреБрдХреНрдд рдЫреИрдиред -
рдХреБрдмрд░реНрдиреЗрдЯрд░ рд╕рдмреИ рдХреНрд▓рд╕реНрдЯрд░ рд╡рд╕реНрддреБрд╣рд░реВ рд╣реЗрд░реНрди рд╕рдХреНрдиреЗ рдХреНрд╖рдорддрд╛рдХреЛ рд╕рд╛рде рддрд▓реНрд▓реЛ-рд╕реНрддрд░ (рдбреНрдпрд╛рд╕рдмреЛрд░реНрдб рднрдиреНрджрд╛) рдЗрдиреНрдЯрд░рдлреЗрд╕рдХреЛ рд░реВрдкрдорд╛ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░рд┐рдПрдХреЛ рдПрдЙрдЯрд╛ рд░реЛрдЪрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╣реЛред рддрд░, рдпрд╕рдХреЛ рд╡рд┐рдХрд╛рд╕ рд░реЛрдХрд┐рдПрдХреЛ рджреЗрдЦрд┐рдиреНрдЫ ред -
рдкреЛрд▓рд╛рд░рд┐рд╕ - рдЕрд░реНрдХреЛ рджрд┐рди рдорд╛рддреНрд░рдШреЛрд╖рдгрд╛ рдЧрд░рд┐рдпреЛ рдПрдЙрдЯрд╛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдЬрд╕рд▓реЗ рдкреНрдпрд╛рдирд▓рдХреЛ рдХрд╛рд░реНрдпрд╣рд░реВ рд╕рдВрдпреЛрдЬрди рдЧрд░реНрджрдЫ (рдХреНрд▓рд╕реНрдЯрд░рдХреЛ рд╣рд╛рд▓рдХреЛ рдЕрд╡рд╕реНрдерд╛ рджреЗрдЦрд╛рдЙрдБрджрдЫ, рддрд░ рдпрд╕рдХреЛ рд╡рд╕реНрддреБрд╣рд░реВ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди рдЧрд░реНрджреИрди) рд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд "рдЙрддреНрддрдо рдЕрднреНрдпрд╛рд╕рд╣рд░реВрдХреЛ рдкреНрд░рдорд╛рдгреАрдХрд░рдг" (рдпрд╕рдорд╛ рдЪрд▓рд┐рд░рд╣реЗрдХреЛ рдбрд┐рдкреНрд▓реЛрдпрдореЗрдиреНрдЯрд╣рд░реВрдХреЛ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рдирд╣рд░реВрдХреЛ рд╢реБрджреНрдзрддрд╛рдХреЛ рд▓рд╛рдЧрд┐ рдХреНрд▓рд╕реНрдЯрд░ рдЬрд╛рдБрдЪ рдЧрд░реНрджрдЫ)ред
рдирд┐рд╖реНрдХрд░реНрд╖рдХреЛ рд╕рдЯреНрдЯрд╛
рдбреНрдпрд╛рд╕рдмреЛрд░реНрдб рд╣рд╛рдореАрд▓реЗ рд╕реЗрд╡рд╛ рдЧрд░реНрдиреЗ Kubernetes рдХреНрд▓рд╕реНрдЯрд░рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдПрдХ рдорд╛рдирдХ рдЙрдкрдХрд░рдг рд╣реЛред GitLab рд╕рдБрдЧ рдпрд╕рдХреЛ рдПрдХреАрдХрд░рдг рдкрдирд┐ рд╣рд╛рдореНрд░реЛ рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╕реНрдерд╛рдкрдирд╛рдХреЛ рдЕрдВрд╢ рдмрдиреЗрдХреЛ рдЫ, рдХрд┐рдирдХрд┐ рдзреЗрд░реИ рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛рд╣рд░реВ рдпрд╕ рдкреНрдпрд╛рдирд▓рд╕рдБрдЧ рднрдПрдХрд╛ рдХреНрд╖рдорддрд╛рд╣рд░реВрдХреЛ рдмрд╛рд░реЗрдорд╛ рдЙрддреНрд╕рд╛рд╣рд┐рдд рдЫрдиреНред
Kubernetes Dashboard рд╕рдБрдЧ рдЖрд╡рдзрд┐рдХ рд░реВрдкрдорд╛ рдЦреБрд▓рд╛ рд╕реНрд░реЛрдд рд╕рдореБрджрд╛рдпрдмрд╛рдЯ рд╡рд┐рдХрд▓реНрдкрд╣рд░реВ рдЫрдиреН (рд░ рд╣рд╛рдореА рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рд╡рд┐рдЪрд╛рд░ рдЧрд░реНрди рдкрд╛рдЙрдБрджрд╛ рдЦреБрд╕реА рдЫреМрдВ), рддрд░ рдпрд╕ рдЪрд░рдгрдорд╛ рд╣рд╛рдореА рдпреЛ рд╕рдорд╛рдзрд╛рдирдХреЛ рд╕рд╛рде рд░рд╣рдиреНрдЫреМрдВред
PS
рд╣рд╛рдореНрд░реЛ рдмреНрд▓рдЧрдорд╛ рдкрдирд┐ рдкрдвреНрдиреБрд╣реЛрд╕реН:
- ┬л
kubebox рд░ Kubernetes рдХреЛ рд▓рд╛рдЧрд┐ рдЕрдиреНрдп рдЧреЛрд▓рд╛рд╣рд░реВ ┬╗; - ┬л
Kubernetes рд░ GitLab (рд╕рдореАрдХреНрд╖рд╛ рд░ рднрд┐рдбрд┐рдпреЛ рд░рд┐рдкреЛрд░реНрдЯ) рд╕рдВрдЧ рдЙрддреНрддрдо CI/CD рдЕрднреНрдпрд╛рд╕рд╣рд░реВ ┬╗; - ┬л
Dapp рд░ GitLab CI рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ Kubernetes рдорд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВ рдирд┐рд░реНрдорд╛рдг рд░ рддреИрдирд╛рддреА рдЧрд░реНрдиреБрд╣реЛрд╕реН ┬╗; - ┬л
рдЙрддреНрдкрд╛рджрдирдорд╛ рдирд┐рд░рдиреНрддрд░ рдПрдХреАрдХрд░рдг рд░ рд╡рд┐рддрд░рдгрдХреЛ рд▓рд╛рдЧрд┐ GitLab CIред рднрд╛рдЧ рез: рд╣рд╛рдореНрд░реЛ рдкрд╛рдЗрдкрд▓рд╛рдЗрди "ред
рд╕реНрд░реЛрдд: www.habr.com