Kubernetes Dashboard нь таны ажиллаж байгаа кластерын талаарх хамгийн сүүлийн үеийн мэдээллийг авч, хамгийн бага хүчин чармайлтаар удирдахад ашиглахад хялбар хэрэгсэл юм. Эдгээр чадавхид хандах нь зөвхөн администраторууд/DevOps инженерүүдэд төдийгүй консолд бага дассан болон/эсвэл kubectl болон программтай харьцах бүх нарийн ширийн зүйлийг даван туулахыг хүсдэггүй хүмүүст хэрэгтэй бол та үүнийг улам их үнэлж эхэлдэг. бусад хэрэгслүүд. Энэ нь бидэнтэй тохиолдсон: хөгжүүлэгчид Kubernetes вэб интерфэйс рүү хурдан нэвтрэхийг хүссэн бөгөөд бид GitLab ашигладаг тул шийдэл нь аяндаа ирсэн.
Яагаад энэ вэ?
Шууд хөгжүүлэгчид дибаг хийх зориулалттай K8s Dashboard гэх мэт хэрэгслийг сонирхож магадгүй юм. Заримдаа та бүртгэлүүд болон нөөцүүдийг үзэхийг хүсдэг, заримдаа pods-ыг устгаж, Deployments/StatefulSets-ийг масштабаар нь масштаблаж, тэр ч байтугай контейнерийн консол руу очихыг хүсдэг (хүсэлтүүд бас байдаг, гэхдээ өөр арга байдаг - жишээлбэл, дамжуулан
Нэмж дурдахад менежерүүдэд кластер руу харахыг хүсч буй сэтгэлзүйн үе байдаг - "бүх зүйл ногоон өнгөтэй" гэдгийг харах, улмаар "бүх зүйл ажиллаж байна" гэж өөрсдийгөө тайвшруулах (энэ нь мэдээжийн хэрэг маш харьцангуй юм ... гэхдээ энэ нь нийтлэлийн хамрах хүрээнээс гадуур юм).
Бид стандарт 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-г нөхөж, дахин суулгана уу
Үүнийг хийхийн тулд бид дараах 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-тэй ажиллаж байгаагүй эсвэл зүгээр л ямар нэг шалтгааны улмаас хяналтын самбартай таарч байгаагүй хөгжүүлэгч бол би түүний зарим чадварыг харуулах болно.
Нэгдүгээрт, та "бүх зүйл ногоон" гэдгийг харж болно:
Орчны хувьсагчид, татаж авсан зураг, эхлүүлэх аргументууд болон тэдгээрийн төлөв зэрэг илүү нарийвчилсан өгөгдлийг pods-д ашиглах боломжтой:
Байрлуулалт нь харагдах төлөвтэй байна:
...болон бусад дэлгэрэнгүй мэдээлэл:
... мөн байршуулалтыг томруулах боломж бас бий:
Энэ үйлдлийн үр дүн:
Өгүүллийн эхэнд дурдсан бусад ашигтай шинж чанаруудын дунд логуудыг үзэх нь:
... мөн сонгосон подын контейнер консол руу нэвтрэх функц:
Жишээлбэл, та зангилааны хязгаарлалт/хүсэлтийг бас харж болно:
Мэдээжийн хэрэг, эдгээр нь самбарын бүх чадвар биш, гэхдээ та ерөнхий санааг олж авсан гэж найдаж байна.
Интеграцчлал ба хяналтын самбарын сул тал
Тайлбарласан интеграцид байхгүй байна хандалтын хяналт. Үүний тусламжтайгаар GitLab-д хандах эрхтэй бүх хэрэглэгчид хяналтын самбарт хандах эрхтэй болно. Тэд Хяналтын самбарт өөрөө хандах эрхтэй бөгөөд энэ нь Хяналтын самбарын эрхэд нийцдэг
Хяналтын самбар дээрх мэдэгдэхүйц сул талуудын дунд би дараахь зүйлийг тэмдэглэж байна.
- init контейнерийн консол руу орох боломжгүй;
- ClusterRole дээр үүнийг засах боломжтой хэдий ч Deployments болон StatefulSets-ийг засах боломжгүй;
- Хяналтын самбар нь Kubernetes-ийн хамгийн сүүлийн үеийн хувилбаруудтай нийцэж байгаа эсэх, төслийн ирээдүй зэрэг нь эргэлзээ төрүүлж байна.
Сүүлийн асуудал нь онцгой анхаарал хандуулах ёстой.
Хяналтын самбарын төлөв ба хувилбарууд
Төслийн хамгийн сүүлийн хувилбарт танилцуулсан Kubernetes хувилбаруудтай хяналтын самбарын нийцтэй байдлын хүснэгт (
Гэсэн хэдий ч (XNUMX-р сард аль хэдийн батлагдсан) байдаг.
Эцэст нь хяналтын самбараас өөр хувилбарууд бий. Тэдний дунд:
-
K8Dash — кластерын одоогийн байдлыг дүрслэн харуулах, түүний объектуудыг удирдах гэх мэт сайн боломжуудыг аль хэдийн санал болгож буй залуу интерфейс (эхний үйл ажиллагаа энэ оны XNUMX-р сард хийгдсэн). "Бодит цагийн интерфэйс" гэж байрлуулсан, учир нь Хөтөч дээрх хуудсыг дахин шинэчлэх шаардлагагүйгээр харуулсан өгөгдлийг автоматаар шинэчилдэг. -
OpenShift консол - Red Hat OpenShift-ийн вэб интерфэйс нь төслийн бусад хөгжүүлэлтийг таны кластерт авчрах бөгөөд энэ нь хүн бүрт тохиромжгүй юм. -
Кубернатор нь кластерын бүх объектыг харах боломжтой доод түвшний (Хяналтын самбараас) интерфейс хэлбэрээр бүтээгдсэн сонирхолтой төсөл юм. Гэсэн хэдий ч хөгжил нь зогссон бололтой. -
Polaris - дөнгөж саязарлалаа самбар (кластерын одоогийн төлөвийг харуулдаг боловч объектуудыг удирддаггүй) болон автоматаар "шилдэг туршлагыг баталгаажуулах" (түүн дээр ажиллаж байгаа байршуулалтын тохиргооны зөв эсэхийг кластерыг шалгадаг) функцийг хослуулсан төсөл.
Дүгнэлт хийхийн оронд
Хяналтын самбар нь бидний үйлчилдэг Kubernetes кластерт зориулсан стандарт хэрэгсэл юм. Үүнийг GitLab-тай нэгтгэх нь бидний анхдагч суулгацын нэг хэсэг болсон, учир нь олон хөгжүүлэгчид энэ самбарт байгаа чадвардаа сэтгэл хангалуун байдаг.
Kubernetes хяналтын самбар нь Нээлттэй эх сурвалжийн нийгэмлэгээс үе үе хувилбаруудтай байдаг (мөн бид тэдгээрийг авч үзэхдээ баяртай байдаг), гэхдээ энэ үе шатанд бид энэ шийдлийг баримталсаар байна.
PS
Мөн манай блог дээрээс уншина уу:
- «
kubebox болон Kubernetes-д зориулсан бусад бүрхүүлүүд "; - «
Kubernetes болон GitLab-ийн шилдэг CI/CD туршлага (шалгалт болон видео тайлан) "; - «
dapp болон GitLab CI ашиглан Kubernetes-д програмуудыг бүтээж, байрлуул "; - «
Үйлдвэрлэлд тасралтгүй нэгтгэх, хүргэх GitLab CI. 1-р хэсэг: манай дамжуулах хоолой ".
Эх сурвалж: www.habr.com