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 또는 도메인 주소를 입력하면 된다.
참고
- k3s integrated with GitLab
- Using a k3s Kubernetes Cluster for Your GitLab Project
- k8s + GitLab으로 CI/CD환경 구축해보기