3주차 2편에서는 gitops시스템에서 git서비스인 gitlab을 다룹니다.
📘 gitlab이란?
gitlab은 사람들에게 많이 알려진 git서비스(github, bitbucket 등) 중 한개입니다. gitops시스템에서는 git기능을 담당합니다.
gitlab은 github, bitbucket과 다르게 오픈소스버전이 공개되어 있어 직접 설치와 운영이 가능합니다. 유료버전과 비교하여 기능은 큰 차이가 없어, 폐쇄망에서 오픈소스 git서비스를 사용해야 한다면 gitlab이 강력한 후보입니다. github action처럼 파이프라인 기능도 제공하고 있어 소규모에서 파이프라인을 적용해야 하는 상황에 적합합니다.
📘 설치
저는 helm차트로 gitlab을 설치했습니다.
helm repo add gitlab https://charts.gitlab.io/
helm repo update
오버라이딩할 values.yaml을 정의합니다. 저는 aws ALB와 certiciate manager을 설정했습니다.
global:
hosts:
domain: <각자자신의도메인>
https: true
ingress:
configureCertmanager: false
provider: aws
class: alb
annotations:
alb.ingress.kubernetes.io/scheme: internet-facing
alb.ingress.kubernetes.io/target-type: ip
alb.ingress.kubernetes.io/listen-ports: '[{"HTTPS":443}, {"HTTP":80}]'
alb.ingress.kubernetes.io/certificate-arn: ${CERT_ARN} # 각자 자신의 값으로 수정입력
alb.ingress.kubernetes.io/success-codes: 200-399
alb.ingress.kubernetes.io/group.name: "gitlab"
tls:
enabled: false
certmanager:
install: false
nginx-ingress:
enabled: false
gitlab-runner:
install: false
prometheus:
install: false
참고로 aws certificate는 aws CLI로 쉽게 구할 수 있습니다.
aws acm list-certificates --query 'CertificateSummaryList[].CertificateArn[]' --output text
CERT_ARN=`aws acm list-certificates --query 'CertificateSummaryList[].CertificateArn[]' --output text`
helm install명령어로 helm차트를 release합니다.
helm upgrade --install gitlab gitlab/gitlab \
-f ./values.yaml \
--namespace gitlab \
--create-namespace \
--version 6.8.4
약 5분정도 기다리면 쿠버네티스 pod와 aws ALB, route 53이 설정이 됩니다.
gitlab도메인으로 이동해보세요. gitlab로그인 페이지가 보입니다. https인증이 잘 되는지 같이 확인해보세요.
📘 계정과 비밀번호
디폴트 계정은 root입니다. 비밀번호는 쿠버네티스 secret에서 조회해야합니다.
kubectl get secrets -n gitlab gitlab-gitlab-initial-root-password --template={{.data.password}} | base64 -d ;echo
📘 gitlab 프로젝트 생성
gitlab은 git 저장소를 gitlab프로젝트 단위로 관리합니다. 즉, gitlab에서 git저장소를 만드는 것은 gitlab 프로젝트 생성과 동일합니다.
New project버튼을 눌러 프로젝트를 생성할 수 있습니다.
프로젝트는 템플릿기반으로 생성할 수 있습니다. 현재는 템플릿이 없으므로 blank project를 선택합니다.
프로젝트 이름을 입력하고 public(누구나 접근가능)을 선택합니다. 그리고 Create project버튼을 클릭하여 버튼을 생성합니다.
프로젝트 생성되면 git저장소가 만들어졌습니다.
📘 git push
생성한 gitlab 프로젝트에 helloworld.txt를 push해볼게요! 이 글은 예제이므로 root계정으로 진행했습니다. 실제 업무에 사용하실 때는 계정을 만들어서 사용해야합니다.
git저장소 주소를 복사합니다. https프로토콜을 사용합니다.
git clone을 입력하면 로그인 프롬프트가 나옵니다. 디폴트 root계정 비밀번호를 사용했습니다.
git clone {복사한 주소}
user:
password:
git push를 하기 전 git정보를 설정합니다. git정보를 설정하지 않으면 git commit이 안됩니다. 이 글은 예제이므로 root로 설정했습니다.
git config --global user.email "root"
git config --global user.name "root"
test.txt파일을 추가하고 git저장소에 push합니다.
touch test.txt
git add test.txt
git commit -am "test"
git push
gitlab 프로젝트를 확인하면 push한 test.txt가 잘 보입니다.
'연재 시리즈' 카테고리의 다른 글
pkos 스터디 4주차 - 메트릭 오픈소스 프로메테우스 (3) | 2023.03.29 |
---|---|
pkos 스터디 3주차 4편 - argo cd와 gitlab파이프라인 연동 (2) | 2023.03.26 |
pkos 스터디 3주차 2편 - 도커 레지스트리 harbor (0) | 2023.03.25 |
pkos 스터디 3주차 1편 - gitops란? (0) | 2023.03.25 |
pkos 스터디 2주차 2편 - AWS VPC CNI (5) | 2023.03.18 |