GKE 또는 EKS에서 GitLab 차트 테스트하기
이 가이드는 Google Kubernetes Engine(GKE) 또는 Amazon Elastic Kubernetes Service(EKS)에 기본값으로 GitLab 차트를 설치하는 방법에 대한 간결하지만 완전한 문서로 제공됩니다.
기본적으로 GitLab 차트에는 클러스터 내부의 PostgreSQL, Redis 및 MinIO 배포가 포함되어 있습니다. 이들은 트라이얼 목적으로만 사용되며 생산 환경에서 사용하는 것은 권장하지 않습니다. 이러한 차트를 지속적인 부하 하에 생산 환경으로 배포하려면 완전한 설치 가이드를 따라야 합니다.
사전 요구 사항
이 가이드를 완료하려면 다음이 있어야 합니다:
- DNS 레코드를 추가할 수 있는 소유한 도메인.
- Kubernetes 클러스터.
- 작동하는
kubectl
설치. - Helm v3의 작동하는 설치.
사용 가능한 도메인
DNS 레코드를 추가할 수 있는 인터넷에 접근 가능한 도메인에 액세스해야 합니다. 이는 poc.domain.com
과 같은 하위 도메인일 수 있지만, Let’s Encrypt 서버가 주소를 해석하여 인증서를 발급할 수 있어야 합니다.
Kubernetes 클러스터 생성
총 8개의 가상 CPU 및 30GB RAM이 있는 클러스터를 권장합니다.
클라우드 공급업체의 지침을 참조하여 Kubernetes 클러스터를 만드는 방법 또는 GitLab에서 제공하는 스크립트를 사용하여 클러스터 생성을 자동화할 수 있습니다.
경고: Kubernetes 노드는 x86-64 아키텍처를 사용해야 합니다. AArch64/ARM64를 포함한 여러 아키텍처를 지원하는 것은 활발히 개발 중입니다. 자세한 내용은 이슈 2899를 참조하십시오.
kubectl 설치
kubectl을 설치하려면 Kubernetes 설치 문서를 참조하십시오. 이 문서는 대부분의 운영 체제와 Google Cloud SDK를 다루며, 이전 단계에서 설치한 경우가 있을 수 있습니다.
클러스터를 생성한 후 명령 줄에서 클러스터와 상호 작용하려면 `kubectl을 구성해야 합니다.](https://cloud.google.com/kubernetes-engine/docs/how-to/cluster-access-for-kubectl#generate_kubeconfig_entry)
Helm 설치
이 가이드에서는 Helm v3(v3.9.4 이상)의 최신 릴리스를 사용합니다. Helm을 설치하려면 Helm 설치 문서를 참조하십시오.
GitLab Helm 저장소 추가
GitLab Helm 저장소를 helm
의 구성에 추가하십시오:
helm repo add gitlab https://charts.gitlab.io/
GitLab 설치
여기에 이 차트가 할 수 있는 멋진 점이 있습니다. 하나의 명령어로 할 수 있습니다. 사라져! 모든 GitLab이 설치되고 SSL로 구성됩니다.
차트를 구성하려면 다음이 필요합니다:
- GitLab이 작동할 도메인 또는 하위 도메인.
- 인증서를 발급할 수 있도록 귀하의 이메일 주소.
차트를 설치하려면 두 개의 --set
인수를 사용하여 설치 명령을 실행하십시오:
helm install gitlab gitlab/gitlab \
--set global.hosts.domain=도메인 \
--set certmanager-issuer.email=me@example.com
이 단계는 모든 리소스가 할당되고 서비스가 시작되며 액세스가 가능하도록 하는 데 몇 분 정도 소요될 수 있습니다.
완료되면 방금 설치한 NGINX Ingress를 위해 동적으로 할당된 IP 주소를 수집할 수 있습니다.
IP 주소 검색
방금 설치하고 구성한 NGINX Ingress에 의해 GKE에 동적으로 할당된 주소를 가져오려면 kubectl
을 사용할 수 있습니다.
kubectl get ingress -lrelease=gitlab
출력은 다음과 같이 보일 것입니다:
NAME HOSTS ADDRESS PORTS AGE
gitlab-minio minio.domain.tld 35.239.27.235 80, 443 118m
gitlab-registry registry.domain.tld 35.239.27.235 80, 443 118m
gitlab-webservice gitlab.domain.tld 35.239.27.235 80, 443 118m
세 개의 항목이 모두 동일한 IP 주소를 가지고 있음을 알 수 있습니다.
이 IP 주소를 가져와 선택한 도메인의 DNS에 추가하십시오. A
유형의 레코드를 여러 개 추가할 수 있지만 단순성을 위해 단일 “와일드카드” 레코드를 권장합니다:
- Google Cloud DNS에서 이름이
*
인A
레코드를 만듭니다. TTL을5
분이 아닌1
분으로 설정하는 것을 권장합니다. - AWS EKS의 경우 주소는 IP 주소가 아닌 URL입니다.
Route 53 별칭 레코드를 만들어
*.domain.tld
를 이 URL로 지정하십시오.
GitLab으로 로그인하기
gitlab.domain.tld
에서 GitLab에 접속할 수 있습니다. 예를 들어, global.hosts.domain=my.domain.tld
로 설정한 경우 gitlab.my.domain.tld
를 방문할 수 있습니다.
로그인하려면 root
사용자의 비밀번호를 수집해야 합니다. 이 비밀번호는 설치 시 자동으로 생성되며 쿠버네티스 시크릿에 저장됩니다. 이제 해당 비밀번호를 시크릿에서 가져와 디코드해 봅시다:
kubectl get secret gitlab-gitlab-initial-root-password -ojsonpath='{.data.password}' | base64 --decode ; echo
이제 root
사용자명과 검색된 비밀번호로 GitLab에 로그인할 수 있습니다. 이 비밀번호는 로그인 후 사용자 환경 설정을 통해 변경할 수 있습니다. 우리는 첫 번째 로그인을 보호하기 위해 비밀번호를 생성했을 뿐이며, 이후에는 사용자가 직접 변경하시면 됩니다.
문제 해결
이 가이드 중에 문제가 발생하는 경우, 아래 항목들이 제대로 작동하는지 확인해야 합니다:
-
gitlab.my.domain.tld
가 검색한 인그레스의 IP 주소로 해석되는지 확인합니다. - 인증서 경고가 표시되는 경우, Let’s Encrypt에 문제가 발생했을 수 있습니다. 보통 DNS와 관련이 있거나 재시도해야 하는 요구와 관련이 있습니다.
추가 문제 해결 팁은 문제 해결 가이드를 참조하세요.
Helm 설치가 roles.rbac.authorization.k8s.io "gitlab-shared-secrets" is forbidden
을 반환하는 경우
다음을 실행한 후:
helm install gitlab gitlab/gitlab \
--set global.hosts.domain=DOMAIN \
--set certmanager-issuer.email=user@example.com
다음과 같은 오류가 나타날 수 있습니다:
Error: failed pre-install: warning: Hook pre-install templates/shared-secrets-rbac-config.yaml failed: roles.rbac.authorization.k8s.io "gitlab-shared-secrets" is forbidden: user "some-user@some-domain.com" (groups=["system:authenticated"]) is attempting to grant RBAC permissions not currently held:
{APIGroups:[""], Resources:["secrets"], Verbs:["get" "list" "create" "patch"]}
이는 클러스터에 연결하기 위해 사용하는 kubectl
컨텍스트에 RBAC 리소스를 생성하기 위한 권한이 없다는 것을 의미합니다.