InfoGrab Docs

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 성능을 최적화하려면:

  1. GitLab Runner 구성에 빈 디렉터리 볼륨을 추가합니다.
  2. .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: ""

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 성능을 최적화하려면:

  1. GitLab Runner 구성에 빈 디렉터리 볼륨을 추가합니다.
  2. .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: ""