GitLab Kubernetes 연결 (온프레)
5342 단어 rancherkubernetesGitLab
본 기사는 개인적인 견해이며, 필자가 소속하는 어떠한 단체도 관계가 없습니다.
GitLab을 Kubernetes에 연결 (온프레임 Kubernetes 환경)
0. GitLab과 Kubernetes 환경 통합
GitLab은 버전 10.1에서 Kubernetes에 연결할 수 있습니다.
AutoDevOps 기능의 연장으로 개발이 진행되고 있습니다.
Add a Kubernetes cluster integration
이 프로젝트에 Kubernetes 클러스터를 연결하여 Review Apps 사용,
애플리케이션 배포, 파이프라인 실행 등을 쉽게 수행할 수 있습니다.
하지만 아직 개발 중입니다.
이 기사에서도 GitLab 메뉴에서 Kubernetes 인증에 성공했다는 것만으로 Knative도 움직이지 않고, Runner도 현재는 움직이지 않습니다.
1. 환경
GitLab : Community Edition 11.7.5
Kubernetes : v1.13.1
PodSecurityPolicy:false
Docker : 18.9.1
OS : Ubuntu 16.04.5
Kubernetes는 rke로 설치되었습니다. .kube/config 를 정비해, kubectl 로 접속할 수 있도록 해 두어 주세요. Rancher UI에서 설치하면 Rancher의 kubectl은 Rancher 측이 Kubernetes API 서버를 래핑하므로 잘 작동하지 않습니다. rke가 출력한 kube_config_cluster.yml
나 kubeadm config를 사용하여 Kubernetes API 서버에 직접 연결하도록 합시다.
또한 tiller가 포함되어 있으면 GitLab에서 Kubernetes 연결시 설치하려고하면 오류가 발생합니다. 이 시점에서 가능한 한 만든 Kubernetes 클러스터가 좋습니다. 현재 PodSecurityPolicy
는 False여야 합니다.
2. Kubernetes 측 준비
Index · Clusters · Project · User · 도움말 · GitLab
htps : // 기트 b. styぇ… jp / help / 우세 r / p 로지 ct / c ㎅ s rs / e x
고뇨고요 쓰고 있습니다만, 중요한 것은 Token 입니다.
GitLab에 입력할 계정과 해당 토큰에 대한 정보를 만들려면 다음 단계를 따르세요.
1. ServiceAccount 만들기(gitlab이라는 이름은 고정인 것 같습니다)
2. ClusterRoleBinding 만들기
3. 1 계정의 Token 이름 가져오기
4. 3의 token 내용을 취득
합니다.
2-1. ServiceAccount 만들기
쉘kubectl create -f - <<EOF
apiVersion: v1
kind: ServiceAccount
metadata:
name: gitlab
namespace: default
EOF
2-2. ClusterRoleBinding 만들기
쉘kubectl create -f - <<EOF
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: gitlab-cluster-admin
subjects:
- kind: ServiceAccount
name: gitlab
namespace: default
roleRef:
kind: ClusterRole
name: cluster-admin
apiGroup: rbac.authorization.k8s.io
EOF
2-3. 1 계정의 Token 이름 얻기
쉘kubectl get secrets
NAME TYPE DATA AGE
gitlab-token-XXXXX kubernetes.io/service-account-token 3 59s
gitlab-token-XXXXX
가 Token 이름입니다.
2-4. token 내용을 취득
쉘kubectl get secret gitlab-token-XXXXX -o jsonpath="{['data']['token']}" | base64 --decode
<ダラダラっとTokenが表示されるはず>
2-5. Token 증명서 취득
쉘kubectl get secret gitlab-token-XXXXX -o jsonpath="{['data']['ca\.crt']}" | base64 --decode
<ダラダラっとca.crtが表示されるはず>
3. GitLab로 설정
GitLab : Community Edition 11.7.5
Kubernetes : v1.13.1
PodSecurityPolicy:false
Docker : 18.9.1
OS : Ubuntu 16.04.5
kubectl create -f - <<EOF
apiVersion: v1
kind: ServiceAccount
metadata:
name: gitlab
namespace: default
EOF
kubectl create -f - <<EOF
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: gitlab-cluster-admin
subjects:
- kind: ServiceAccount
name: gitlab
namespace: default
roleRef:
kind: ClusterRole
name: cluster-admin
apiGroup: rbac.authorization.k8s.io
EOF
kubectl get secrets
NAME TYPE DATA AGE
gitlab-token-XXXXX kubernetes.io/service-account-token 3 59s
kubectl get secret gitlab-token-XXXXX -o jsonpath="{['data']['token']}" | base64 --decode
<ダラダラっとTokenが表示されるはず>
kubectl get secret gitlab-token-XXXXX -o jsonpath="{['data']['ca\.crt']}" | base64 --decode
<ダラダラっとca.crtが表示されるはず>
Add a Kubernetes cluster integration
화면에 각 항목을 추가합니다. 변경사항을 저장합니다.
4. 결과
아래와 같은 화면이 표시되고, 「설치」버튼을 누를 수 있게 됩니다.
(여기에서는 이미 설치했으므로 "설치 완료"로되어 있습니다)
kubectl에서 확인하면 gitlab-managed-apps라는 네임 스페이스가 만들어졌고 tiller와 ingres-nginx가 배포되었습니다.
쉘
kubectl get pods --all-namespaces | grep gitlab
NAMESPACE NAME READY STATUS RESTARTS AGE
gitlab-managed-apps ingress-nginx-ingress-default-backend-78fc87c466-5wrdj 1/1 Running 0 21h
gitlab-managed-apps tiller-deploy-7dd47f89cc-x8mxk 1/1 Running 0 21h
아마도이 네임 스페이스에 다양한 앱이 AutoDevOps에 배포 될 것입니다.
Rancher에서 보았습니다.
PodSecurityPolicy의 Validation에 걸려 멈췄습니다. 현시점에서는 PodSecurityPolicy 는 False 쪽이 좋을 것 같습니다.
요약
불행히도 여기까지만 아직 실현되지 않았습니다.
속보가 있으면 추기하고 싶습니다.
Reference
이 문제에 관하여(GitLab Kubernetes 연결 (온프레)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/ynott/items/f9509b68406389264faa
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(GitLab Kubernetes 연결 (온프레)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/ynott/items/f9509b68406389264faa텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)