Kubernetes Dashboard ืืื ืึทื ืืจืื ื-ืฆื-ื ืืฆื ืืขืฆืืึทื ืฆื ืืึทืงืืืขื ืืขืจืืืึทื ืืืงื ืืื ืคึฟืึธืจืืึทืฆืืข ืืืขืื ืืืื ืคืืืกื ืืืง ืงื ืืื ืืื ืคืืจื ืขืก ืืื ืืื ืืืึทื ืื. ืืืจ ืึธื ืืืืื ืฆื ืึธืคึผืฉืึทืฆื ืขืก ืืคืืื ืืขืจ ืืืขื ืึทืงืกืขืก ืฆื ืื ืงืืืคึผืึทืืืืึทืืื ืืื ืืืจืฃ ื ืื ืืืืื ืืืจื ืึทืืืื ืืกืืจืึทืืึธืจืก / ืืขืืืึธืคึผืก ืขื ืืืฉืึทื ืืจื, ืึธืืขืจ ืืืื ืืืจื ืืขื ืข ืืืึธืก ืืขื ืขื ืืืืื ืืงืขืจ ืฆืืืขืืืืื ื ืฆื ืื ืงืึทื ืกืึธืื ืืื / ืึธืืขืจ ืืึธื ื ืื ืืืขื ืฆื ืืึทื ืืืขื ืืื ืึทืืข ืื ืื ืืจืึทืงืึทืกืื ืคืื ืื ืืขืจืึทืงืืื ื ืืื kubectl ืืื ืื ืืขืจืข ืืืืืืึทืืื. ืืึธืก ืืื ืืขืฉืขื ืืื ืืื ืื: ืื ืืขืืืขืืึธืคึผืขืจืก ืืขืืืืื ืฉื ืขื ืึทืงืกืขืก ืฆื ืื Kubernetes ืืืขื ืฆืืืื ื, ืืื ืืื ื ืืืจ ื ืืฆื GitLab, ืื ืืืืืื ื ืืขืงืืืขื ืืขืืืืื ืืืขื.
ืคืืจืืืืก ืืื ืืึธืก?
ืืืจืขืงื ืืขืืืขืืึธืคึผืขืจืก ืงืขื ืืืื ืืื ืืขืจืขืกืืจื ืืื ืึท ืืขืฆืืึทื ืืื K8s ืืึทืฉืืึธืจื ืคึฟืึทืจ ืืืืึทืืื ื ืืึทืกืงืก. ืืื ืืืจ ืืืืื ืฆื ืืขื ืืึธืืก ืืื ืจืขืกืืจืกื, ืืื ืืื ืืืืื ืคึผืึธืืก, ืืืึธื ืืืคึผืืืืืึทื ืฅ / ืกืืืืืคืืืกืขืฅ, ืืื ืืคืืื ืืืื ืฆื ืื ืงืึทื ืืืื ืขืจ ืงืึทื ืกืึธืื (ืขืก ืืขื ืขื ืืืื ืจืืงืืืขืก ืคึฟืึทืจ ืืืึธืก, ืึธืืขืจ, ืขืก ืืื ืื ืื ืืขืจ ืืืขื - ืืืฉื, ืืืจื
ืืื ืืขืจืฆื, ืขืก ืืื ืึท ืคืกืืืืืืืืฉื ืืึธืืขื ื ืคึฟืึทืจ ืืึทื ืึทืืืฉืขืจื ืืืขื ืืื ืืืืื ืฆื ืงืืงื ืืื ืื ืงื ืืื - ืฆื ืืขื ืึทื "ืึทืืฅ ืืื ืืจืื", ืืื ืึทืืื ืคืึทืจืืืืขืจื ืืื ืึทื "ืึทืืฅ ืึทืจืืขื" (ืืืึธืก, ืคืื ืงืืจืก, ืืื ืืืืขืจ ืจืขืืึทืืืื ... ืึธืืขืจ ืืึธืก ืืื ืืืืึทืืขืจ ืคืื ืื ืคืึทืจื ืขื ืคืื ืืขื ืึทืจืืืงื).
ืืื ืึท ื ืึธืจืืึทื ืกื ืกืืกืืขื ืืืจ ืืึธืื
ืืื ืืืขื ืืืื ืืึธื ืึทื ืืืจ ื ืืฆื 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 ืงืจืึทืืขื ืืฉืึทืื - ืืื ืึทืืฅ ืืื ืืขืืื:
ืืืขืื ืืึทืฉืืึธืจื ืคึฟืขืึดืงืืืื
ืืืื ืืืจ ืืขื ื ืึท ืืขืืืขืืึธืคึผืขืจ ืืืึธืก ืืื ื ืืฉื ืืขืืจืืขื ืืื Kubernetes ืคืจืืขืจ, ืึธืืขืจ ืคืฉืื ืคึฟืึทืจ ืขืืืขืืข ืกืืื ืืึธืื ื ืืฉื ืืขืคึผืืึธื ืืขืจื ืืึทืฉืืึธืจื ืคืจืืขืจ, ืืื ืืืขื ืืืืืกืืจืืจื ืขืืืขืืข ืคืื โโโโืืืึทื ืงืืืคึผืึทืืืืึทืืื.
ืขืจืฉืืขืจ, ืืืจ ืงืขื ืขื ืืขื ืึทื "ืึทืืฅ ืืื ืืจืื":
ืืขืจ ืืืืืืื ืืึทืื ืืขื ืขื ืืืื ืื ืืืฆื ืคึฟืึทืจ ืคึผืึธืืก, ืึทืืึท ืืื ืื ืืืืืจืึทื ืืขื ืึทื ืืืขืจืืึทืืึทืื, ืืึทืื ืืึธืืืื ืืืื, ืงืึทืืขืจ ืึทืจืืืืขื ืื ืืื ืืืืขืจ ืฉืืึทื:
ืืืคึผืืืืืึทื ืฅ ืืึธืื ืงืขื ืืืง ืกืืึทืืืกืขืก:
... ืืื ืื ืืขืจืข ืคืจืืื:
... ืืื ืขืก ืืื ืืืื ืื ืคืืืืงืืื ืฆื ืคืึทืจืงืืขื ืขืจื ืื ืืืคึผืืืืืึทื ื:
ืืขืจ ืจืขืืืืืึทื ืคืื ืืขื ืึธืคึผืขืจืึทืฆืืข:
ืฆืืืืฉื ืื ืืขืจืข ื ืืฆืืง ืคึฟืขืึดืงืืืื ืฉืืื ืืขืจืืื ื ืืื ืื ืึธื ืืืื ืคืื ืืขื ืึทืจืืืงื ืืื ืืืืืื ื ืืึธืืก:
... ืืื ืื ืคืื ืงืฆืืข ืฆื ืงืืึธืฅ ืืื ืื ืงืึทื ืืืื ืขืจ ืงืึทื ืกืึธืื ืคืื ืื ืืืืกืืขืงืืืื ืคึผืึธื:
ืคึฟืึทืจ ืืืึทืฉืคึผืื, ืืืจ ืงืขื ืขื ืืืื ืงืืง ืืื ืื ืืืืึทืฅ / ืจืืงืืืขืก ืืืืฃ ื ืึธืืื:
ืคืื ืงืืจืก, ืืึธืก ืืขื ืขื ื ืืฉื ืึทืืข ืื ืงืืืคึผืึทืืืืึทืืื ืคืื ืื ืืึทืคืืืข, ืึธืืขืจ ืืื ืืึธืคึฟื ืึทื ืืืจ ืืึทืงืืืขื ืื ืึทืืืขืืืื ืข ืืขืืึทื ืง.
ืืืกืึทืืืืึทื ืืืืืฉืื ืคืื ืื ืืึทืืจืืืฉืึทื ืืื ืืึทืฉืืึธืจื
ืืื ืื ืืืกืงืจืืืื ืื ืืึทืืจืืืฉืึทื ืขืก ืืื ื ืื ืฆืืืจืื ืงืึธื ืืจืึธื. ืืื ืขืก, ืึทืืข ืืืืขืจื ืืื ืงืืื ืึทืงืกืขืก ืฆื GitLab ืืึทืงืืืขื ืึทืงืกืขืก ืฆื ืื ืืึทืฉืืึธืจื. ืืื ืืึธืื ืื ืืขืืืข ืึทืงืกืขืก ืืื ืื ืืึทืฉืืึธืจื ืืื, ืงืึธืจืึทืกืคึผืึทื ืืื ื ืฆื ืื ืจืขืื ืคืื ืื ืืึทืฉืืึธืจื ืืื, ืืืึธืก
ืฆืืืืฉื ืื ืืืืขืจืงื ืืืกืึทืืืืึทื ืืืืืฉืื ืืื ืื ืืึทืฉืืึธืจื ืืื, ืืื ืืึธื ืื ืคืืืืขื ืืข:
- ืขืก ืืื ืืืืืขืืืขื ืฆื ืืึทืงืืืขื ืืื ืื ืงืึทื ืกืึธืื ืคืื ืื ืื ืื ืงืึทื ืืืื ืขืจ;
- ืขืก ืืื ืืืืืขืืืขื ืฆื ืจืขืืึทืืืจื ืืืคึผืืืืืึทื ืฅ ืืื ืกืืขืืืคืืืกืขืฅ, ืืึธืืฉ ืืึธืก ืงืขื ืขื ืืืื ืคืึทืจืคืขืกืืืงื ืืื ClusterRole;
- ืื ืงืึทืืคึผืึทืืึทืืืืึทืื ืคืื ืืึทืฉืืึธืจื ืืื ืื ืืขืฆืืข ืืืขืจืกืืขืก ืคืื Kubernetes ืืื ืื ืฆืืงืื ืคึฟื ืคืื ืื ืคึผืจืืืขืงื ืจืืืืึทื ืคึฟืจืืื.
ืื ืืขืฆืืข ืคึผืจืึธืืืขื ืคืืจืืื ื ืกืคึผืขืฆืืขื ืืคืืขืจืงืืึทืืงืืึทื.
ืืึทืฉืืึธืจื ืกืืึทืืืก ืืื ืึทืืืขืจื ืึทืืืืืขืก
ืืึทืฉืืึธืจื ืงืึทืืคึผืึทืืึทืืืืึทืื ืืืฉ ืืื Kubernetes ืจืืืืกืื, ืืขืจืืื ืื ืืื ืื ืืขืฆืืข ืืืขืจืกืืข ืคืื โโโโืื ืคึผืจืืืขืงื (
ืืจืึธืฅ ืืขื, ืขืก ืืื (ืฉืืื ืื ืืขื ืืืขื ืืื ืืื ืืืจ)
ืฆืื ืกืืฃ, ืขืก ืืขื ืขื ืึทืืืขืจื ืึทืืืืืขืก ืฆื ืืึทืฉืืึธืจื. ืฆืืืืฉื ืืื:
-
K8Dash - ืึท ืืื ื ืฆืืืื ื (ืืขืจ ืขืจืฉืืขืจ ืงืึทืืืฅ ืืึทืืข ืฆืืจืืง ืฆื ืืึทืจืฅ ืคืื ืืขื ืืึธืจ), ืืืึธืก ืฉืืื ืึธืคืคืขืจืก ืืื ืคึฟืขืึดืงืืืื, ืึทืืึท ืืื ืึท ืืืืืฉืึทืืืึทื ืคืึทืจืืจืขืืื ื ืคืื ืื ืงืจืึทื ื ืกืืึทืืืก ืคืื ืืขื ืงื ืืื ืืื ืคืึทืจืืืึทืืืื ื ืคืื ืืืึทื ืึทืืืืฉืขืงืฅ. ืคึผืึทืืืฉืึทื ื ืืื ืึท "ืคืึทืงืืืฉ-ืฆืืื ืฆืืืื ื", ืืืืึทื ืืืืืึธืืึทืืืฉ ืืขืจืืืึทื ืืืงื ืื ืืขืืืืื ืืึทืื ืึธื ืจืืงืืืืืจืื ื ืืืจ ืฆื ืืขืจืคืจืืฉื ืืขื ืืืึทื ืืื ืืขื ืืืขืืขืจืขืจ. -
OpenShift ืงืึทื ืกืึธืื - ืึท ืืืขื ืฆืืืื ื ืคืื Red Hat OpenShift, ืืืึธืก, ืึธืืขืจ, ืืืขื ืืจืขื ืืขื ืื ืืขืจืข ืืืืืขืืึทืคึผืืึทื ืฅ ืคืื ืื ืคึผืจืืืขืงื ืฆื ืืืื ืงื ืืื, ืืืึธืก ืืื ื ืืฉื ืคึผืึทืกืืง ืคึฟืึทืจ ืึทืืขืืขื. -
ืงืืืขืจื ืืืืจ ืืื ืึท ืืฉืืงืึทืืืข ืคึผืจืืืขืงื, ืืืฉืืคื ืืื ืึท ื ืืืขืจืืงืขืจ-ืืืจืื (ืืื ืืึทืฉืืึธืจื) ืฆืืืื ื ืืื ืื ืคืืืืงืืื ืฆื ืืขื ืึทืืข ืงื ืืื ืึทืืืืฉืขืงืฅ. ืึธืืขืจ, ืขืก ืงืืงื ืืื ืืืึทื ืึทื ืืืืืงืืื ื ืืื ืคืืจืฉืืืคื. -
ืคึผืึธืืึทืจืืก - ื ืึธืจ ืื ืื ืืขืจืข ืืึธืืืืืืข ืึท ืคึผืจืืืขืงื ืืืึธืก ืงืึทืืืืื ื ืื ืคืึทื ืืงืฉืึทื ื ืคืื ืึท ืืึทืคืืืข (ืืืืึทืื ืื ืงืจืึทื ื ืฉืืึทื ืคืื ืื ืงื ืืื, ืึธืืขืจ ืืื ื ืืฉื ืคืืจื ืืืึทื ืึทืืืืฉืขืงืฅ) ืืื ืึธืืึทืืึทืืืง "ืืืึทืืึทืืืืฉืึทื ืคืื ืืขืกืืขืจ ืคึผืจืึทืงืืืกืื" (ืืฉืขืงืก ืื ืงื ืืื ืคึฟืึทืจ ืื ืจืืืืืง ืคืื ืื ืงืึทื ืคืืืืขืจืืืฉืึทื ื ืคืื ืืืคึผืืืืืึทื ืฅ ืคืืืกื ืืืง ืืื ืขืก).
ืึทื ืฉืืึธื ืงืึทื ืงืืืืฉืึทื ื
ืืึทืฉืืึธืจื ืืื ืึท ื ืึธืจืืึทื ืืขืฆืืึทื ืคึฟืึทืจ ืื Kubernetes ืงืืึทืกืืขืจื ืืืึธืก ืืืจ ืืื ืขื. ืื ืื ืึทืืจืืืฉืึทื ืืื GitLab ืืื ืืืื ืืขืืืืจื ืึท ืืืื ืคืื ืืื ืืืขืจ ืคืขืืืงืืึทื ืืึทื ืืึธื ืืืจืื ื, ืืืืึทื ืคืืืข ืืขืืืขืืึธืคึผืขืจืก ืืขื ืขื ืืงืกืืืืึทื ืืืขืื ืื ืงืืืคึผืึทืืืืึทืืื ืืื ืืึธืื ืืื ืืขื ืืึทืคืืืข.
Kubernetes Dashboard ืคึผืืจืืึทืืืงืื ืืื ืึทืืืขืจื ืึทืืืืืขืก ืคืื ืื ืขืคึฟื ืืงืืจ ืงืื (ืืื ืืืจ ืืขื ืขื ืฆืืคืจืืื ืฆื ืืึทืืจืึทืืื ืืื), ืึธืืขืจ ืืื ืืขื ืืื ืข ืืืจ ืืืืืื ืืื ืืขื ืืืืืื ื.
ืคึผืก
ืืืืขื ืขื ืืืื ืืืืฃ ืืื ืืืขืจ ืืืึธื:
- ยซ
ืงืืืขืืึธืงืก ืืื ืื ืืขืจืข ืฉืขืื ืคึฟืึทืจ Kubernetes "; - ยซ
ืืขืกืืขืจ ืกื / ืกื ืคึผืจืึทืงืืืกืื ืืื Kubernetes ืืื GitLab (ืจืขืฆืขื ืืืข ืืื ืืืืืขื ืืึทืจืืื) "; - ยซ
ืืืืขื ืืื ืฆืขืืืืงืืขื ืึทืคึผืืึทืงืืืฉืึทื ื ืืื Kubernetes ื ืืฆื Dapp ืืื GitLab CI "; - ยซ
GitLab CI ืคึฟืึทืจ ืงืขืกืืืืขืจืืืง ืื ืึทืืจืืืฉืึทื ืืื ืขืงืกืคึผืจืขืก ืืื ืคึผืจืึธืืืงืฆืืข. ืืืื 1: ืืื ืืืขืจ ืจืขืจื - ืืื ืืข '.
ืืงืืจ: www.habr.com