GitLab 차트에 대한 RBAC 구성

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

Kubernetes 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에서 서비스 접근 포인트를 제어하는 데 사용됩니다. 비밀, 포드, 엔드포인트, 인그레스 (R); 이벤트 (W); ConfigMap, 서비스 (RW) NS/C
shared-secrets 공유 비밀을 생성하는 작업은 이 계정으로 실행됩니다. (사전 설치/업그레이드 훅에서) 비밀 (RW) NS
cert-manager 인증서 관리자를 제어하는 작업은 이 계정으로 실행됩니다. 발급자, 인증서, 인증서 요청, 주문 (RW) NS/C

GitLab 차트는 RBAC를 사용하고 자체 서비스 계정 및 역할 바인딩을 생성하는 다른 차트에 의존합니다. 다음은 개요입니다:

  • Prometheus 모니터링은 기본적으로 여러 개의 서비스 계정을 생성합니다. 이들은 모두 클러스터 수준 역할에 연결됩니다. 자세한 내용은 Prometheus 차트 문서를 참조하세요.

  • 인증서 관리자는 기본적으로 클러스터 수준에서 기본 리소스와 함께 자체 리소스를 관리하기 위한 서비스 계정을 생성합니다. 자세한 내용은 cert-manager 차트 RBAC 템플릿을 참조하세요.

  • 클러스터 내 PostgreSQL 데이터베이스를 사용할 때(기본값) 서비스 계정은 활성화되지 않습니다. 활성화할 수 있지만 PostgreSQL 서비스를 실행하는 데만 사용되며 특정 역할에 연결되지 않습니다. 자세한 내용은 PostgreSQL 차트를 참조하세요.