Cloudnet@에서 진행하는 쿠버네티스 실무 실습 스터디를 진행하면서 작성한 글입니다.
스터디에서 사용하는 교재는 24단계 실습으로 정복하는 쿠버네티스 입니다.
Cloudnet@
24단계 실습으로 정복하는 쿠버네티스
🎯 자신만의 텍스트 파일을 kops-ec2 로컬에서 Gitlab Repo에 올려보고, 다운로드 받아보기
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 계정 암호)
Admins > Users
Administrator 권한 부여
Impersonation Tokens 생성 - 토큰 값 확인
password 설정 > root 계정 로그아웃 > imok 계정 로그인
깃랩 신규 프로젝트 작성
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