GitLab Kubernetes 연결 (온프레)

매번 구구도 나오지 않는 작은 재료를 취급하고 있습니다.
본 기사는 개인적인 견해이며, 필자가 소속하는 어떠한 단체도 관계가 없습니다.

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로 설정


  • Add a Kubernetes cluster integration 화면에 각 항목을 추가합니다.
  • Kubernetes 클러스터 이름: 선택 사항
  • API URL : kubeconfig server : 행을 붙여 넣습니다
  • CA 인증서 : 2-5 Token 인증서를 붙여 넣습니다
  • 토큰 : 2-4의 Token 내용을 붙입니다
  • 프로젝트 네임 스페이스 : 하늘 (지정하지 않으면 gitlab-managed-apps가 생성되었습니다)

  • 변경사항을 저장합니다.

    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 쪽이 좋을 것 같습니다.

    요약



    불행히도 여기까지만 아직 실현되지 않았습니다.

    속보가 있으면 추기하고 싶습니다.

    좋은 웹페이지 즐겨찾기