Oracle Cloud Infrastructure를 위한 GitLab Runner 구성
CRI(Container Runtime Interface)가 있는 Oracle Cloud Infrastructure(OCI) 환경에서 실행되는 GitLab Code Quality 작업은 성능 저하를 겪을 수 있습니다.
CRI(Container Runtime Interface)가 있는 Oracle Cloud Infrastructure(OCI) 환경에서 실행되는 GitLab Code Quality 작업은 성능 저하를 겪을 수 있습니다.
OCI에서 GitLab Runner 성능을 최적화하려면:
- GitLab Runner 구성에 빈 디렉터리 볼륨을 추가합니다.
.gitlab-ci.yml파일에서 특정 Docker 드라이버 설정을 구성합니다.
이 구성은 다음 환경에 적용됩니다:
- 클라우드 공급자: Oracle Cloud Infrastructure (OCI)
- 컨테이너 런타임: Container Runtime Interface (CRI)
- 프로세스: GitLab Code Quality 작업
- Runner 유형: GitLab Self-Managed Runner
빈 디렉터리 볼륨 추가#
GitLab Runner 구성에 빈 디렉터리를 정의하려면 values.yaml 파일의 runners 섹션에 다음 블록을 추가합니다:
[[runners.kubernetes.volumes.empty_dir]]
mount_path = "/var/lib"
name = "docker-data"
Runner 구성 예시#
다음 예시는 수정 사항이 포함된 GitLab Runner의 완전한 Helm 차트 values.yaml을 보여줍니다:
image:
registry: registry.gitlab.com
image: gitlab-org/gitlab-runner
tag: alpine-v16.11.0
useTini: false
imagePullPolicy: IfNotPresent
gitlabUrl: https://gitlab.com/
runnerToken: ""
terminationGracePeriodSeconds: 3600
concurrent: 100
shutdown_timeout: 0
checkInterval: 5
logLevel: debug
sessionServer:
enabled: false
## RBAC 지원을 위해:
rbac:
create: true
rules: []
clusterWideAccess: false
podSecurityPolicy:
enabled: false
resourceNames:
- gitlab-runner
metrics:
enabled: false
portName: metrics
port: 9252
serviceMonitor:
enabled: false
service:
enabled: false
type: ClusterIP
runners:
config: |
[[runners]]
output_limit = 200960
[runners.kubernetes]
privileged = true
allow_privilege_escalation = true
namespace = "{{.Release.Namespace}}"
image = "ubuntu:22.04"
helper_image_flavor = "ubuntu"
pull_policy = "if-not-present"
executor = "kubernetes"
[[runners.kubernetes.volumes.host_path]]
name = "buildah"
mount_path = "/var/lib/containers/storage"
read_only = false
[runners.kubernetes.volumes]
[[runners.kubernetes.volumes.empty_dir]]
mount_path = "/var/lib"
name = "docker-data"
[[runners.kubernetes.services]]
alias = "dind"
command = [
"--host=tcp://0.0.0.0:2375",
"--host=unix://var/run/docker.sock",
]
[runners.cache]
Type = "s3"
Path = "gitlab_runner"
Shared = true
[runners.cache.s3]
BucketName = "gitlab-shared-caching"
BucketLocation = "ap-singapore-1"
ServerAddress = ".compat.objectstorage.ap-singapore-1.oraclecloud.com"
AccessKey = ""
SecretKey = ""
configPath: ""
tags: ""
cache: {}
securityContext:
allowPrivilegeEscalation: false
readOnlyRootFilesystem: false
runAsNonRoot: true
privileged: false
capabilities:
drop: ["ALL"]
strategy: {}
podSecurityContext:
runAsUser: 100
fsGroup: 65533
resources: {}
affinity: {}
topologySpreadConstraints: {}
nodeSelector: {}
tolerations: []
hostAliases: []
deploymentAnnotations: {}
deploymentLabels: {}
podAnnotations: {}
podLabels: {}
priorityClassName: ""
secrets: []
configMaps: {}
volumeMounts: []
volumes: []
.gitlab-ci.yml 파일 업데이트#
기본 overlay2 드라이버를 해제하려면 기존 Code Quality 작업에 다음 키를 빈 변수로 추가합니다:
DOCKER_DRIVER: ""
Code Quality 작업 구성 예시#
다음 예시는 .gitlab-ci.yml 파일의 Code Quality 작업 구성을 보여줍니다:
code_quality:
services:
- name: $CODE_QUALITY_DIND_IMAGE
command: ['--tls=false', '--host=tcp://0.0.0.0:2375']
variables:
CODECLIMATE_PREFIX: $CI_DEPENDENCY_PROXY_GROUP_IMAGE_PREFIX/
CODECLIMATE_REGISTRY_USERNAME: $CI_DEPENDENCY_PROXY_USER
CODECLIMATE_REGISTRY_PASSWORD: $CI_DEPENDENCY_PROXY_PASSWORD
DOCKER_DRIVER: ""
