k3s(kubernetes) 설치와 gitlab 연동하기

k3s(Kubernetes) 설치 및 실행

k3s는 간단한 shell 명령으로 설치와 실행이 가능하다.

$ curl -sfL https://get.k3s.io | sh -

위 명령으로 간단한 설치와 실행이 가능한데, 필자의 경우 이미 서버에서 web 서비스들을 동작 중인 상태였기 대문에 다음과 같은 옵션을 주었다.

$ curl -sfL https://get.k3s.io | sh -s - server --no-deploy traefik --no-deploy servicelb

위 명령은 load balancer와 traefik을 동작시키지 않는 옵션이다. 이렇게 하지 않으면 기존에 서비스중이던 웹서비스들에 접속할 때 404 not found와 같은 에러가 발생한다.

k3s 실행 확인

$ kubectl get node
NAME       STATUS   ROLES    AGE    VERSION
treetale   Ready    master   2d5h   v1.18.9+k3s1

위와 같이 출력되는 경우 정상적으로 node가 실행된 것이다.

gitlab에서 kubernetes 설정하기

gitlab project 메뉴에서 아래와 같이 kubernetes 설정으로 들어간다.

‘Add Kubernetes cluster’를 클릭한다.

설정 탭에서 ‘Connect existing cluster’를 선택하면 상세 설정 내용이 보인다.

CA Certificate 얻기

gitlab과 kubernetes를 연결하기 위해 몇가지 인증 정보를 설정해야한다. 다음 명령으로 CA Certificate 정보를 얻는다.

kubectl config view --raw \
-o=jsonpath='{.clusters[0].cluster.certificate-authority-data}' \
| base64 --decode

Service 토큰 얻기

Service 토큰을 얻기 위해 서비스 어카운트를 생성해야 한다. 다음과 같이 gitlab-admin.yaml 파일을 아무 위치에서나 만들자.

# gitlab-admin.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
  name: gitlab-admin
  namespace: kube-system
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
  name: gitlab-admin
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
- kind: ServiceAccount
  name: gitlab-admin
  namespace: kube-system

파일을 만들고 다음 명려을 실행하면 계정이 생성된다.

$ kubectl apply -f gitlab-admin.yaml

이제 토큰을 얻는다.

$ SECRET=$(kubectl -n kube-system get secret | grep gitlab-admin-token | awk '{print $1}')
$ TOKEN=$(kubectl -n kube-system get secret $SECRET -o jsonpath='{.data.token}' | base64 --decode)
$ echo $TOKEN

명령들을 실행하면 Token 값이 나오며 앞서 kubernetes 설정 페이지에 해당 내용들을 입력해주면 된다. API URL은 kubernetes가 동작 중인 서버의 ip address 또는 도메인 주소를 입력하면 된다.

참고

Leave a Reply