ืฉื™ืœื•ื‘ ืฉืœ ืžืฉืชืžืฉื™ Kubernetes Dashboard ื•- GitLab

ืฉื™ืœื•ื‘ ืฉืœ ืžืฉืชืžืฉื™ Kubernetes Dashboard ื•- GitLab

Kubernetes Dashboard ื”ื•ื ื›ืœื™ ืงืœ ืœืฉื™ืžื•ืฉ ืœืงื‘ืœืช ืžื™ื“ืข ืขื“ื›ื ื™ ืขืœ ื”ืืฉื›ื•ืœ ื”ืจืฅ ืฉืœืš ื•ื ื™ื”ื•ืœื• ื‘ืžื™ื ื™ืžื•ื ืžืืžืฅ. ืืชื” ืžืชื—ื™ืœ ืœื”ืขืจื™ืš ืืช ื–ื” ืืคื™ืœื• ื™ื•ืชืจ ื›ืืฉืจ ื’ื™ืฉื” ืœื™ื›ื•ืœื•ืช ื”ืืœื” ื ื—ื•ืฆื” ืœื ืจืง ืขืœ ื™ื“ื™ ืžื ื”ืœื™ื/ืžื”ื ื“ืกื™ DevOps, ืืœื ื’ื ืขืœ ื™ื“ื™ ืืœื” ืฉืคื—ื•ืช ืจื’ื™ืœื™ื ืœืงื•ื ืกื•ืœื” ื•/ืื• ืœื ืžืชื›ื•ื•ื ื™ื ืœื”ืชืžื•ื“ื“ ืขื ื›ืœ ื”ืžื•ืจื›ื‘ื•ื™ื•ืช ืฉืœ ืื™ื ื˜ืจืืงืฆื™ื” ืขื kubectl ื• ื›ืœื™ ืขื–ืจ ืื—ืจื™ื. ื–ื” ืงืจื” ืืฆืœื ื•: ื”ืžืคืชื—ื™ื ืจืฆื• ื’ื™ืฉื” ืžื”ื™ืจื” ืœืžืžืฉืง ื”ืื™ื ื˜ืจื ื˜ ืฉืœ Kubernetes, ื•ืžื›ื™ื•ื•ืŸ ืฉืื ื• ืžืฉืชืžืฉื™ื ื‘-GitLab, ื”ืคืชืจื•ืŸ ื‘ื ื‘ืื•ืคืŸ ื˜ื‘ืขื™.

ืœืžื” ื–ื”?

ืžืคืชื—ื™ื ื™ืฉื™ืจื™ื ืขืฉื•ื™ื™ื ืœื”ืชืขื ื™ื™ืŸ ื‘ื›ืœื™ ื›ืžื• K8s Dashboard ืขื‘ื•ืจ ืžืฉื™ืžื•ืช ื ื™ืคื•ื™ ื‘ืื’ื™ื. ืœืคืขืžื™ื ืืชื” ืจื•ืฆื” ืœื”ืฆื™ื’ ื™ื•ืžื ื™ื ื•ืžืฉืื‘ื™ื, ื•ืœืคืขืžื™ื ืœื”ืจื•ื’ ืคื•ื“ื™ื, ืœืฉื ื•ืช ืืช ืงื ื” ื”ืžื™ื“ื” ืฉืœ Deployments/StatefulSets, ื•ืืคื™ืœื• ืœืœื›ืช ืœืงื•ื ืกื•ืœืช ื”ืงื•ื ื˜ื™ื™ื ืจ (ื™ืฉ ื’ื ื‘ืงืฉื•ืช ืฉืขื‘ื•ืจืŸ, ืขื ื–ืืช, ื™ืฉ ื“ืจืš ืื—ืจืช - ืœืžืฉืœ, ื“ืจืš kubectl-debug).

ื‘ื ื•ืกืฃ, ื™ืฉ ืจื’ืข ืคืกื™ื›ื•ืœื•ื’ื™ ืœืžื ื”ืœื™ื ืฉื‘ื• ื”ื ืจื•ืฆื™ื ืœื”ืกืชื›ืœ ืขืœ ื”ืืฉื›ื•ืœ - ืœืจืื•ืช ืฉ"ื”ื›ืœ ื™ืจื•ืง", ื•ื‘ื›ืš ืœื”ืจื’ื™ืข ืืช ืขืฆืžื ืฉ"ื”ื›ืœ ืขื•ื‘ื“" (ืžื” ืฉื›ืžื•ื‘ืŸ ืžืื•ื“ ื™ื—ืกื™... ืื‘ืœ ื–ื” ืžืขื‘ืจ ืœืชื—ื•ื ื”ืžืืžืจ).

ื›ืžืขืจื›ืช CI ืกื˜ื ื“ืจื˜ื™ืช ื™ืฉ ืœื ื• ื—ืœ GitLab: ื’ื ื›ืœ ื”ืžืคืชื—ื™ื ืžืฉืชืžืฉื™ื ื‘ื•. ืœื›ืŸ, ื›ื“ื™ ืœืกืคืง ืœื”ื ื’ื™ืฉื”, ื”ื™ื” ื”ื’ื™ื•ื ื™ ืœืฉืœื‘ ืืช Dashboard ืขื ื—ืฉื‘ื•ื ื•ืช GitLab.

ืืฆื™ื™ืŸ ื’ื ืฉืื ื• ืžืฉืชืžืฉื™ื ื‘-NGINX Ingress. ืื ืืชื” ืขื•ื‘ื“ ืขื ืื—ืจื™ื ืคืชืจื•ื ื•ืช ื›ื ื™ืกื”, ืชืฆื˜ืจืš ืœืžืฆื•ื ื‘ืื•ืคืŸ ืขืฆืžืื™ ืื ืœื•ื’ื™ื ืฉืœ ื”ืขืจื•ืช ืœืฆื•ืจืš ื”ืจืฉืื”.

ืžื ืกื” ืื™ื ื˜ื’ืจืฆื™ื”

ื”ืชืงื ืช ืœื•ื— ืžื—ื•ื•ื ื™ื

ืชืฉื•ืžืช ืœื‘: ืื ืืชื” ืžืชื›ื•ื•ืŸ ืœื—ื–ื•ืจ ืขืœ ื”ืฉืœื‘ื™ื ืฉืœื”ืœืŸ, ืื– - ื›ื“ื™ ืœืžื ื•ืข ืคืขื•ืœื•ืช ืžื™ื•ืชืจื•ืช - ืงืจื ืชื—ื™ืœื” ืœื›ื•ืชืจืช ื”ืžืฉื ื” ื”ื‘ืื”.

ืžื›ื™ื•ื•ืŸ ืฉืื ื• ืžืฉืชืžืฉื™ื ื‘ืื™ื ื˜ื’ืจืฆื™ื” ื–ื• ื‘ื”ืชืงื ื•ืช ืจื‘ื•ืช, ื‘ื™ืฆืขื ื• ืืช ื”ื”ืชืงื ื” ืฉืœื• ืื•ื˜ื•ืžื˜ื™ืช. ื”ืžืงื•ืจื•ืช ื”ื“ืจื•ืฉื™ื ืœื›ืš ืžืชืคืจืกืžื™ื ื‘ ืžืื’ืจ GitHub ืžื™ื•ื—ื“. ื”ื ืžื‘ื•ืกืกื™ื ืขืœ ืชืฆื•ืจื•ืช YAML ืฉืฉื•ื ื• ืžืขื˜ ืž ืžืื’ืจ ืœื•ื— ื”ืžื—ื•ื•ื ื™ื ื”ืจืฉืžื™, ื›ืžื• ื’ื ืกืงืจื™ืคื˜ Bash ืœืคืจื™ืกื” ืžื”ื™ืจื”.

ื”ืกืงืจื™ืคื˜ ืžืชืงื™ืŸ ืืช Dashboard ื‘ืืฉื›ื•ืœ ื•ืžื’ื“ื™ืจ ืื•ืชื• ืœืื™ื ื˜ื’ืจืฆื™ื” ืขื 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 Dashboard ื•- GitLab

ื›ืชื•ืฆืื” ืžื”ื•ืกืคืชื•, GitLab ืชืกืคืง ืืช ื”-hashs:

ืฉื™ืœื•ื‘ ืฉืœ ืžืฉืชืžืฉื™ Kubernetes Dashboard ื•- 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

ื”ืงื•ืจื ื”ืงืฉื•ื‘ ื™ืจืื” ืฉื”ืžื—ืจื•ื–ืช ื”ืืจื•ื›ื” ืœืžืขืœื” ื”ื™ื 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 Dashboard ื•- GitLab

ืœืื—ืจ ืœื—ื™ืฆื” ืขืœื™ื•, GitLab ื™ืงื‘ืœ ืืช ืคื ื™ื ื•, ื•ื™ืฆื™ืข ืœื”ื™ื›ื ืก ืœื“ืฃ ื”ืจื’ื™ืœ ืฉืœื• (ื›ืžื•ื‘ืŸ, ืื ืœื ื ื›ื ืกื ื• ืœืฉื ื‘ืขื‘ืจ):

ืฉื™ืœื•ื‘ ืฉืœ ืžืฉืชืžืฉื™ Kubernetes Dashboard ื•- GitLab

ืื ื—ื ื• ื ื›ื ืกื™ื ืขื ืื™ืฉื•ืจื™ GitLab - ื•ื”ื›ืœ ื ืขืฉื”:

ืฉื™ืœื•ื‘ ืฉืœ ืžืฉืชืžืฉื™ Kubernetes Dashboard ื•- GitLab

ืขืœ ืชื›ื•ื ื•ืช ืœื•ื— ื”ืžื—ื•ื•ื ื™ื

ืื ืืชื” ืžืคืชื— ืฉืœื ืขื‘ื“ ืขื Kubernetes ื‘ืขื‘ืจ, ืื• ืฉืคืฉื•ื˜ ืžืกื™ื‘ื” ื›ืœืฉื”ื™ ืœื ื ืชืงืœืช ื‘-Dashboard ื‘ืขื‘ืจ, ืื ื™ ืื“ื’ื™ื ื›ืžื” ืžื”ื™ื›ื•ืœื•ืช ืฉืœื•.

ืจืืฉื™ืช, ืืชื” ื™ื›ื•ืœ ืœืจืื•ืช ืฉ"ื”ื›ืœ ื™ืจื•ืง":

ืฉื™ืœื•ื‘ ืฉืœ ืžืฉืชืžืฉื™ Kubernetes Dashboard ื•- GitLab

ื ืชื•ื ื™ื ืžืคื•ืจื˜ื™ื ื™ื•ืชืจ ื–ืžื™ื ื™ื ื’ื ืขื‘ื•ืจ ืชืจืžื™ืœื™ื, ื›ื’ื•ืŸ ืžืฉืชื ื™ ืกื‘ื™ื‘ื”, ืชืžื•ื ื” ืฉื”ื•ืจื“ื”, ืืจื’ื•ืžื ื˜ื™ื ืฉืœ ื”ืฉืงื” ื•ืžืฆื‘ื:

ืฉื™ืœื•ื‘ ืฉืœ ืžืฉืชืžืฉื™ Kubernetes Dashboard ื•- GitLab

ืœืคืจื™ืกื•ืช ื™ืฉ ืกื˜ื˜ื•ืกื™ื ื’ืœื•ื™ื™ื:

ืฉื™ืœื•ื‘ ืฉืœ ืžืฉืชืžืฉื™ Kubernetes Dashboard ื•- GitLab

...ื•ืคืจื˜ื™ื ื ื•ืกืคื™ื:

ืฉื™ืœื•ื‘ ืฉืœ ืžืฉืชืžืฉื™ Kubernetes Dashboard ื•- GitLab

... ื•ื™ืฉ ื’ื ืืช ื”ื™ื›ื•ืœืช ืœืฉื ื•ืช ืืช ืงื ื” ื”ืžื™ื“ื” ืฉืœ ื”ืคืจื™ืกื”:

ืฉื™ืœื•ื‘ ืฉืœ ืžืฉืชืžืฉื™ Kubernetes Dashboard ื•- GitLab

ื”ืชื•ืฆืื” ืฉืœ ืคืขื•ืœื” ื–ื•:

ืฉื™ืœื•ื‘ ืฉืœ ืžืฉืชืžืฉื™ Kubernetes Dashboard ื•- GitLab

ื‘ื™ืŸ ืฉืืจ ื”ืชื›ื•ื ื•ืช ื”ืฉื™ืžื•ืฉื™ื•ืช ืฉื›ื‘ืจ ื”ื•ื–ื›ืจื• ื‘ืชื—ื™ืœืช ื”ืžืืžืจ ื”ื•ื ืฆืคื™ื™ื” ื‘ื™ื•ืžื ื™ื:

ืฉื™ืœื•ื‘ ืฉืœ ืžืฉืชืžืฉื™ Kubernetes Dashboard ื•- GitLab

... ื•ื”ืคื•ื ืงืฆื™ื” ืœื›ื ื™ืกื” ืœืงื•ื ืกื•ืœืช ื”ืžื›ื•ืœื” ืฉืœ ื”ืคื•ื“ ืฉื ื‘ื—ืจ:

ืฉื™ืœื•ื‘ ืฉืœ ืžืฉืชืžืฉื™ Kubernetes Dashboard ื•- GitLab

ืœื“ื•ื’ืžื”, ืืชื” ื™ื›ื•ืœ ื’ื ืœื”ืกืชื›ืœ ืขืœ ื”ืžื’ื‘ืœื•ืช/ื‘ืงืฉื•ืช ืขืœ ืฆืžืชื™ื:

ืฉื™ืœื•ื‘ ืฉืœ ืžืฉืชืžืฉื™ Kubernetes Dashboard ื•- GitLab

ื›ืžื•ื‘ืŸ, ืืœื• ืœื ื›ืœ ื”ื™ื›ื•ืœื•ืช ืฉืœ ื”ืคืื ืœ, ืื‘ืœ ืื ื™ ืžืงื•ื•ื” ืฉื”ื‘ื ืชื ืืช ื”ืจืขื™ื•ืŸ ื”ื›ืœืœื™.

ื—ืกืจื•ื ื•ืช ืฉืœ ืื™ื ื˜ื’ืจืฆื™ื” ื•ืœื•ื— ืžื—ื•ื•ื ื™ื

ื‘ืื™ื ื˜ื’ืจืฆื™ื” ื”ืžืชื•ืืจืช ืื™ืŸ ื‘ืงืจืช ื’ื™ืฉื”. ื‘ืขื–ืจืชื•, ื›ืœ ื”ืžืฉืชืžืฉื™ื ืขื ื’ื™ืฉื” ื›ืœืฉื”ื™ ืœ-GitLab ืžืงื‘ืœื™ื ื’ื™ืฉื” ืœืœื•ื— ื”ืžื—ื•ื•ื ื™ื. ื™ืฉ ืœื”ื ืืช ืื•ืชื” ื’ื™ืฉื” ื‘ืœื•ื— ื”ืžื—ื•ื•ื ื™ื ืขืฆืžื•, ื”ืชื•ืืžืช ืืช ื”ื–ื›ื•ื™ื•ืช ืฉืœ ืœื•ื— ื”ืžื—ื•ื•ื ื™ื ืขืฆืžื•, ืืฉืจ ืžื•ื’ื“ืจื™ื ื‘-RBAC. ื‘ืจื•ืจ ืฉื–ื” ืœื ืžืชืื™ื ืœื›ืœ ืื—ื“, ืื‘ืœ ื‘ืžืงืจื” ืฉืœื ื• ื”ืชื‘ืจืจ ืฉื–ื” ืžืกืคื™ืง.

ื‘ื™ืŸ ื”ื—ืกืจื•ื ื•ืช ื”ื‘ื•ืœื˜ื™ื ื‘ืœื•ื— ื”ืžื—ื•ื•ื ื™ื ืขืฆืžื•, ืื ื™ ืžืฆื™ื™ืŸ ืืช ื”ื“ื‘ืจื™ื ื”ื‘ืื™ื:

  • ืื™ ืืคืฉืจ ืœื”ื™ื›ื ืก ืœืงื•ื ืกื•ืœื” ืฉืœ ืžื™ื›ืœ ื”ืื™ื ื™ื˜;
  • ืื™ ืืคืฉืจ ืœืขืจื•ืš Deployments ื•-StatefulSets, ืœืžืจื•ืช ืฉื ื™ืชืŸ ืœืชืงืŸ ื–ืืช ื‘-ClusterRole;
  • ื”ืชืื™ืžื•ืช ืฉืœ ืœื•ื— ื”ืžื—ื•ื•ื ื™ื ืœื’ืจืกืื•ืช ื”ืื—ืจื•ื ื•ืช ืฉืœ Kubernetes ื•ืขืชื™ื“ ื”ืคืจื•ื™ืงื˜ ืžืขืœื” ืฉืืœื•ืช.

ื”ื‘ืขื™ื” ื”ืื—ืจื•ื ื” ืจืื•ื™ื” ืœืชืฉื•ืžืช ืœื‘ ืžื™ื•ื—ื“ืช.

ืžืฆื‘ ืœื•ื— ื”ืžื—ื•ื•ื ื™ื ื•ื—ืœื•ืคื•ืช

ื˜ื‘ืœืช ืชืื™ืžื•ืช ืœืœื•ื— ื”ืžื—ื•ื•ื ื™ื ืขื ืžื”ื“ื•ืจื•ืช Kubernetes, ื”ืžื•ืฆื’ืช ื‘ื’ืจืกื” ื”ืื—ืจื•ื ื” ืฉืœ ื”ืคืจื•ื™ืงื˜ (v1.10.1), ืœื ืžืื•ื“ ืฉืžื—:

ืฉื™ืœื•ื‘ ืฉืœ ืžืฉืชืžืฉื™ Kubernetes Dashboard ื•- GitLab

ืœืžืจื•ืช ื–ืืช, ื™ืฉ (ื›ื‘ืจ ืื•ืžืฆื” ื‘ื™ื ื•ืืจ) ื™ื—ืกื™ ืฆื™ื‘ื•ืจ ืžืก '3476, ืืฉืจ ืžื›ืจื™ื–ื” ืขืœ ืชืžื™ื›ื” ื‘-K8s 1.13. ื‘ื ื•ืกืฃ, ื‘ื™ืŸ ืกื•ื’ื™ื•ืช ื”ืคืจื•ื™ืงื˜ ื ื™ืชืŸ ืœืžืฆื•ื ื”ืคื ื™ื•ืช ืœืžืฉืชืžืฉื™ื ื”ืขื•ื‘ื“ื™ื ืขื ื”ืคืื ืœ ื‘-K8s 1.14. ืกื•ืฃ ื›ืœ ืกื•ืฃ, ืžืชื—ื™ื™ื‘ ืืœ ื‘ืกื™ืก ื”ืงื•ื“ ืฉืœ ื”ืคืจื•ื™ืงื˜ ืœื ืขื•ืฆืจื™ื. ืื– (ืœืคื—ื•ืช!) ื”ืžืฆื‘ ื‘ืคื•ืขืœ ืฉืœ ื”ืคืจื•ื™ืงื˜ ืื™ื ื• ื’ืจื•ืข ื›ืคื™ ืฉื”ื•ื ืขืฉื•ื™ ืœื”ื™ืจืื•ืช ืœืจืืฉื•ื ื” ืžื˜ื‘ืœืช ื”ืชืื™ืžื•ืช ื”ืจืฉืžื™ืช.

ืœื‘ืกื•ืฃ, ื™ืฉ ื—ืœื•ืคื•ืช ืœืœื•ื— ื”ืžื—ื•ื•ื ื™ื. ื‘ื™ื ื™ื”ื:

  1. K8Dash - ืžืžืฉืง ืฆืขื™ืจ (ื”ื”ืชื—ื™ื™ื‘ื•ื™ื•ืช ื”ืจืืฉื•ื ื•ืช ืžืชื•ืืจื›ื•ืช ืœืžืจืฅ ื”ืฉื ื”), ืฉื›ื‘ืจ ืžืฆื™ืข ืชื›ื•ื ื•ืช ื˜ื•ื‘ื•ืช, ื›ืžื• ื™ื™ืฆื•ื’ ื—ื–ื•ืชื™ ืฉืœ ื”ืžืฆื‘ ื”ื ื•ื›ื—ื™ ืฉืœ ื”ืืฉื›ื•ืœ ื•ื ื™ื”ื•ืœ ื”ืื•ื‘ื™ื™ืงื˜ื™ื ืฉืœื•. ืžื•ืฆื‘ ื›"ืžืžืฉืง ื‘ื–ืžืŸ ืืžืช", ื›ื™ ืžืขื“ื›ืŸ ืื•ื˜ื•ืžื˜ื™ืช ืืช ื”ื ืชื•ื ื™ื ื”ืžื•ืฆื’ื™ื ืžื‘ืœื™ ืœื“ืจื•ืฉ ืžืžืš ืœืจืขื ืŸ ืืช ื”ื“ืฃ ื‘ื“ืคื“ืคืŸ.
  2. ืžืกื•ืฃ OpenShift - ืžืžืฉืง ืื™ื ื˜ืจื ื˜ ืžื‘ื™ืช Red Hat OpenShift, ืืฉืจ, ืขื ื–ืืช, ื™ื‘ื™ื ืคื™ืชื•ื—ื™ื ื ื•ืกืคื™ื ืฉืœ ื”ืคืจื•ื™ืงื˜ ืœืืฉื›ื•ืœ ืฉืœื›ื, ืฉืื™ื ื• ืžืชืื™ื ืœื›ื•ืœื.
  3. ืงื•ื‘ืจื ืื˜ื•ืจ ื”ื•ื ืคืจื•ื™ืงื˜ ืžืขื ื™ื™ืŸ, ืฉื ื•ืฆืจ ื›ืžืžืฉืง ื‘ืจืžื” ื ืžื•ื›ื” ื™ื•ืชืจ (ืž-Dashboard) ืขื ื™ื›ื•ืœืช ืœื”ืฆื™ื’ ืืช ื›ืœ ืื•ื‘ื™ื™ืงื˜ื™ ื”ืืฉื›ื•ืœ. ืขื ื–ืืช, ื ืจืื” ืฉื”ืคื™ืชื•ื— ืฉืœื• ื ืขืฆืจ.
  4. ืคื•ืœืืจื™ืก - ืจืง ืœืคื ื™ ื›ืžื” ื™ืžื™ื ื”ื•ื›ืจื– ืคืจื•ื™ืงื˜ ื”ืžืฉืœื‘ ืืช ื”ืคื•ื ืงืฆื™ื•ืช ืฉืœ ืคืื ืœ (ืžืฆื™ื’ ืืช ื”ืžืฆื‘ ื”ื ื•ื›ื—ื™ ืฉืœ ื”ืืฉื›ื•ืœ, ืืš ืื™ื ื• ืžื ื”ืœ ืืช ื”ืื•ื‘ื™ื™ืงื˜ื™ื ืฉืœื•) ื•"ืื™ืžื•ืช ืฉื™ื˜ื•ืช ืขื‘ื•ื“ื” ืžื•ืžืœืฆื•ืช" ืื•ื˜ื•ืžื˜ื™ (ื‘ื•ื“ืง ืืช ืชืงื™ื ื•ืช ื”ืชืฆื•ืจื•ืช ืฉืœ Deployments ืฉืคื•ืขืœื•ืช ื‘ื• ื‘ืืฉื›ื•ืœ).

ื‘ืžืงื•ื ืžืกืงื ื•ืช

ืœื•ื— ื”ืžื—ื•ื•ื ื™ื ื”ื•ื ื›ืœื™ ืกื˜ื ื“ืจื˜ื™ ืขื‘ื•ืจ ืืฉื›ื•ืœื•ืช Kubernetes ืฉืื ื• ืžืฉืจืชื™ื. ื”ืฉื™ืœื•ื‘ ืฉืœื• ืขื GitLab ื”ืคืš ื’ื ื”ื•ื ืœื—ืœืง ืžื”ืชืงื ืช ื‘ืจื™ืจืช ื”ืžื—ื“ืœ ืฉืœื ื•, ืžื›ื™ื•ื•ืŸ ืฉืžืคืชื—ื™ื ืจื‘ื™ื ืžืชืœื”ื‘ื™ื ืžื”ื™ื›ื•ืœื•ืช ืฉื™ืฉ ืœื”ื ืขื ืคืื ืœ ื–ื”.

ืœ-Kubernetes Dashboard ื™ืฉ ืžืขืช ืœืขืช ื—ืœื•ืคื•ืช ืžืงื”ื™ืœืช ื”ืงื•ื“ ื”ืคืชื•ื— (ื•ืื ื—ื ื• ืฉืžื—ื™ื ืœืฉืงื•ืœ ืื•ืชืŸ), ืื‘ืœ ื‘ืฉืœื‘ ื–ื” ืื ื—ื ื• ื ืฉืืจื™ื ืขื ื”ืคืชืจื•ืŸ ื”ื–ื”.

ื .ื‘.

ืงืจื ื’ื ื‘ื‘ืœื•ื’ ืฉืœื ื•:

ืžืงื•ืจ: www.habr.com

ื”ื•ืกืคืช ืชื’ื•ื‘ื”