GitOps 시스템 (2) - GitLab

ImOk·2023년 3월 25일
0
post-thumbnail

Cloudnet@에서 진행하는 쿠버네티스 실무 실습 스터디를 진행하면서 작성한 글입니다.
스터디에서 사용하는 교재는 24단계 실습으로 정복하는 쿠버네티스 입니다.

Cloudnet@
24단계 실습으로 정복하는 쿠버네티스


깃랩(GitLab)를 이용하여 로컬 깃(Git) 소스 저장소 구축하기

🎯 자신만의 텍스트 파일을 kops-ec2 로컬에서 Gitlab Repo에 올려보고, 다운로드 받아보기

헬름 차트로 gitlab 설치 후 웹 로그인

Cloud Native GitLab Helm Chart
GitLab Helm chart

# 설치
echo $CERT_ARN
helm repo add gitlab https://charts.gitlab.io/
helm repo update
helm fetch gitlab/gitlab --untar --version 6.8.1
vim ~/gitlab/values.yaml
----------------------
global:
  hosts:
    domain: <각자자신의도메인>             # 52줄
    https: true

  ingress:                             # 66줄~
    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:                               # 79줄
      enabled: false
----------------------

alb.ingress.kubernetes.io/group.name: "gitlab" 을 설정하면, ALB 1대만으로 동작 가능

# 모니터링
kubectl create ns gitlab
watch kubectl get pod,pvc,ingress -n gitlab
# 설치
helm install gitlab gitlab/gitlab -f ~/gitlab/values.yaml \
--set certmanager.install=false \
--set nginx-ingress.enabled=false \
--set prometheus.install=false \
--set gitlab-runner.install=false \
--namespace gitlab --version 6.8.4

# 확인 - SubCharts
# gitlab-gitaly : 웹서비스 혹은 ssh 방식으로 진행되는 깃 제목, 브랜치, 태그 등의 깃 요청 등에 대한 작업을 담당
# gitlab-gitlab-shell : https 가 아닌 ssh 방식으로 깃 명령어 실행 시 해당 요청을 처리
# gitlab-kas : gitlab agent server
# gitlab-postgresql : 유저, 권한, 이슈 등 깃랩의 메타 데이터 정보가 저장
# gitlab-redis-master : 깃랩 작업 정보는 레디스 캐시 서버를 이용하여 처리
# gitlab-sidekiq-all-in-1-v2 : 레디스와 연동하여 작업 큐 처리 용도로 사용
# gitlab-webservice-default : 깃랩 웹 서비스를 처리
helm list -n gitlab
kubectl get pod,pvc,ingress,deploy,sts -n gitlab
kubectl df-pv -n gitlab
kubectl get-all -n gitlab

# 4개의 Ingress 가 1개의 ALB를 공유해서 사용 : ALB의 Rule 확인해볼것!
# alb.ingress.kubernetes.io/group.name: "gitlab"
kubectl get ingress -n gitlab
NAME                        CLASS   HOSTS                  ADDRESS                                                            PORTS   AGE
gitlab-kas                  alb     kas.imokapp.net        k8s-gitlab-806aafdd2a-290919404.ap-northeast-2.elb.amazonaws.com   80      8m15s
gitlab-minio                alb     minio.imokapp.net      k8s-gitlab-806aafdd2a-290919404.ap-northeast-2.elb.amazonaws.com   80      8m15s
gitlab-registry             alb     registry.imokapp.net   k8s-gitlab-806aafdd2a-290919404.ap-northeast-2.elb.amazonaws.com   80      8m15s
gitlab-webservice-default   alb     gitlab.imokapp.net     k8s-gitlab-806aafdd2a-290919404.ap-northeast-2.elb.amazonaws.com   80      8m15s

# 웹 root 계정 암호 확인
kubectl get secrets -n gitlab gitlab-gitlab-initial-root-password --template={{.data.password}} | base64 -d ;echo
hhBvAjXo...

# 웹 접속 주소 확인 및 접속
echo -e "gitlab URL = https://gitlab.$KOPS_CLUSTER_NAME"

# 웹 접속 https://gitlab.<각자 자신의 도메인> (root / 웹 root 계정 암호)


gitlab에 별도의 사용자 생성

Admins > Users

Administrator 권한 부여

Impersonation Tokens 생성 - 토큰 값 확인

password 설정 > root 계정 로그아웃 > imok 계정 로그인

깃랩 신규 프로젝트 작성


gitlab에 파일 업로드

mkdir ~/gitlab-test && cd ~/gitlab-test

# git 계정 초기화 : 토큰 및 로그인 실패 시 매번 실행해주자
git config --system --unset credential.helper
git config --global --unset credential.helper

# git 계정 정보 확인 및 global 계정 정보 입력
git config --list
git config --global user.name "<각자 자신의 Gialba 계정>"
git config --global user.email "<각자 자신의 Gialba 계정의 이메일>"

# git clone
git clone https://gitlab.$KOPS_CLUSTER_NAME/<각자 자신의 Gitlab 계정>/test-stg.git
Cloning into 'test-stg'...
Username for 'https://gitlab.imokapp.net': imok
Password for 'https://imok@gitlab.imokapp.net':<토큰 입력>

# 이동
ls -al test-stg && cd test-stg && pwd

# 파일 생성 및 깃 업로드(push) : 웹에서 확인
echo "gitlab test memo" >> test.txt
git add . && git commit -m "initial commit - add test.txt"
git push
Username for 'https://gitlab.imokapp.net': imok
Password for 'https://imok@gitlab.imokapp.net':<토큰 입력>


실습 환경 삭제

헬름 차트 삭제

helm uninstall -n gitlab gitlab
kubectl delete pvc --all -n gitlab
kubectl delete ns gitlab

kOps 클러스터 삭제 & AWS CloudFormation 스택 삭제

kops delete cluster --yes && aws cloudformation delete-stack --stack-name mykops

profile
ImOk👌

0개의 댓글