GitLab 차트를 위한 RBAC 구성
쿠버네티스 1.7 버전 이전에는 클러스터 내에서 권한이 없었습니다. 그러나 1.7 버전에서 롤 기반 액세스 제어 시스템(RBAC)이 도입되어 이제 클러스터 내에서 서비스가 수행할 수 있는 작업을 결정합니다.
RBAC는 GitLab의 여러 가지 측면에 영향을 미칩니다.
- Helm을 사용하여 GitLab 설치
- 프로메테우스 모니터링
- GitLab 러너
- 클러스터 내 PostgreSQL 데이터베이스 (RBAC가 활성화된 경우)
- 인증서 관리자
RBAC가 활성화되어 있는지 확인하기
현재 클러스터 롤을 나열해보고 실패한다면 RBAC
가 비활성화된 것입니다.
다음 명령을 실행하면 RBAC
가 비활성화되면 false
가 출력되고 활성화되어 있다면 true
가 출력됩니다.
kubectl get clusterroles > /dev/null 2>&1 && echo true || echo false
Service 계정
GitLab 차트는 특정 작업을 수행하기 위해 서비스 계정을 사용합니다. 이러한 계정과 관련된 역할은 차트에 의해 생성 및 관리됩니다.
서비스 계정은 다음 표에 설명되어 있습니다. 각 서비스 계정에 대해 표에는 다음이 표시됩니다:
- 이름 접미사(접두사는 릴리스 이름임)
- 짧은 설명. 예를 들면, 그것이 사용되는 곳이나 무엇을 위해 사용되는지
- 연결된 역할 및 어떤 수준의 자원에 대한 액세스가 있는지. 액세스 수준은 읽기 전용 (R), 쓰기 전용 (W), 또는 읽기/쓰기 (RW)입니다. 자원의 그룹 이름은 제외됩니다.
- 역할의 범위, 즉 클러스터 (C) 또는 네임스페이스 (NS). 일부 경우에는 역할의 범위를 NS/C로 구성할 수 있습니다.
이름 접미사 | 설명 | 역할 | 범위 |
---|---|---|---|
gitlab-runner
| GitLab 러너가 이 계정으로 실행됩니다. | 모든 자원 (RW) | NS/C |
ingress-nginx
| NGINX Ingress가 서비스 액세스 포인트를 제어할 때 사용됩니다. | Secret, Pod, Endpoint, Ingress (R); Event (W); ConfigMap, Service (RW) | NS/C |
shared-secrets
| 공유 비밀을 생성하는 작업은 이 계정으로 실행됩니다. (설치/업그레이드 후크에서) | Secret (RW) | NS |
cert-manager
| 인증서 관리자를 제어하는 작업은 이 계정으로 실행됩니다. | Issuer, Certificate, CertificateRequest, Order (RW) | NS/C |
GitLab 차트는 다른 차트에 의존하며 이러한 차트는 RBAC를 사용하고 고유한 서비스 계정과 역할 바인딩을 생성합니다. 다음은 개요입니다:
- 프로메테우스 모니터링은 기본적으로 여러 개의 서비스 계정을 생성합니다. 이들은 모두 클러스터 레벨 역할에 연결됩니다. 자세한 정보는 프로메테우스 차트 문서를 참조하세요.
- 인증서 관리자는 사용자 정의 리소스와 클러스터 수준의 네이티브 리소스를 관리하기 위해 기본적으로 서비스 계정을 생성합니다. 자세한 정보는 인증서 관리자 차트 RBAC 템플릿를 참조하세요.
- 클러스터 내 PostgreSQL 데이터베이스를 사용하는 경우 (기본값), 서비스 계정이 활성화되지 않습니다. 활성화할 수 있지만 이것은 PostgreSQL 서비스를 실행하는 데만 사용되며 특정 역할에 연결되지 않습니다. 자세한 정보는 PostgreSQL 차트를 참조하세요.