Kubernetes ๋์๋ณด๋๋ ์คํ ์ค์ธ ํด๋ฌ์คํฐ์ ๋ํ ์ต์ ์ ๋ณด๋ฅผ ์ป๊ณ ์ด๋ฅผ ์ต์ํ์ผ๋ก ๊ด๋ฆฌํ ์ ์๋ ์ฌ์ฉํ๊ธฐ ์ฌ์ด ๋๊ตฌ์
๋๋ค. ๊ด๋ฆฌ์/DevOps ์์ง๋์ด๋ฟ๋ง ์๋๋ผ ์ฝ์์ ์ต์ํ์ง ์๊ฑฐ๋ kubectl ๋ฐ DevOps ์์ง๋์ด์ ์ํธ ์์ฉํ๋ ๋ชจ๋ ๋ณต์กํ ์์
์ ์ฒ๋ฆฌํ ์๋๊ฐ ์๋ ์ฌ๋๋ค๋ ์ด๋ฌํ ๊ธฐ๋ฅ์ ์ก์ธ์คํด์ผ ํ ๋ ๋์ฑ ๊ฐ์ฌํ๊ฒ ๋ ๊ฒ์
๋๋ค. ๊ธฐํ ์ ํธ๋ฆฌํฐ. ์ฐ๋ฆฌ์๊ฒ๋ ์ด๋ฐ ์ผ์ด ์ผ์ด๋ฌ์ต๋๋ค. ๊ฐ๋ฐ์๋ค์ Kubernetes ์น ์ธํฐํ์ด์ค์ ๋ํ ๋น ๋ฅธ ์ก์ธ์ค๋ฅผ ์ํ๊ณ GitLab์ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ์๋ฃจ์
์ด ์์ฐ์ค๋ฝ๊ฒ ๋์์ต๋๋ค.
์ ์ด๋?
์ง์ ๊ฐ๋ฐ์๋ ๋๋ฒ๊น
์์
์ ์ํด K8s ๋์๋ณด๋์ ๊ฐ์ ๋๊ตฌ์ ๊ด์ฌ์ด ์์ ์ ์์ต๋๋ค. ๋๋๋ก ๋ก๊ทธ์ ๋ฆฌ์์ค๋ฅผ ๋ณด๊ณ ์ถ๊ณ , ๋๋ก๋ Pod๋ฅผ ์ข
๋ฃํ๊ณ , ๋ฐฐํฌ/StatefulSet๋ฅผ ํ์ฅํ๊ณ , ์ฌ์ง์ด ์ปจํ
์ด๋ ์ฝ์๋ก ์ด๋ํ๊ณ ์ถ์ ์๋ ์์ต๋๋ค(๊ทธ๋ฌ๋ ์์ฒญ๋ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๋ค๋ฅธ ๋ฐฉ๋ฒ๋ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ๋ค์์ ํตํด)
๋ํ ๊ด๋ฆฌ์๊ฐ ํด๋ฌ์คํฐ๋ฅผ ๋ณด๊ณ ์ถ์ ๋ "๋ชจ๋ ๊ฒ์ด ๋ น์"์์ ํ์ธํ๊ณ "๋ชจ๋ ๊ฒ์ด ์๋ํ๊ณ ์๋ค"๊ณ ํ์ ํ ์ ์๋ ์ฌ๋ฆฌ์ ์๊ฐ์ด ์์ต๋๋ค(๋ฌผ๋ก ์ด๋ ๋งค์ฐ ์๋์ ์ ๋๋ค... ๊ทธ๋ฌ๋ ์ด๋ ๊ธฐ์ฌ์ ๋ฒ์๋ฅผ ๋ฒ์ด๋ฉ๋๋ค.)
์ฐ๋ฆฌ๋ ํ์ค 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๊ฐ ์ญ์ ํ๋ค๋ ์ฌ์ค๋ก ์ด์ด์ง๋๋ค.
ํจ์น๋ฅผ ์ฌ์ฉํ์ฌ ์์ฒด 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๋ฅผ ์ฌ์ฉํด ๋ณธ ์ ์ด ์๊ฑฐ๋ ๋จ์ํ ์ด๋ค ์ด์ ๋ก Dashboard๋ฅผ ์ ํด ๋ณธ ์ ์ด ์๋ ๊ฐ๋ฐ์๋ผ๋ฉด ๊ทธ ๊ธฐ๋ฅ ์ค ์ผ๋ถ๋ฅผ ์ค๋ช ํ๊ฒ ์ต๋๋ค.
๋จผ์ , "๋ชจ๋ ๊ฒ์ด ๋ น์"์์ ํ์ธํ ์ ์์ต๋๋ค.
ํ๊ฒฝ ๋ณ์, ๋ค์ด๋ก๋ํ ์ด๋ฏธ์ง, ์คํ ์ธ์ ๋ฐ ํด๋น ์ํ์ ๊ฐ์ ํฌ๋์ ๋ํ ๋ ์์ธํ ๋ฐ์ดํฐ๋ ์ฌ์ฉํ ์ ์์ต๋๋ค.
๋ฐฐํฌ์๋ ๋ค์๊ณผ ๊ฐ์ ์ํ๊ฐ ํ์๋ฉ๋๋ค.
...๋ฐ ๊ธฐํ ์ธ๋ถ์ ๋ณด:
... ๋ฐฐํฌ๋ฅผ ํ์ฅํ ์ ์๋ ๊ธฐ๋ฅ๋ ์์ต๋๋ค.
์ด ์์
์ ๊ฒฐ๊ณผ:
๊ธฐ์ฌ ์์ ๋ถ๋ถ์์ ์ด๋ฏธ ์ธ๊ธํ ๋ค๋ฅธ ์ ์ฉํ ๊ธฐ๋ฅ ์ค์๋ ๋ก๊ทธ ๋ณด๊ธฐ๊ฐ ์์ต๋๋ค.
... ๊ทธ๋ฆฌ๊ณ ์ ํํ ํฌ๋์ ์ปจํ
์ด๋ ์ฝ์์ ๋ก๊ทธ์ธํ๋ ๊ธฐ๋ฅ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์๋ฅผ ๋ค์ด ๋
ธ๋์ ๋ํ ์ ํ/์์ฒญ์ ํ์ธํ ์๋ ์์ต๋๋ค.
๋ฌผ๋ก ์ด๊ฒ์ด ํจ๋์ ๋ชจ๋ ๊ธฐ๋ฅ์ ์๋์ง๋ง ์ผ๋ฐ์ ์ธ ์์ด๋์ด๋ฅผ ์ป์ผ์๊ธฐ ๋ฐ๋๋๋ค.
ํตํฉ๊ณผ ๋์๋ณด๋์ ๋จ์
์ค๋ช
๋ ํตํฉ์๋ ๋ค์์ด ์์ต๋๋ค. ์ก์ธ์ค ์ ์ด. ์ด๋ฅผ ํตํด GitLab์ ์ก์ธ์คํ ์ ์๋ ๋ชจ๋ ์ฌ์ฉ์๋ ๋์๋ณด๋์ ์ก์ธ์คํ ์ ์์ต๋๋ค. ๋์๋ณด๋ ์์ฒด์ ๊ถํ์ ๋ฐ๋ผ ๋์๋ณด๋ ์์ฒด์๋ ๋์ผํ ์ก์ธ์ค ๊ถํ์ด ์์ต๋๋ค.
๋์๋ณด๋ ์์ฒด์ ๋์ ๋๋ ๋จ์ ์ค ๋ค์ ์ฌํญ์ ์ฃผ๋ชฉํฉ๋๋ค.
- init ์ปจํ ์ด๋์ ์ฝ์์ ๋ค์ด๊ฐ ์ ์์ต๋๋ค.
- ClusterRole์์ ์์ ํ ์ ์์ง๋ง ๋ฐฐํฌ ๋ฐ StatefulSet๋ฅผ ํธ์งํ๋ ๊ฒ์ ๋ถ๊ฐ๋ฅํฉ๋๋ค.
- ์ต์ ๋ฒ์ ์ Kubernetes์ ๋์๋ณด๋์ ํธํ์ฑ ๋ฐ ํ๋ก์ ํธ์ ๋ฏธ๋์ ๋ํ ์๋ฌธ์ด ์ ๊ธฐ๋ฉ๋๋ค.
๋ง์ง๋ง ๋ฌธ์ ๋ ํน๋ณํ ์ฃผ์๋ฅผ ๊ธฐ์ธ์ผ ๊ฐ์น๊ฐ ์์ต๋๋ค.
๋์๋ณด๋ ์ํ ๋ฐ ๋์
ํ๋ก์ ํธ์ ์ต์ ๋ฒ์ ์ ์ ์๋ Kubernetes ๋ฆด๋ฆฌ์ค์์ ๋์๋ณด๋ ํธํ์ฑ ํ(
๊ทธ๋ผ์๋ ๋ถ๊ตฌํ๊ณ (์ด๋ฏธ XNUMX์์ ์ฑํ๋จ)
๋ง์ง๋ง์ผ๋ก ๋์๋ณด๋์ ๋ํ ๋์์ด ์์ต๋๋ค. ๊ทธ ์ค์๋:
-
K8๋์ โ ํด๋ฌ์คํฐ์ ํ์ฌ ์ํ์ ๋ํ ์๊ฐ์ ํํ ๋ฐ ๊ฐ์ฒด ๊ด๋ฆฌ์ ๊ฐ์ ์ข์ ๊ธฐ๋ฅ์ ์ด๋ฏธ ์ ๊ณตํ๋ ์ ์ ์ธํฐํ์ด์ค(์ฒซ ๋ฒ์งธ ์ปค๋ฐ ๋ ์ง๋ ์ฌํด XNUMX์๋ก ๊ฑฐ์ฌ๋ฌ ์ฌ๋ผ๊ฐ๋๋ค). "์ค์๊ฐ ์ธํฐํ์ด์ค"๋ก ํฌ์ง์ ๋๋์์ต๋๋ค. ๋ธ๋ผ์ฐ์ ์์ ํ์ด์ง๋ฅผ ์๋ก ๊ณ ์น ํ์ ์์ด ํ์๋ ๋ฐ์ดํฐ๋ฅผ ์๋์ผ๋ก ์ ๋ฐ์ดํธํฉ๋๋ค. -
์คํ์ํํธ ์ฝ์ - Red Hat OpenShift์ ์น ์ธํฐํ์ด์ค๋ ํ๋ก์ ํธ์ ๋ค๋ฅธ ๊ฐ๋ฐ์ ํด๋ฌ์คํฐ์ ๊ฐ์ ธ์ค์ง๋ง ๋ชจ๋ ์ฌ๋์๊ฒ ์ ํฉํ์ง๋ ์์ต๋๋ค. -
์ฟ ๋ฒ๋ค์ดํฐ ๋ชจ๋ ํด๋ฌ์คํฐ ๊ฐ์ฒด๋ฅผ ๋ณผ ์ ์๋ ๊ธฐ๋ฅ์ ๊ฐ์ถ ํ์ ์์ค(๋์๋ณด๋๋ณด๋ค) ์ธํฐํ์ด์ค๋ก ์์ฑ๋ ํฅ๋ฏธ๋ก์ด ํ๋ก์ ํธ์ ๋๋ค. ๊ทธ๋ฌ๋ ๊ฐ๋ฐ์ด ์ค๋จ๋ ๊ฒ ๊ฐ์ต๋๋ค. -
ํด๋ผ๋ฆฌ์ค - ์ ๋ฒ์๋ฐํ ํจ๋์ ๊ธฐ๋ฅ(ํด๋ฌ์คํฐ์ ํ์ฌ ์ํ๋ฅผ ํ์ํ์ง๋ง ํด๋น ๊ฐ์ฒด๋ฅผ ๊ด๋ฆฌํ์ง๋ ์์)๊ณผ ์๋ "๋ชจ๋ฒ ์ฌ๋ก ๊ฒ์ฆ"(ํด๋ฌ์คํฐ์์ ์คํ ์ค์ธ ๋ฐฐํฌ ๊ตฌ์ฑ์ ์ ํ์ฑ ํ์ธ)์ ๊ฒฐํฉํ๋ ํ๋ก์ ํธ์ ๋๋ค.
๊ฒฐ๋ก ๋์
๋์๋ณด๋๋ ์ฐ๋ฆฌ๊ฐ ์ ๊ณตํ๋ Kubernetes ํด๋ฌ์คํฐ๋ฅผ ์ํ ํ์ค ๋๊ตฌ์ ๋๋ค. ๋ง์ ๊ฐ๋ฐ์๊ฐ ์ด ํจ๋์ ๊ธฐ๋ฅ์ ๋ํด ๊ธฐ๋ํ๊ณ ์๊ธฐ ๋๋ฌธ์ GitLab๊ณผ์ ํตํฉ๋ ๊ธฐ๋ณธ ์ค์น์ ์ผ๋ถ๊ฐ ๋์์ต๋๋ค.
Kubernetes ๋์๋ณด๋์๋ ์ ๊ธฐ์ ์ผ๋ก ์คํ ์์ค ์ปค๋ฎค๋ํฐ์ ๋์์ด ์์ง๋ง(์ฐ๋ฆฌ๋ ๊ธฐ๊บผ์ด ์ด๋ฅผ ๊ณ ๋ คํ๊ณ ์์ต๋๋ค), ํ ๋จ๊ณ์์๋ ์ด ์๋ฃจ์ ์ ์ ์งํฉ๋๋ค.
PS
๋ธ๋ก๊ทธ์์๋ ์ฝ์ด๋ณด์ธ์.
- ยซ
Kubernetes์ฉ kubebox ๋ฐ ๊ธฐํ ์ ธ "; - ยซ
Kubernetes ๋ฐ GitLab์ ์ฌ์ฉํ CI/CD ๋ชจ๋ฒ ์ฌ๋ก(๊ฒํ ๋ฐ ๋น๋์ค ๋ณด๊ณ ์) "; - ยซ
dapp ๋ฐ GitLab CI๋ฅผ ์ฌ์ฉํ์ฌ Kubernetes์์ ์ ํ๋ฆฌ์ผ์ด์ ๊ตฌ์ถ ๋ฐ ๋ฐฐํฌ "; - ยซ
ํ๋ก๋์ ํ๊ฒฝ์์ ์ง์์ ์ธ ํตํฉ ๋ฐ ์ ๊ณต์ ์ํ GitLab CI์ ๋๋ค. 1๋ถ: ํ์ดํ๋ผ์ธ ".
์ถ์ฒ : habr.com