설치
경고: GitLab custom resource_의 기본 값은 제품 사용에 적합하지 않습니다. 이러한 값으로 GitLab Operator가 Kubernetes 클러스터에서 _모든 서비스(지속적인 데이터를 포함)를 배포하는 GitLab 인스턴스를 생성하며, 이는 제품 운영 부하에 적합하지 않습니다. 제품 배포의 경우 Cloud Native Hybrid 참조 아키텍처를 따라야 합니다. Kubernetes 클러스터 내부에서 배포된 PostgreSQL, Redis, Gitaly, Praefect 또는 MinIO와 관련된 모든 문제를 GitLab에서 지원하지 않습니다.
이 문서에서는 Kubernetes 또는 OpenShift 클러스터의 manifests를 사용하여 GitLab Operator를 배포하는 방법을 설명합니다.
OpenShift를 사용하는 경우, 설치는 일반적으로 Operator Lifecycle Manager (OLM)에 의해 처리됩니다. OLM을 사용한 설치는 실험적으로 간주됩니다. GitLab은 OLM을 사용하여 배포된 인스턴스와 관련된 모든 문제를 지원하지 않습니다. OLM과 관련된 잠재적인 문제에 대한 자세한 내용은 이슈 241를 참조하십시오.
전제 조건
- 기존의 Kubernetes 또는 OpenShift 클러스터를 생성하거나 사용
- 사전 필수 서비스 및 소프트웨어 설치
- 도메인 이름 서비스 구성
클러스터
전통적인 Kubernetes 클러스터를 만들려면 공식 도구나 원하는 설치 방법을 고려하십시오.
GitLab Operator는 다음 Kubernetes 버전을 지원합니다:
Kubernetes 릴리스 | 상태 | 최소 Operator 버전 | 아키텍처 | 지원 종료일 |
---|---|---|---|---|
1.30 | 자격 증명 처리 중 | x86-64 | 2025-06-28 | |
1.29 | 지원됨 | 1.0.0 | x86-64 | 2025-02-28 |
1.28 | 지원됨 | 1.0.0 | x86-64 | 2024-10-28 |
1.27 | 지원됨 | 0.29.0 | x86-64 | 2024-06-28 |
1.26 | 지원되지 않음 | 0.24.0 | x86-64 | 2024-02-28 |
1.25 | 지원되지 않음 | 0.24.0 | x86-64 | 2023-10-28 |
1.24 | 지원되지 않음 | 0.24.0 | x86-64 | 2023-07-28 |
1.23 | 지원되지 않음 | 0.24.0 | x86-64 | 2023-02-28 |
1.22 | 지원되지 않음 | 0.24.0 | x86-64 | 2022-10-28 |
OpenShift 클러스터를 만들려면 _개발 환경_을 만드는 예제인 OpenShift 클러스터 설정 설명서를 참조하십시오.
GitLab Operator는 다음 OpenShift 버전을 지원합니다:
OpenShift 릴리스 | 상태 | 최소 Operator 버전 | 아키텍처 | 지원 종료일 |
---|---|---|---|---|
4.17 | 지원됨 | 1.6.0 | x86-64 | 2026-04-01 |
4.16 | 지원됨 | 1.3.0 | x86-64 | 2027-06-27 |
4.15 | 지원됨 | 0.31.0 | x86-64 | 2025-08-27 |
4.14 | 지원됨 | 0.27.0 | x86-64 | 2026-10-31 |
4.13 | 지원됨 | 0.24.0 | x86-64 | 2024-11-17 |
4.12 | 지원되지 않음 | 0.24.0 | x86-64 | 2025-01-17 |
4.11 | 지원되지 않음 | 0.24.0 | x86-64 | 2024-02-10 |
GitLab Operator는 초기 릴리스 이후 새로운 마이너 Kubernetes 및 OpenShift 버전을 3개월 후에 지원할 계획입니다. 지금까지 나열된 버전보다 최신인 릴리스와의 호환성 문제를 이슈 추적기에 언제든지 환영합니다.
일부 GitLab 기능은 폐기된 버전 및 나열된 버전보다 오래된 버전에서 작동하지 않을 수 있습니다.
GitLab 에이전트 및 GitLab 차트와 같은 일부 구성요소의 경우, GitLab은 다른 클러스터 버전을 지원할 수 있습니다.
16.7부터 Operator는 x86-64 및 arm64용으로 빌드됩니다. arm64 이미지는 CI에서 테스트되지 않으며 제품 운영에 권장하지 않습니다.
다중 아키텍처 클러스터에서는 Operator 배포에 노드 선택기를 추가할 수 있습니다.
kubernetes.io/arch
라벨을 사용하는 노드에서만 예정된 아키텍처 레이블을 선택하도록 배포를 패치합니다.
kubectl patch deployments gitlab-controller-manager \
-p '{"spec": {"template": {"spec": {"nodeSelector": {"kubernetes.io/arch": "amd64"}}}}}'
Operator Helm 차트를 사용하는 경우 values.yaml
에 노드 선택기를 추가할 수 있습니다.
nodeSelector:
kubernetes.io/arch: amd64
현재 테스트하는 플랫폼을 사용하여 Operator가 amd64
노드에서 실행되도록합니다.
CNG 이미지의 arm64 지원에 대한 자세한 내용은 epic 10928을 참조하십시오.
인그레스 컨트롤러
응용 프로그램에 대한 외부 액세스 및 구성 요소 간의 안전한 통신을 제공하려면 인그레스 컨트롤러가 필요합니다.
GitLab Operator는 기본적으로 GitLab Helm Chart의 forked NGINX 차트를 배포합니다.
외부 인그레스 컨트롤러를 사용하려면 쿠버네티스 커뮤니티의 NGINX Ingress를 사용하여 인그레스 컨트롤러를 배포하세요. 플랫폼 및 선호하는 도구에 따라 링크의 관련 지침을 따르세요. 나중을 위해 Ingress 클래스 값을 주의 깊게 보세요(일반적으로 nginx
로 기본 설정됨).
GitLab CR을 구성할 때는 nginx-ingress.enabled=false
로 설정하여 GitLab Helm Chart에서 NGINX 오브젝트를 비활성화하세요.
TLS 인증서
오퍼레이터의 쿠버네티스 웹훅에 대한 인증서를 만들려면 cert-manager를 사용합니다. GitLab 인증서도 cert-manager를 사용해야 합니다.
오퍼레이터가 쿠버네티스 웹훅을 위한 인증서가 필요하므로 GitLab Chart에 번들된 cert-manager를 사용할 수 없습니다. 대신 오퍼레이터를 설치하기 전에 cert-manager를 설치하세요.
플랫폼과 도구에 대한 설치 문서를 따라 귀하의 플랫폼과 도구에 대한 지원되는 cert-manager 릴리즈를 설치하세요.
메트릭
메트릭 서버를 설치하여 HorizontalPodAutoscalers가 포드 메트릭을 검색할 수 있도록 합니다.
OpenShift에는 기본적으로 Prometheus 어댑터가 제공되므로 GitLab Operator가 다른 인스턴스를 설치하지 않도록 GitLab 사용자 정의 자원에서 spec.chart.values.prometheus.install=false
를 설정하면 됩니다.
도메인 네임 서비스 구성
DNS 레코드를 추가할 수 있는 인터넷에서 접근 가능한 도메인이 필요합니다.
GitLab 구성 요소에 도메인을 연결하는 자세한 내용은 네트워킹 및 DNS 문서를 참조하세요. GitLab 사용자 정의 자원(CR)을 정의할 때 이 섹션에 언급된 구성을 사용하세요.
OpenShift에서 인그레스를 구성하는 데 추가 고려 사항이 필요합니다. 자세한 내용은 OpenShift 인그레스를 참조하세요.
GitLab Operator 설치
설치 방법을 선택하여 시작하세요.
::Tabs
먼저 Operator 릴리스 페이지에서 릴리스 매니페스트를 검색하세요. 타겟 플랫폼(Kubernetes 또는 OpenShift)에 해당하는 매니페스트를 선택하세요.
다음으로 오퍼레이터가 설치될 네임스페이스를 생성하세요. 매니페스트에서 네임스페이스는 기본적으로 gitlab-system
으로 설정됩니다. 네임스페이스를 변경하려면 매니페스트를 수동으로 업데이트하거나 이 키와 기타 키를 쉽게 구성할 수 있는 Helm 차트를 사용하는 것을 고려하세요.
kubectl create namespace gitlab-system
마지막으로 매니페스트를 적용하세요.
kubectl apply -f gitlab-operator-<platform>.yaml
먼저 GitLab Helm 저장소를 추가하고 최신 업데이트를 검색하세요.
helm repo add gitlab https://charts.gitlab.io
helm repo update
그런 다음 GitLab Operator 차트를 설치하세요.
helm install gitlab-operator gitlab/gitlab-operator \
--create-namespace \
--namespace gitlab-system
사용 가능한 모든 구성 옵션에 대한 자세한 내용은 values.yaml
를 참조하세요.
GitLab Operator는 다음 OLM 채널에서 사용할 수 있습니다.
채널 | 목록 | 소스 |
---|---|---|
OperatorHub 커뮤니티 오퍼레이터 | 링크 | 링크 |
OpenShift 커뮤니티 오퍼레이터 | OpenShift와 OKD에 내장된 OperatorHub에서 사용 가능 | 링크 |
OpenShift 인증된 오퍼레이터 | 링크 | 링크 |
마지막으로 Operator 배포 상태를 확인하여 설치를 확인하세요.
kubectl -n gitlab-system get deployment gitlab-controller-manager
GitLab 설치
-
GitLab 사용자 정의 자원(CR)을 만듭니다.
mygitlab.yaml
와 같은 이름의 새 파일을 만드세요.다음은 이 파일에 넣을 내용 예시입니다:
apiVersion: apps.gitlab.com/v1beta1 kind: GitLab metadata: name: gitlab spec: chart: version: "X.Y.Z" # https://gitlab.com/gitlab-org/cloud-native/gitlab-operator/-/blob/<OPERATOR_VERSION>/CHART_VERSIONS values: global: hosts: domain: example.com # 실제 도메인을 여기에 사용하세요 ingress: configureCertmanager: true certmanager-issuer: email: youremail@example.com # 실제 이메일 주소를 사용하세요
spec.chart.values
아래에서 사용할 구성 옵션에 대한 자세한 내용은 GitLab Helm Chart 문서를 참조하세요. -
새로운 GitLab CR을 사용하여 GitLab 인스턴스를 배포하세요.
kubectl -n gitlab-system apply -f mygitlab.yaml
해당 명령은 GitLab Operator가 클러스터로 GitLab CR을 조정하도록 보냅니다. 컨트롤러 팟의 로그를 추적하여 진행 상황을 확인할 수 있습니다.
kubectl -n gitlab-system logs deployment/gitlab-controller-manager -c manager -f
GitLab 리소스 목록을 보고 상태를 확인할 수도 있습니다.
$ kubectl -n gitlab-system get gitlab 이름 상태 버전 gitlab 실행 중 5.2.4
CR이 조정되면(GitLab 리소스의 상태가
Running
일 때) 브라우저에서https://gitlab.example.com
로 GitLab에 액세스할 수 있습니다.
로그인하려면 배포에 대한 초기 루트 암호를 검색해야 합니다. 추가 지침은 Helm Chart 문서를 참조하세요.
권장되는 다음 단계
설치를 완료한 후에는 인증 옵션 및 가입 제한을 포함한 권장되는 다음 단계를 고려해 보십시오.
OpenShift
만약 OpenShift를 실행 중이라면, GitLab Operator의 승인 전략을 자동(기본값)에서 수동으로 변경하십시오. 이렇게 하면 승인이 이루어질 때까지 새로운 연산자 버전이 OpenShift에 설치되는 것을 방지합니다.
또한 startingCSV
를 사용자 정의하여 Operator의 버전을 고정하거나 최신이 아닌 버전으로 업그려드할 수 있습니다.
(startingCSV
자세한 내용은 여기에서 참조하세요).
- 승인 전략은 OpenShift 웹 콘솔에서 변경하거나 Subscription 편집으로 변경할 수 있습니다.
- 수동 업그레이드를 승인하려면
InstallPlan
의.spec.approved
를true
로 설정하십시오. - 각 GitLab Operator는 정의된 일부 GitLab 차트 버전을 지원합니다: GitLab Operator를 업그레이드하려면 GitLab 사용자 지정 리소스의 차트 버전도 업데이트해야 합니다.
- 연산자 및 지정된 차트 버전이 호환되지 않으면 차트의 구성 변경은 차트 버전에 관한 오류로 실패할 수 있습니다.
참고: OLM은 현재 연산자를 다운그레이드하지 않습니다.
GitLab Operator 제거하기
GitLab Operator 및 관련 리소스를 제거하려면 아래 단계를 따르십시오.
Operator를 제거하기 전에 유의할 사항:
- GitLab 인스턴스를 삭제할 때 연산자는 Persistent Volume Claims 또는 Secrets를 삭제하지 않습니다.
- Operator를 삭제할 때, 기본적으로 설치된 네임스페이스(
gitlab-system
)는 자동으로 삭제되지 않습니다. 이로써 영구적인 볼륨이 의도치 않게 손실되지 않도록 합니다.
GitLab 인스턴스 제거하기
kubectl -n gitlab-system delete -f mygitlab.yaml
위 명령어는 GitLab 인스턴스와 해당되는 Persistent Volume Claims를 제외한 모든 관련된 객체를 제거합니다.
GitLab Operator 제거하기
GL_OPERATOR_VERSION=<your_installed_version> # https://gitlab.com/gitlab-org/cloud-native/gitlab-operator/-/releases
PLATFORM=kubernetes # 또는 "openshift"
kubectl delete -f https://gitlab.com/api/v4/projects/18899486/packages/generic/gitlab-operator/${GL_OPERATOR_VERSION}/gitlab-operator-${PLATFORM}-${GL_OPERATOR_VERSION}.yaml
위 명령어는 Operator의 리소스 및 실행 중인 Operator의 Deployment을 포함하여 제거합니다. 이 명령어는 GitLab 인스턴스와 관련된 객체는 삭제하지 않습니다.
GitLab Operator 문제 해결
Operator의 문제 해결 방법은 troubleshooting.md에서 찾을 수 있습니다.