GitLab 차트를 위한 RBAC 구성

Tier: Free, Premium, Ultimate Offering: Self-Managed

쿠버네티스 1.7 버전 이전에는 클러스터 내에서 권한이 없었습니다. 그러나 1.7 버전의 출시로 인해 클러스터 내에서 어떤 서비스가 어떤 작업을 수행할 수 있는지를 결정하는 역할 기반 액세스 제어 (RBAC) 시스템이 도입되었습니다.

RBAC는 GitLab의 몇 가지 다른 측면에 영향을 미칩니다.

  • Helm을 사용하여 GitLab 설치
  • Prometheus 모니터링
  • GitLab Runner
  • 클러스터 내 PostgreSQL 데이터베이스 (RBAC가 활성화된 경우)
  • 인증서 관리자

RBAC가 활성화되어 있는지 확인

현재 클러스터 역할을 나열하여 확인한 후 실패하면 RBAC가 비활성화된 것입니다.

이 명령은 RBAC가 비활성화되어 있으면 false를 출력하고, 그렇지 않으면 true를 출력합니다.

kubectl get clusterroles > /dev/null 2>&1 && echo true || echo false

서비스 계정

GitLab 차트는 특정 작업을 수행하기 위해 서비스 계정을 사용합니다. 이러한 계정 및 관련 역할은 차트에 의해 생성되고 관리됩니다.

다음 표에 서비스 계정에 대해 설명되어 있습니다. 각 서비스 계정에 대해 표에는 다음이 표시됩니다.

  • 이름 접미어 (접두어는 릴리스 이름임).
  • 짧은 설명. 사용되는 위치나 용도에 대한 예시.
  • 연결된 역할 및 어떤 자원에 대한 어떤 수준의 액세스가 있는지. 액세스 수준은 읽기 전용 (R), 쓰기 전용 (W), 또는 읽기-쓰기 (RW) 중 하나입니다. 자원의 그룹 이름은 생략됩니다.
  • 역할의 범위, 즉 클러스터 (C) 또는 네임스페이스 (NS). 경우에 따라 역할의 범위는 NS/C 두 값 중 하나로 구성할 수 있습니다.
이름 접미어 설명 역할 범위
gitlab-runner GitLab Runner가 이 계정으로 실행됩니다. 모든 자원 (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를 사용하고 자체 서비스 계정 및 역할 바인딩을 만듭니다. 다음은 개요입니다.

  • Prometheus 모니터링은 기본적으로 여러 개의 자체 서비스 계정을 생성합니다. 모두 클러스터 레벨 역할과 연결됩니다. 자세한 정보는 Prometheus 차트 설명서를 참조하세요.
  • 인증서 관리자는 사용자 정의 자원뿐만 아니라 클러스터 레벨에서 원본 자원을 관리하기 위해 기본적으로 서비스 계정을 생성합니다. 자세한 정보는 cert-manager 차트 RBAC 템플릿을 참조하세요.
  • 클러스터 내부 PostgreSQL 데이터베이스를 사용하는 경우 (기본값) 서비스 계정이 활성화되지 않습니다. 활성화할 수는 있지만 특정 역할과 연결되지는 않습니다. 자세한 정보는 PostgreSQL 차트를 참조하세요.