рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдбреИрд╢рдмреЛрд░реНрдб рдЖрдкрдХреЗ рдЪрд▓ рд░рд╣реЗ рдХреНрд▓рд╕реНрдЯрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╡реАрдирддрдо рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдФрд░ рдиреНрдпреВрдирддрдо рдкреНрд░рдпрд╛рд╕ рдХреЗ рд╕рд╛рде рдЗрд╕реЗ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдореЗрдВ рдЖрд╕рд╛рди рдЙрдкрдХрд░рдг рд╣реИред рдЖрдк рдЗрд╕рдХреА рдФрд░ рднреА рдЕрдзрд┐рдХ рд╕рд░рд╛рд╣рдирд╛ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ рдЬрдм рдЗрди рд╕реБрд╡рд┐рдзрд╛рдУрдВ рддрдХ рдкрд╣реБрдВрдЪ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рди рдХреЗрд╡рд▓ рдкреНрд░рд╢рд╛рд╕рдХреЛрдВ/рдбреЗрд╡рдСрдкреНрд╕ рдЗрдВрдЬреАрдирд┐рдпрд░реЛрдВ рдХреЛ рд╣реЛрддреА рд╣реИ, рдмрд▓реНрдХрд┐ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЛ рднреА рд╣реЛрддреА рд╣реИ рдЬреЛ рдХрдВрд╕реЛрд▓ рдХреЗ рдХрдо рдЖрджреА рд╣реИрдВ рдФрд░/рдпрд╛ рдХреБрдмреЗрдХреНрдЯрд▓ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХреА рд╕рднреА рдЬрдЯрд┐рд▓рддрд╛рдУрдВ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХрд╛ рдЗрд░рд╛рджрд╛ рдирд╣реАрдВ рд░рдЦрддреЗ рд╣реИрдВред рдЕрдиреНрдп рдЙрдкрдпреЛрдЧрд┐рддрд╛рдПрдБред рдпрд╣ рд╣рдорд╛рд░реЗ рд╕рд╛рде рд╣реБрдЖ: рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рд╡реЗрдм рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рддрдХ рддреНрд╡рд░рд┐рдд рдкрд╣реБрдВрдЪ рдЪрд╛рд╣рддреЗ рдереЗ, рдФрд░ рдЪреВрдВрдХрд┐ рд╣рдо GitLab рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╕рдорд╛рдзрд╛рди рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ рдЖрдпрд╛ред
рдРрд╕рд╛ рдХреНрдпреЛрдВ рд╣реИ?
рдбрд┐рдмрдЧрд┐рдВрдЧ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдбрд╛рдпрд░реЗрдХреНрдЯ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ K8s рдбреИрд╢рдмреЛрд░реНрдб рдЬреИрд╕реЗ рдЯреВрд▓ рдореЗрдВ рд░реБрдЪрд┐ рд╣реЛ рд╕рдХрддреА рд╣реИред рдХрднреА-рдХрднреА рдЖрдк рд▓реЙрдЧ рдФрд░ рд╕рдВрд╕рд╛рдзрди рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдФрд░ рдХрднреА-рдХрднреА рдкреЙрдбреНрд╕ рдХреЛ рдорд╛рд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдкрд░рд┐рдирд┐рдпреЛрдЬрди/рд╕реНрдЯреЗрдЯрдлреБрд▓рд╕реЗрдЯреНрд╕ рдХреЛ рд╕реНрдХреЗрд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдХрдВрдЯреЗрдирд░ рдХрдВрд╕реЛрд▓ рдкрд░ рднреА рдЬрд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ (рдЗрд╕рдХреЗ рд▓рд┐рдП рдЕрдиреБрд░реЛрдз рднреА рд╣реИрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдПрдХ рдФрд░ рддрд░реАрдХрд╛ рд╣реИ - рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ)
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдкреНрд░рдмрдВрдзрдХреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдордиреЛрд╡реИрдЬреНрдЮрд╛рдирд┐рдХ рдХреНрд╖рдг рд╣реЛрддрд╛ рд╣реИ рдЬрдм рд╡реЗ рдХреНрд▓рд╕реНрдЯрд░ рдХреЛ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ - рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ "рд╕рдм рдХреБрдЫ рд╣рд░рд╛ рд╣реИ", рдФрд░ рдЗрд╕ рддрд░рд╣ рдЦреБрдж рдХреЛ рдЖрд╢реНрд╡рд╕реНрдд рдХрд░реЗрдВ рдХрд┐ "рд╕рдм рдХреБрдЫ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ" (рдЬреЛ, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдмрд╣реБрдд рд╕рд╛рдкреЗрдХреНрд╖ рд╣реИ... рд▓реЗрдХрд┐рди рдпрд╣ рд▓реЗрдЦ рдХреЗ рджрд╛рдпрд░реЗ рд╕реЗ рдмрд╛рд╣рд░ рд╣реИ)ред
рдПрдХ рдорд╛рдирдХ рд╕реАрдЖрдИ рдкреНрд░рдгрд╛рд▓реА рдХреЗ рд░реВрдк рдореЗрдВ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╣реИ
рдореИрдВ рдпрд╣ рднреА рдиреЛрдЯ рдХрд░реВрдВрдЧрд╛ рдХрд┐ рд╣рдо рдПрдирдЬреАрдЖрдИрдПрдирдПрдХреНрд╕ рдЗрдирдЧреНрд░реЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдпрджрд┐ рдЖрдк рджреВрд╕рд░реЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ
рдПрдХреАрдХрд░рдг рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣рд╛ рд╣реВрдБ
рдбреИрд╢рдмреЛрд░реНрдб рд╕реНрдерд╛рдкрдирд╛
рдзреНрдпрд╛рди: рдпрджрд┐ рдЖрдк рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдЪрд░рдгреЛрдВ рдХреЛ рджреЛрд╣рд░рд╛рдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ, рддреЛ - рдЕрдирд╛рд╡рд╢реНрдпрдХ рдкрд░рд┐рдЪрд╛рд▓рди рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП - рдкрд╣рд▓реЗ рдЕрдЧрд▓реЗ рдЙрдкрд╢реАрд░реНрд╖рдХ рдХреЛ рдкрдврд╝реЗрдВред
рдЪреВрдБрдХрд┐ рд╣рдо рдЗрд╕ рдПрдХреАрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрдИ рд╕рдВрд╕реНрдерд╛рдкрдиреЛрдВ рдореЗрдВ рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣рдордиреЗ рдЗрд╕рдХреА рд╕реНрдерд╛рдкрдирд╛ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░ рджрд┐рдпрд╛ рд╣реИред рдЗрд╕рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╕реНрд░реЛрддреЛрдВ рдХреЛ рдЗрд╕рдореЗрдВ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ
рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреНрд▓рд╕реНрдЯрд░ рдореЗрдВ рдбреИрд╢рдмреЛрд░реНрдб рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреА рд╣реИ рдФрд░ рдЗрд╕реЗ 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: рдПрдбрдорд┐рди рдПрд░рд┐рдпрд╛ тЖТ рдПрдкреНрд▓рд┐рдХреЗрд╢рди - рдкрд░ рдЬрд╛рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рднрд╡рд┐рд╖реНрдп рдХреЗ рдкреИрдирд▓ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛ред рдЖрдЗрдП рдЗрд╕реЗ "рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдбреИрд╢рдмреЛрд░реНрдб" рдХрд╣реЗрдВ:
рдЗрд╕реЗ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, 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 рд╕реНрд╡рдпрдВ рд╣рдореЗрдВ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ...
рдПрдХ рдкреИрдЪ рдХреЗ рд╕рд╛рде рдЕрдкрдиреА рд╕реНрд╡рдпрдВ рдХреА 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
рдЪреМрдХрд╕ рдкрд╛рдардХ рджреЗрдЦреЗрдЧрд╛ рдХрд┐ рдЙрдкрд░реЛрдХреНрдд рд▓рдВрдмреА рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╕реЗ рдмреЗрд╕ 64 рд╣реИ:
{"registry.company.com": {
"username": "oauth2",
"password": "PASSWORD",
"auth": "AUTH_TOKEN",
"email": "[email protected]"
}
}
рдпрд╣ GitLab рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдбреЗрдЯрд╛ рд╣реИ, рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдХреЛрдб рдЫрд╡рд┐ рдХреЛ рд░рдЬрд┐рд╕реНрдЯреНрд░реА рд╕реЗ рдЦреАрдВрдЪ рд▓реЗрдЧрд╛ред
рд╕рдм рдХреБрдЫ рд╣реЛ рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдк рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рд╡рд░реНрддрдорд╛рди (рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ) рдбреИрд╢рдмреЛрд░реНрдб рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдХреЛ рд╣рдЯрд╛ рд╕рдХрддреЗ рд╣реИрдВ:
$ ./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 рддрдХ рдкрд╣реБрдВрдЪ рд░рдЦрдиреЗ рд╡рд╛рд▓реЗ рд╕рднреА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдбреИрд╢рдмреЛрд░реНрдб рддрдХ рдкрд╣реБрдВрдЪ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВред рдбреИрд╢рдмреЛрд░реНрдб рдореЗрдВ рдЙрдирдХреЗ рдкрд╛рд╕ рд╡рд╣реА рдкрд╣реБрдВрдЪ рд╣реИ, рдЬреЛ рдбреИрд╢рдмреЛрд░реНрдб рдХреЗ рдЕрдзрд┐рдХрд╛рд░реЛрдВ рдХреЗ рдЕрдиреБрд░реВрдк рд╣реИ
рдбреИрд╢рдмреЛрд░реНрдб рдореЗрдВ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рдХрдорд┐рдпреЛрдВ рдХреЗ рдмреАрдЪ, рдореИрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрд░ рдзреНрдпрд╛рди рджреЗрддрд╛ рд╣реВрдВ:
- init рдХрдВрдЯреЗрдирд░ рдХреЗ рдХрдВрд╕реЛрд▓ рдореЗрдВ рдЬрд╛рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИ;
- рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдФрд░ рд╕реНрдЯреЗрдЯрдлреБрд▓рд╕реЗрдЯ рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИ, рд╣рд╛рд▓рд╛рдБрдХрд┐ рдЗрд╕реЗ ClusterRole рдореЗрдВ рдареАрдХ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ;
- рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдХреЗ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рдбреИрд╢рдмреЛрд░реНрдб рдХреА рдЕрдиреБрдХреВрд▓рддрд╛ рдФрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рднрд╡рд┐рд╖реНрдп рдкрд░ рд╕рд╡рд╛рд▓ рдЙрдарддреЗ рд╣реИрдВред
рдЖрдЦрд┐рд░реА рд╕рдорд╕реНрдпрд╛ рд╡рд┐рд╢реЗрд╖ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИред
рдбреИрд╢рдмреЛрд░реНрдб рд╕реНрдерд┐рддрд┐ рдФрд░ рд╡рд┐рдХрд▓реНрдк
рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рд░рд┐рд▓реАрдЬрд╝ рдХреЗ рд╕рд╛рде рдбреИрд╢рдмреЛрд░реНрдб рд╕рдВрдЧрддрддрд╛ рддрд╛рд▓рд┐рдХрд╛, рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХреА рдЧрдИ рд╣реИ (
рдЗрд╕рдХреЗ рдмрд╛рд╡рдЬреВрдж, (рдЬрдирд╡рд░реА рдореЗрдВ рдкрд╣рд▓реЗ рд╣реА рдЕрдкрдирд╛рдпрд╛ рдЬрд╛ рдЪреБрдХрд╛ рд╣реИ)
рдЕрдВрддрддрдГ, рдбреИрд╢рдмреЛрд░реНрдб рдХреЗ рд╡рд┐рдХрд▓реНрдк рдореМрдЬреВрдж рд╣реИрдВред рдЙрдирдореЗрдВ рд╕реЗ:
-
K8рдбреИрд╢ - рдПрдХ рдпреБрд╡рд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ (рдкрд╣рд▓рд╛ рдХрдорд┐рдЯ рдЗрд╕ рд╕рд╛рд▓ рдорд╛рд░реНрдЪ рдореЗрдВ рд╣реБрдЖ рдерд╛), рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЕрдЪреНрдЫреА рд╕реБрд╡рд┐рдзрд╛рдПрдБ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдЬреИрд╕реЗ рдХреНрд▓рд╕реНрдЯрд░ рдХреА рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рдФрд░ рдЙрд╕рдХреЗ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдкреНрд░рдмрдВрдзрди рдХрд╛ рджреГрд╢реНрдп рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ред "рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдордп рдЗрдВрдЯрд░рдлрд╝реЗрд╕" рдХреЗ рд░реВрдк рдореЗрдВ рд╕реНрдерд╛рдкрд┐рдд, рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХреЛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдкреГрд╖реНрда рдХреЛ рддрд╛рдЬрд╝рд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдмрд┐рдирд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдбреЗрдЯрд╛ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЕрдкрдбреЗрдЯ рдХрд░рддрд╛ рд╣реИред -
рдУрдкрдирд╢рд┐рдлреНрдЯ рдХрдВрд╕реЛрд▓ - Red Hat OpenShift рдХрд╛ рдПрдХ рд╡реЗрдм рдЗрдВрдЯрд░рдлрд╝реЗрд╕, рдЬреЛ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рдЕрдиреНрдп рд╡рд┐рдХрд╛рд╕реЛрдВ рдХреЛ рдЖрдкрдХреЗ рдХреНрд▓рд╕реНрдЯрд░ рдореЗрдВ рд▓рд╛рдПрдЧрд╛, рдЬреЛ рд╕рднреА рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рдирд╣реАрдВ рд╣реИред -
рдХреБрдмреЗрд░рдиреЗрдЯрд░ рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╣реИ, рдЬреЛ рд╕рднреА рдХреНрд▓рд╕реНрдЯрд░ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЛ рджреЗрдЦрдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреЗ рд╕рд╛рде рдирд┐рдЪрд▓реЗ рд╕реНрддрд░ (рдбреИрд╢рдмреЛрд░реНрдб рдХреА рддреБрд▓рдирд╛ рдореЗрдВ) рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рд░реВрдк рдореЗрдВ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдРрд╕рд╛ рд▓рдЧ рд░рд╣рд╛ рд╣реИ рдХрд┐ рдЗрд╕рдХрд╛ рд╡рд┐рдХрд╛рд╕ рд░реБрдХ рдЧрдпрд╛ рд╣реИред -
рдкреЛрд▓рд░рд┐рд╕ - рдЕрднреА рджреВрд╕рд░реЗ рджрд┐рдирдХреА рдШреЛрд╖рдгрд╛ рдХреА рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдЬреЛ рдПрдХ рдкреИрдирд▓ рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝рддреА рд╣реИ (рдХреНрд▓рд╕реНрдЯрд░ рдХреА рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рджрд┐рдЦрд╛рддреА рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреА рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдирд╣реАрдВ рдХрд░рддреА рд╣реИ) рдФрд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд "рд╕рд░реНрд╡реЛрддреНрддрдо рдкреНрд░рдерд╛рдУрдВ рдХрд╛ рд╕рддреНрдпрд╛рдкрди" (рдХреНрд▓рд╕реНрдЯрд░ рдореЗрдВ рдЪрд▓ рд░рд╣реЗ рддреИрдирд╛рддреА рдХреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреА рд╢реБрджреНрдзрддрд╛ рдХреА рдЬрд╛рдВрдЪ рдХрд░рддрд╛ рд╣реИ)ред
рдирд┐рд╖реНрдХрд░реНрд╖ рдХреЗ рдмрдЬрд╛рдп
рдбреИрд╢рдмреЛрд░реНрдб рд╣рдорд╛рд░реЗ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдХреБрдмреЗрд░рдиреЗрдЯ рдХреНрд▓рд╕реНрдЯрд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдорд╛рдирдХ рдЙрдкрдХрд░рдг рд╣реИред GitLab рдХреЗ рд╕рд╛рде рдЗрд╕рдХрд╛ рдПрдХреАрдХрд░рдг рднреА рд╣рдорд╛рд░реЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдмрди рдЧрдпрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдХрдИ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдЗрд╕ рдкреИрдирд▓ рдХреЗ рд╕рд╛рде рдореМрдЬреВрдж рдХреНрд╖рдорддрд╛рдУрдВ рдХреЛ рд▓реЗрдХрд░ рдЙрддреНрд╕рд╛рд╣рд┐рдд рд╣реИрдВред
рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдбреИрд╢рдмреЛрд░реНрдб рдореЗрдВ рд╕рдордп-рд╕рдордп рдкрд░ рдУрдкрди рд╕реЛрд░реНрд╕ рд╕рдореБрджрд╛рдп рд╕реЗ рд╡рд┐рдХрд▓реНрдк рдЖрддреЗ рд╣реИрдВ (рдФрд░ рд╣рдо рдЙрди рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдХреЗ рдЦреБрд╢ рд╣реИрдВ), рд▓реЗрдХрд┐рди рдЗрд╕ рд╕реНрддрд░ рдкрд░ рд╣рдо рдЗрд╕ рд╕рдорд╛рдзрд╛рди рдХреЗ рд╕рд╛рде рдмрдиреЗ рд╣реБрдП рд╣реИрдВред
рдкреБрдирд╢реНрдЪ
рд╣рдорд╛рд░реЗ рдмреНрд▓реЙрдЧ рдкрд░ рднреА рдкрдврд╝реЗрдВ:
- ┬л
рдХреНрдпреВрдмрдмреЙрдХреНрд╕ рдФрд░ рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдХреЗ рд▓рд┐рдП рдЕрдиреНрдп рдЧреЛрд▓реЗ "; - ┬л
рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдФрд░ рдЧрд┐рдЯрд▓реИрдм рдХреЗ рд╕рд╛рде рд╕рд░реНрд╡реЛрддреНрддрдо рд╕реАрдЖрдИ/рд╕реАрдбреА рдЕрднреНрдпрд╛рд╕ (рд╕рдореАрдХреНрд╖рд╛ рдФрд░ рд╡реАрдбрд┐рдпреЛ рд░рд┐рдкреЛрд░реНрдЯ) "; - ┬л
Dapp рдФрд░ GitLab CI рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдореЗрдВ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдПрдВ рдФрд░ рддреИрдирд╛рдд рдХрд░реЗрдВ "; - ┬л
рдЙрддреНрдкрд╛рджрди рдореЗрдВ рдирд┐рд░рдВрддрд░ рдПрдХреАрдХрд░рдг рдФрд░ рд╡рд┐рддрд░рдг рдХреЗ рд▓рд┐рдП GitLab CIред рднрд╛рдЧ 1: рд╣рдорд╛рд░реА рдкрд╛рдЗрдкрд▓рд╛рдЗрди '.
рд╕реНрд░реЛрдд: www.habr.com