GitLab 에이전트 구성
- GitLab 15.11에 도입되었으며 기본적으로
remote_development_feature_flag
라는 플래그로 사용이 가능합니다. 기본적으로 비활성화됩니다.- GitLab 16.0에서 GitLab.com 및 자체 호스트에서 활성화되었습니다.
- GitLab 16.7에서 일반적으로 사용 가능하게 되었으며,
remote_development_feature_flag
기능이 제거되었습니다.
작업 공간을 설정할 때, 원격 개발을 위해 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
| 사용자 당 최대 작업 공간 수를 정의합니다. |
enabled
이 설정을 사용하여 다음을 정의합니다:
- GitLab 에이전트가 GitLab 인스턴스와 통신할 수 있는지 여부.
- GitLab 에이전트로 작업 공간을 생성할 수 있는지 여부.
기본값은 false
입니다.
에이전트 구성에서 원격 개발을 활성화하려면 enabled
를 true
로 설정하세요:
remote_development:
enabled: true
원격 개발이 비활성화된 경우, 관리자는 매뉴얼으로 실행 중인 작업 공간을 삭제하여 해당 작업 공간을 Kubernetes 클러스터에서 제거해야 합니다.
dns_zone
이 설정을 사용하여 작업 공간이 사용 가능한 URL의 DNS 영역을 정의합니다.
예시 구성:
remote_development:
dns_zone: "<workspaces.example.dev>"
gitlab_workspaces_proxy
이 설정을 사용하여 gitlab-workspaces-proxy
가 설치된 네임스페이스를 정의합니다.
gitlab_workspaces_proxy.namespace
의 기본값은 gitlab-workspaces
입니다.
예시 구성:
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"
이 구성에서:
-
enabled
가true
인 경우 각 작업 공간에 대한 네트워크 정책이 생성됩니다. - egress 규칙은 인터넷(
0.0.0.0/0
)으로 모든 트래픽을 허용하나,10.0.0.0/8
,172.16.0.0/12
,192.168.0.0/16
의 IP CIDR 범위로의 트래픽은 제외됩니다.
네트워크 정책의 동작은 Kubernetes 네트워크 플러그인에 따라 달라집니다. 자세한 내용은 Kubernetes 문서를 참조하세요.
network_policy.enabled
이 설정을 사용하여 각 작업 공간에 대한 네트워크 정책이 생성되는지 여부를 정의합니다.
network_policy.enabled
의 기본값은 true
입니다.
network_policy.egress
이 설정을 사용하여 작업 공간에서 외부로의 egress 대상으로 허용할 IP CIDR 범위 디렉터리을 정의합니다.
다음 상황에서 egress 규칙을 정의하세요:
- GitLab 인스턴스가 사설 IP 범위에 있을 때.
- 작업 공간이 사설 IP 범위에 있는 클라우드 리소스에 액세스해야 할 때.
다음과 같이 디렉터리의 각 요소는 allow
속성과 선택적인 except
속성을 정의합니다.
allow
는 트래픽을 허용하는 IP 범위를 정의하고, except
는 allow
범위에서 제외할 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
- GitLab 16.8에서 도입되었습니다.
이 설정을 사용하여 워크스페이스 컨테이너 당 CPU 및 메모리에 대한 기본 요청 및 제한을 정의합니다. devfile에서 정의하는 모든 리소스는 이 설정을 덮어씁니다.
default_resources_per_workspace_container
의 경우 requests
와 limits
가 필요합니다.
가능한 CPU 및 메모리 값에 대한 자세한 정보는 Kubernetes의 리소스 단위를 참조하십시오.
이 값 중 하나라도 변경하면 기존 워크스페이스가 즉시 다시 시작되어 변경 사항이 적용됩니다.
구성 예:
remote_development:
default_resources_per_workspace_container:
requests:
cpu: "0.5"
memory: "512Mi"
limits:
cpu: "1"
memory: "1Gi"
max_resources_per_workspace
- GitLab 16.8에서 도입되었습니다.
이 설정을 사용하여 워크스페이스 당 CPU 및 메모리에 대한 최대 요청 및 제한을 정의합니다.
max_resources_per_workspace
의 경우 requests
와 limits
가 필요합니다.
가능한 CPU 및 메모리 값에 대한 자세한 정보는 다음을 참조하십시오:
이 값 중 하나라도 변경하면 기존 워크스페이스가 즉시 다시 시작되어 변경 사항이 적용됩니다.
requests
및 limits
에 설정한 값 이상으로 워크스페이스가 실패합니다.
구성 예:
remote_development:
max_resources_per_workspace:
requests:
cpu: "1"
memory: "1Gi"
limits:
cpu: "2"
memory: "2Gi"
정의한 최대 리소스에는 프로젝트 리포지터리를 복제하는 등 부팅 작업을 수행하는 이니셜 컨테이너에 필요한 리소스도 포함되어야 합니다.
workspaces_quota
- GitLab 16.9에서 도입되었습니다.
이 설정을 사용하여 GitLab 에이전트의 최대 워크스페이스 수를 설정합니다.
에이전트의 워크스페이스 수가 정의한 workspaces_quota
에 도달한 경우에는 더 이상의 워크스페이스를 생성할 수 없습니다.
workspaces_quota
가 0
으로 설정된 경우에도 워크스페이스를 생성할 수 없습니다.
이 설정은 에이전트의 기존 워크스페이스에는 영향을 미치지 않습니다.
기본값은 -1
(무제한)입니다.
가능한 값은 -1
이상입니다.
구성 예:
remote_development:
workspaces_quota: 10
workspaces_per_user_quota
- GitLab 16.9에서 도입되었습니다.
이 설정을 사용하여 사용자 당 최대 워크스페이스 수를 설정합니다.
사용자의 워크스페이스 수가 정의한 workspaces_per_user_quota
에 도달한 경우에는 더 이상의 워크스페이스를 생성할 수 없습니다.
workspaces_per_user_quota
가 0
으로 설정된 경우에도 워크스페이스를 생성할 수 없습니다.
이 설정은 사용자의 기존 워크스페이스에는 영향을 미치지 않습니다.
기본값은 -1
(무제한)입니다.
가능한 값은 -1
이상입니다.
구성 예:
remote_development:
workspaces_per_user_quota: 3
원격 개발로 사용자 액세스 구성
user_access
모듈을 구성하여 GitLab 자격 증명으로 연결된 Kubernetes 클러스터에 액세스할 수 있습니다.
이 모듈은 remote_development
모듈과 독립적으로 구성하고 실행됩니다.
동일한 GitLab 에이전트에 user_access
및 remote_development
를 모두 구성할 때 주의하십시오.
remote_development
클러스터는 사용자 자격 증명(예: 개인 액세스 토큰)을 Kubernetes Secrets로 관리합니다.
user_access
의 잘못된 구성은 이러한 개인 데이터가 Kubernetes API를 통해 액세스 가능하게 할 수 있습니다.
user_access
를 구성하는 자세한 정보는 Kubernetes 액세스 구성을 참조하십시오.