GitLab 에이전트 구성

Tier: 프리미엄, 얼티메이트 Offering: GitLab.com, Self-managed, GitLab Dedicated

작업 공간을 설정할 때, 원격 개발을 위해 GitLab 에이전트를 구성해야 합니다. 원격 개발 설정은 remote_development 아래의 에이전트 구성 파일에서 사용할 수 있습니다.

프로젝트의 루트 그룹에 정의된 아무 에이전트를 사용할 수 있으며, 해당 에이전트가 원격 개발에 적절히 구성되어 있는 경우입니다.

원격 개발 설정

설정 설명
enabled GitLab 에이전트에 대해 원격 개발이 활성화되어 있는지를 나타냄.
dns_zone 워크스페이스가 있는 DNS 영역을 정의함.
gitlab_workspaces_proxy gitlab-workspaces-proxy가 설치된 네임스페이스.
network_policy 워크스페이스용 방화벽 규칙.
default_resources_per_workspace_container 워크스페이스 컨테이너당 CPU 및 메모리에 대한 기본 요청 및 제한.
max_resources_per_workspace 워크스페이스당 CPU 및 메모리에 대한 최대 요청 및 제한.
workspaces_quota GitLab 에이전트용 워크스페이스의 최대 개수.
workspaces_per_user_quota 사용자당 워크스페이스의 최대 개수.
note
설정에 잘못된 값이 있는 경우, 해당 값을 수정할 때까지 어떠한 설정도 업데이트할 수 없습니다.

enabled

다음과 같이 사용하여 정의하세요:

  • GitLab 에이전트가 GitLab 인스턴스와 통신할 수 있는지 여부.
  • GitLab 에이전트로 워크스페이스를 생성할 수 있는지 여부.

기본값은 false입니다.

에이전트 구성에서 원격 개발을 활성화하려면 enabledtrue로 설정하세요:

remote_development:
  enabled: true

원격 개발이 비활성화된 경우, 관리자는 쿠버네티스 클러스터에서 해당 워크스페이스를 제거하려면 수동으로 실행 중인 워크스페이스를 수동으로 삭제해야 합니다.

dns_zone

작업 공간을 사용할 URL의 DNS 영역을 정의하는 데 사용하세요.

예시 구성:

remote_development:
  dns_zone: "<workspaces.example.dev>"

gitlab_workspaces_proxy

gitlab-workspaces-proxy가 설치된 네임스페이스를 정의하는 데 사용하세요. 기본값은 gitlab-workspacesgitlab_workspaces_proxy.namespace입니다.

예시 구성:

remote_development:
  gitlab_workspaces_proxy:
    namespace: "<custom-gitlab-workspaces-proxy-namespace>"

network_policy

각 워크스페이스의 네트워크 정책을 정의하는 데 사용하세요. 이 설정은 워크스페이스의 네트워크 트래픽을 제어합니다.

기본값은 다음과 같습니다:

remote_development:
  network_policy:
    enabled: true
    egress:
      - allow: "0.0.0.0/0"
        except:
          - "10.0.0.0/8"
          - "172.16.0.0/12"
          - "192.168.0.0/16"

이 구성에서:

  • enabledtrue이기 때문에 각 워크스페이스마다 네트워크 정책이 생성됩니다.
  • egress 규칙은 인터넷(0.0.0.0/0)으로의 모든 트래픽을 허용하지만 IP CIDR 범위인 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16로의 트래픽은 제외됩니다.

네트워크 정책의 동작은 쿠버네티스 네트워크 플러그인에 따라 다릅니다. 자세한 내용은 Kubernetes 문서를 참조하세요.

network_policy.enabled

각 워크스페이스에 대해 네트워크 정책이 생성되는지 여부를 정의하는 데 사용하세요. 기본값은 true입니다.

network_policy.egress

이 설정을 사용하여 워크스페이스에서 외부로 향하는 대상으로 허용할 IP CIDR 범위를 정의합니다.

다음 조건에서 egress 규칙을 정의하세요:

  • GitLab 인스턴스가 사설 IP 범위에 있는 경우
  • 워크스페이스가 사설 IP 범위의 클라우드 리소스에 액세스해야 하는 경우

목록의 각 요소는 선택적인 except 속성을 가진 allow 속성을 정의합니다. allow는 트래픽을 허용할 IP 범위를 정의합니다. exceptallow 범위에서 제외할 IP 범위를 나열합니다.

구성 예시:

remote_development:
  network_policy:
    egress:
      - allow: "0.0.0.0/0"
        except:
          - "10.0.0.0/8"
          - "172.16.0.0/12"
          - "192.168.0.0/16"
      - allow: "172.16.123.1/32"

이 예시에서 워크스페이스에서의 트래픽이 허용되는 조건은 다음과 같습니다:

  • 대상 IP가 10.0.0.0/8, 172.16.0.0/12, 또는 192.168.0.0/16을 제외한 모든 범위일 경우
  • 대상 IP가 172.16.123.1/32인 경우

default_resources_per_workspace_container

이 설정을 사용하여 워크스페이스 컨테이너 당 CPU 및 메모리에 대한 기본 요청 및 제한을 정의합니다. devfile에서 정의하는 모든 리소스는 이 설정을 덮어씁니다.

default_resources_per_workspace_container에서는 requestslimits가 필요합니다. 가능한 CPU와 메모리 값에 대한 자세한 정보는 쿠버네티스에서의 리소스 단위를 참조하세요.

이 값 중 하나라도 변경하면 기존 워크스페이스는 즉시 재시작하여 변경 사항이 적용됩니다.

구성 예시:

remote_development:
  default_resources_per_workspace_container:
    requests:
      cpu: "0.5"
      memory: "512Mi"
    limits:
      cpu: "1"
      memory: "1Gi"

max_resources_per_workspace

이 설정을 사용하여 워크스페이스 당 CPU 및 메모리에 대한 최대 요청 및 제한을 정의합니다. max_resources_per_workspace에서는 requestslimits가 필요합니다. 가능한 CPU와 메모리 값에 대한 자세한 정보는 다음을 참조하세요:

이 값 중 하나라도 변경하면 기존 워크스페이스는 즉시 재시작하여 변경 사항이 적용됩니다. requestslimits에 설정한 값이 초과될 경우 워크스페이스가 실패합니다.

구성 예시:

remote_development:
  max_resources_per_workspace:
    requests:
      cpu: "1"
      memory: "1Gi"
    limits:
      cpu: "2"
      memory: "2Gi"

정의한 최대 리소스에는 프로젝트 저장소를 복제하는 등의 초기 컨테이너 작업을 수행하는 데 필요한 리소스도 포함되어야 합니다.

workspaces_quota

이 설정을 사용하여 GitLab 에이전트의 워크스페이스 최대 개수를 설정합니다.

에이전트에 대한 워크스페이스의 개수가 정의된 workspaces_quota에 도달하면 다음 상황에서 에이전트에 대한 새로운 워크스페이스를 생성할 수 없습니다. - workspaces_quota0으로 설정된 경우

이 설정은 에이전트에 대한 기존 워크스페이스에는 영향을 미치지 않습니다.

기본 값은 -1 (무제한)입니다. 가능한 값은 -1 이상입니다.

구성 예시:

remote_development:
  workspaces_quota: 10

workspaces_per_user_quota

이 설정을 사용하여 사용자 당 워크스페이스 최대 개수를 설정합니다.

사용자에 대한 워크스페이스의 개수가 정의된 workspaces_per_user_quota에 도달하면 다음 상황에서 사용자에 대한 새로운 워크스페이스를 생성할 수 없습니다. - workspaces_per_user_quota0으로 설정된 경우

이 설정은 사용자에 대한 기존 워크스페이스에는 영향을 미치지 않습니다.

기본 값은 -1 (무제한)입니다. 가능한 값은 -1 이상입니다.

구성 예시:

remote_development:
  workspaces_per_user_quota: 3

원격 개발을 위한 사용자 접근 구성하기

user_access 모듈을 구성하여 GitLab 자격 증명으로 연결된 Kubernetes 클러스터에 액세스할 수 있습니다. 이 모듈은 remote_development 모듈과 독립적으로 구성되고 실행됩니다.

동일한 GitLab 에이전트에서 user_accessremote_development을 구성할 때 주의하십시오. remote_development 클러스터는 사용자 자격 증명(예: 개인 액세스 토큰)을 Kubernetes Secrets로 관리합니다. user_access의 잘못된 구성으로 인해 이러한 개인 데이터가 Kubernetes API를 통해 접근 가능해질 수 있습니다.

user_access를 구성하는 자세한 내용은 Kubernetes 액세스 구성을 참조하십시오.