CI/CD 변수
GitLab v19.1Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
Auto DevOps 도메인 설정, 커스텀 Helm 차트 제공, 또는 애플리케이션 스케일링을 위해 CI/CD 변수를 사용하세요. 이 변수들을 사용해 빌드를 커스터마이징하고 배포하세요. GitLab 16.0부터 POSTGRES_ENABLED는 기본적으로 설정되지 않습니다.
Auto DevOps 도메인 설정, 커스텀 Helm 차트 제공, 또는 애플리케이션 스케일링을 위해 CI/CD 변수를 사용하세요.
빌드 및 배포 변수#
이 변수들을 사용해 빌드를 커스터마이징하고 배포하세요.
| CI/CD 변수 | 설명 |
|---|---|
| ADDITIONAL_HOSTS | 쉼표로 구분된 완전 정규화 도메인 이름(FQDN) 목록으로, Ingress 호스트에 추가됩니다. |
| _ADDITIONAL_HOSTS | 특정 환경에 대해 쉼표로 구분된 완전 정규화 도메인 이름(FQDN) 목록으로, Ingress 호스트에 추가됩니다. ADDITIONAL_HOSTS보다 우선순위가 높습니다. |
| AUTO_BUILD_IMAGE_VERSION | build job에 사용되는 이미지 버전을 커스터마이징합니다. 버전 목록을 참조하세요. |
| AUTO_DEPLOY_IMAGE_VERSION | 쿠버네티스 배포 job에 사용되는 이미지 버전을 커스터마이징합니다. 버전 목록을 참조하세요. |
| AUTO_DEVOPS_ATOMIC_RELEASE | Auto DevOps는 기본적으로 Helm 배포에 --atomic을 사용합니다. 이 변수를 false로 설정하면 --atomic 사용을 비활성화합니다. |
| AUTO_DEVOPS_BUILD_IMAGE_CNB_BUILDER | Cloud Native Buildpacks로 빌드할 때 사용되는 빌더입니다. 기본 빌더는 heroku/buildpacks:22입니다. 자세한 내용을 참조하세요. |
| AUTO_DEVOPS_BUILD_IMAGE_EXTRA_ARGS | docker build 명령에 전달되는 추가 인수입니다. 따옴표를 사용해도 단어 분리를 막을 수 없습니다. 자세한 내용을 참조하세요. |
| AUTO_DEVOPS_BUILD_IMAGE_FORWARDED_CI_VARIABLES | 빌드 환경(빌드팩 빌더 또는 docker build)에 전달할 CI/CD 변수 이름의 쉼표 구분 목록입니다. |
| AUTO_DEVOPS_BUILD_IMAGE_CNB_PORT | GitLab 15.0 이상에서, 생성된 Docker 이미지가 노출하는 포트입니다. false로 설정하면 포트를 노출하지 않습니다. 기본값은 5000입니다. |
| AUTO_DEVOPS_BUILD_IMAGE_CONTEXT | Dockerfile과 Cloud Native Buildpacks의 빌드 컨텍스트 디렉터리를 설정하는 데 사용됩니다. 기본값은 루트 디렉터리입니다. |
| AUTO_DEVOPS_CHART | 앱을 배포하는 데 사용되는 Helm Chart입니다. 기본값은 GitLab에서 제공하는 것입니다. |
| AUTO_DEVOPS_CHART_REPOSITORY | 차트를 검색하는 데 사용되는 Helm Chart 리포지터리입니다. 기본값은 https://charts.gitlab.io입니다. |
| AUTO_DEVOPS_CHART_REPOSITORY_NAME | Helm 리포지터리 이름을 설정하는 데 사용됩니다. 기본값은 gitlab입니다. |
| AUTO_DEVOPS_CHART_REPOSITORY_USERNAME | Helm 리포지터리에 연결할 사용자 이름을 설정하는 데 사용됩니다. 기본값은 자격 증명 없음입니다. AUTO_DEVOPS_CHART_REPOSITORY_PASSWORD도 함께 설정하세요. |
| AUTO_DEVOPS_CHART_REPOSITORY_PASSWORD | Helm 리포지터리에 연결할 비밀번호를 설정하는 데 사용됩니다. 기본값은 자격 증명 없음입니다. AUTO_DEVOPS_CHART_REPOSITORY_USERNAME도 함께 설정하세요. |
| AUTO_DEVOPS_CHART_REPOSITORY_PASS_CREDENTIALS | 차트 아티팩트가 리포지터리와 다른 호스트에 있을 때 차트 서버에 Helm 리포지터리 자격 증명을 전달하려면 비어 있지 않은 값으로 설정하세요. |
| AUTO_DEVOPS_CHART_REPOSITORY_INSECURE | Helm 명령에 --insecure-skip-tls-verify 인수를 추가하려면 비어 있지 않은 값으로 설정하세요. 기본적으로 Helm은 TLS 검증을 사용합니다. |
| AUTO_DEVOPS_CHART_CUSTOM_ONLY | 커스텀 차트만 사용하려면 비어 있지 않은 값으로 설정하세요. 기본적으로 최신 차트는 GitLab에서 다운로드됩니다. |
| AUTO_DEVOPS_CHART_VERSION | 배포 차트의 버전을 설정합니다. 기본값은 사용 가능한 최신 버전입니다. |
| AUTO_DEVOPS_COMMON_NAME | GitLab 15.5부터, TLS 인증서에 사용되는 공통 이름을 커스터마이징하려면 유효한 도메인 이름으로 설정하세요. 기본값은 le-$CI_PROJECT_ID.$KUBE_INGRESS_BASE_DOMAIN입니다. Ingress에 이 대체 호스트를 설정하지 않으려면 false로 설정하세요. |
| AUTO_DEVOPS_DEPLOY_DEBUG | 이 변수가 있으면 Helm이 디버그 로그를 출력합니다. |
| AUTO_DEVOPS_ALLOW_TO_FORCE_DEPLOY_V |
auto-deploy-image v1.0.0부터, 이 변수가 있으면 차트의 새 주요 버전이 강제로 배포됩니다. 자세한 내용은 경고를 무시하고 계속 배포하기를 참조하세요. |
| BUILDPACK_URL | 전체 Buildpack URL입니다. Pack이 지원하는 URL을 가리켜야 합니다. |
| CANARY_ENABLED | Canary 환경에 대한 배포 정책을 정의하는 데 사용됩니다. |
| BUILDPACK_VOLUMES | 마운트할 하나 이상의 Buildpack 볼륨을 지정합니다. 목록 구분자로 파이프 |
| CANARY_PRODUCTION_REPLICAS | 프로덕션 환경의 Canary 배포를 위해 배포할 카나리 레플리카 수입니다. CANARY_REPLICAS보다 우선순위가 높습니다. 기본값은 1입니다. |
| CANARY_REPLICAS | Canary 배포를 위해 배포할 카나리 레플리카 수입니다. 기본값은 1입니다. |
| CI_APPLICATION_REPOSITORY | 빌드 또는 배포 중인 컨테이너 이미지의 리포지터리($CI_APPLICATION_REPOSITORY:$CI_APPLICATION_TAG)입니다. 자세한 내용은 커스텀 컨테이너 이미지를 참조하세요. |
| CI_APPLICATION_TAG | 빌드 또는 배포 중인 컨테이너 이미지의 태그($CI_APPLICATION_REPOSITORY:$CI_APPLICATION_TAG)입니다. 자세한 내용은 커스텀 컨테이너 이미지를 참조하세요. |
| DAST_AUTO_DEPLOY_IMAGE_VERSION | 기본 브랜치의 DAST 배포에 사용되는 이미지 버전을 커스터마이징합니다. 일반적으로 AUTO_DEPLOY_IMAGE_VERSION과 동일해야 합니다. 버전 목록을 참조하세요. |
| DOCKERFILE_PATH | build stage의 기본 Dockerfile 경로를 재정의할 수 있습니다. |
| HELM_RELEASE_NAME | helm 릴리스 이름을 재정의할 수 있습니다. 단일 네임스페이스에 여러 프로젝트를 배포할 때 고유한 릴리스 이름을 할당하는 데 사용할 수 있습니다. |
| HELM_UPGRADE_VALUES_FILE | helm upgrade 값 파일을 재정의할 수 있습니다. 기본값은 .gitlab/auto-deploy-values.yaml입니다. |
| HELM_UPGRADE_EXTRA_ARGS | 애플리케이션 배포 시 helm upgrade 명령에 추가 옵션을 허용합니다. 따옴표를 사용해도 단어 분리를 막을 수 없습니다. |
| INCREMENTAL_ROLLOUT_MODE | 이 변수가 있으면 프로덕션 환경의 점진적 롤아웃을 활성화하는 데 사용할 수 있습니다. 수동 배포 job에는 manual로, 각각 5분 지연이 있는 자동 롤아웃 배포에는 timed로 설정하세요. |
| K8S_SECRET_* | K8S_SECRET_으로 시작하는 모든 변수는 Auto DevOps에 의해 배포된 애플리케이션에 환경 변수로 제공됩니다. |
| KUBE_CONTEXT | KUBECONFIG에서 사용할 컨텍스트를 선택하는 데 사용할 수 있습니다. KUBE_CONTEXT가 비어 있으면 KUBECONFIG의 기본 컨텍스트(있는 경우)가 사용됩니다. 쿠버네티스용 에이전트와 함께 사용할 때는 컨텍스트를 선택해야 합니다. |
| KUBE_INGRESS_BASE_DOMAIN | 클러스터별 도메인을 설정하는 데 사용할 수 있습니다. 자세한 내용은 클러스터 도메인을 참조하세요. |
| KUBE_NAMESPACE | 배포에 사용되는 네임스페이스입니다. 인증서 기반 클러스터를 사용할 때 이 값을 직접 덮어쓰지 마세요. |
| KUBECONFIG | 배포에 사용할 kubeconfig입니다. 사용자 제공 값이 GitLab 제공 값보다 우선합니다. |
| PRODUCTION_REPLICAS | 프로덕션 환경에 배포할 레플리카 수입니다. REPLICAS보다 우선순위가 높으며 기본값은 1입니다. 무중단 업그레이드를 위해 2 이상으로 설정하세요. |
| REPLICAS | 배포할 레플리카 수입니다. 기본값은 1입니다. replicaCount를 수정하는 대신 이 변수를 변경하세요. |
| ROLLOUT_RESOURCE_TYPE | 커스텀 Helm 차트를 사용할 때 배포되는 리소스 유형을 지정할 수 있습니다. 기본값은 deployment입니다. |
| ROLLOUT_STATUS_DISABLED | 모든 리소스 유형을 지원하지 않는 경우(예: cronjob) 롤아웃 상태 확인을 비활성화하는 데 사용됩니다. |
| STAGING_ENABLED | 스테이징 및 프로덕션 환경에 대한 배포 정책을 정의하는 데 사용됩니다. |
| TRACE | 임의의 값으로 설정하면 Helm 명령이 상세 출력을 생성합니다. Auto DevOps 배포 문제를 진단하는 데 도움이 됩니다. |
데이터베이스 변수#
GitLab 16.0부터 POSTGRES_ENABLED는 기본적으로 설정되지 않습니다.
CI/CD를 PostgreSQL 데이터베이스와 통합하려면 이 변수들을 사용하세요.
| CI/CD 변수 | 설명 |
|---|---|
| DB_INITIALIZE | 애플리케이션의 PostgreSQL 데이터베이스를 초기화하기 위해 실행할 명령을 지정하는 데 사용됩니다. 애플리케이션 Pod 내에서 실행됩니다. |
| DB_MIGRATE | 애플리케이션의 PostgreSQL 데이터베이스를 마이그레이션하기 위해 실행할 명령을 지정하는 데 사용됩니다. 애플리케이션 Pod 내에서 실행됩니다. |
| POSTGRES_ENABLED | PostgreSQL 활성화 여부입니다. PostgreSQL 자동 배포를 활성화하려면 true로 설정하세요. |
| POSTGRES_USER | PostgreSQL 사용자입니다. 기본값은 user입니다. 커스텀 사용자 이름을 사용하려면 설정하세요. |
| POSTGRES_PASSWORD | PostgreSQL 비밀번호입니다. 기본값은 testing-password입니다. 커스텀 비밀번호를 사용하려면 설정하세요. |
| POSTGRES_DB | PostgreSQL 데이터베이스 이름입니다. 기본값은 $CI_ENVIRONMENT_SLUG 값입니다. 커스텀 데이터베이스 이름을 사용하려면 설정하세요. |
| POSTGRES_VERSION | 사용할 postgres Docker 이미지의 태그입니다. 테스트 및 배포의 기본값은 9.6.16입니다. AUTO_DEVOPS_POSTGRES_CHANNEL이 1로 설정된 경우 배포는 기본 버전 9.6.2를 사용합니다. |
| POSTGRES_HELM_UPGRADE_VALUES_FILE | auto-deploy-image v2를 사용할 때 PostgreSQL의 helm upgrade 값 파일을 재정의할 수 있습니다. 기본값은 .gitlab/auto-deploy-postgres-values.yaml입니다. |
| POSTGRES_HELM_UPGRADE_EXTRA_ARGS | auto-deploy-image v2를 사용할 때 애플리케이션 배포 시 helm upgrade 명령에 추가 PostgreSQL 옵션을 허용합니다. 따옴표를 사용해도 단어 분리를 막을 수 없습니다. |
| POSTGRES_CHART_REPOSITORY | PostgreSQL 차트를 검색하는 데 사용되는 Helm Chart 리포지터리입니다. 기본값은 https://raw.githubusercontent.com/bitnami/charts/eb5f9a9513d987b519f0ecd732e7031241c50328/bitnami입니다. |
| POSTGRES_CHART_VERSION | PostgreSQL 차트에 사용되는 Helm Chart 버전입니다. 기본값은 8.2.1입니다. |
Job 건너뛰기 변수#
이 변수들을 사용해 특정 유형의 CI/CD job을 건너뛰세요. 건너뛴 경우 CI/CD job이 생성되거나 실행되지 않습니다.
| Job 이름 | CI/CD 변수 | GitLab 버전 | 설명 |
|---|---|---|---|
| .fuzz_base | COVFUZZ_DISABLED | .fuzz_base가 자체 job에 제공하는 기능에 대해 자세히 알아보세요. 값이 "true"이면 job이 생성되지 않습니다. | |
| apifuzzer_fuzz | API_FUZZING_DISABLED | 값이 "true"이면 job이 생성되지 않습니다. | |
| build | BUILD_DISABLED | 변수가 있으면 job이 생성되지 않습니다. | |
| build_artifact | BUILD_DISABLED | 변수가 있으면 job이 생성되지 않습니다. | |
| brakeman-sast | SAST_DISABLED | 값이 "true"이면 job이 생성되지 않습니다. | |
| canary | CANARY_ENABLED | 변수가 있으면 이 수동 job이 생성됩니다. | |
| code_intelligence | CODE_INTELLIGENCE_DISABLED | 변수가 있으면 job이 생성되지 않습니다. | |
| code_quality | CODE_QUALITY_DISABLED | 값이 "true"이면 job이 생성되지 않습니다. | |
| container_scanning | CONTAINER_SCANNING_DISABLED | 값이 "true"이면 job이 생성되지 않습니다. | |
| dast | DAST_DISABLED | 값이 "true"이면 job이 생성되지 않습니다. | |
| dast_environment_deploy | DAST_DISABLED_FOR_DEFAULT_BRANCH 또는 DAST_DISABLED | 값이 "true"이면 job이 생성되지 않습니다. | |
| dependency_scanning | DEPENDENCY_SCANNING_DISABLED | 값이 "true"이면 job이 생성되지 않습니다. | |
| flawfinder-sast | SAST_DISABLED | 값이 "true"이면 job이 생성되지 않습니다. | |
| gemnasium-dependency_scanning | DEPENDENCY_SCANNING_DISABLED | 값이 "true"이면 job이 생성되지 않습니다. | |
| gemnasium-maven-dependency_scanning | DEPENDENCY_SCANNING_DISABLED | 값이 "true"이면 job이 생성되지 않습니다. | |
| gemnasium-python-dependency_scanning | DEPENDENCY_SCANNING_DISABLED | 값이 "true"이면 job이 생성되지 않습니다. | |
| kubesec-sast | SAST_DISABLED | 값이 "true"이면 job이 생성되지 않습니다. | |
| license_management | LICENSE_MANAGEMENT_DISABLED | GitLab 12.7 이하 | 변수가 있으면 job이 생성되지 않습니다. Job은 GitLab 12.8부터 더 이상 사용되지 않습니다. |
| license_scanning | LICENSE_MANAGEMENT_DISABLED | 값이 "true"이면 job이 생성되지 않습니다. Job은 GitLab 15.9부터 더 이상 사용되지 않습니다. | |
| load_performance | LOAD_PERFORMANCE_DISABLED | 변수가 있으면 job이 생성되지 않습니다. | |
| nodejs-scan-sast | SAST_DISABLED | 값이 "true"이면 job이 생성되지 않습니다. | |
| performance | PERFORMANCE_DISABLED | GitLab 13.12 이하 | 브라우저 성능입니다. 변수가 있으면 job이 생성되지 않습니다. browser_performance로 대체되었습니다. |
| browser_performance | BROWSER_PERFORMANCE_DISABLED | 브라우저 성능입니다. 변수가 있으면 job이 생성되지 않습니다. performance를 대체합니다. | |
| phpcs-security-audit-sast | SAST_DISABLED | 값이 "true"이면 job이 생성되지 않습니다. | |
| pmd-apex-sast | SAST_DISABLED | 값이 "true"이면 job이 생성되지 않습니다. | |
| review | REVIEW_DISABLED | 변수가 있으면 job이 생성되지 않습니다. | |
| review:stop | REVIEW_DISABLED | 수동 job입니다. 변수가 있으면 job이 생성되지 않습니다. | |
| secret_detection | SECRET_DETECTION_DISABLED | 값이 "true"이면 job이 생성되지 않습니다. | |
| secret_detection_default_branch | SECRET_DETECTION_DISABLED | 값이 "true"이면 job이 생성되지 않습니다. | |
| semgrep-sast | SAST_DISABLED | 값이 "true"이면 job이 생성되지 않습니다. | |
| sobelow-sast | SAST_DISABLED | 값이 "true"이면 job이 생성되지 않습니다. | |
| stop_dast_environment | DAST_DISABLED_FOR_DEFAULT_BRANCH 또는 DAST_DISABLED | 값이 "true"이면 job이 생성되지 않습니다. | |
| spotbugs-sast | SAST_DISABLED | 값이 "true"이면 job이 생성되지 않습니다. | |
| test | TEST_DISABLED | 변수가 있으면 job이 생성되지 않습니다. | |
| staging | STAGING_ENABLED | 변수가 있으면 job이 생성됩니다. | |
| stop_review | REVIEW_DISABLED | 변수가 있으면 job이 생성되지 않습니다. |
애플리케이션 시크릿 변수 구성#
일부 배포된 애플리케이션은 시크릿 변수에 대한 액세스가 필요합니다.
Auto DevOps는 K8S_SECRET_으로 시작하는 CI/CD 변수를 감지하고,
배포된 애플리케이션에 환경 변수로 제공합니다.
사전 요구사항:
- 변수 값은 한 줄이어야 합니다.
시크릿 변수를 구성하려면:
-
상단 표시줄에서 검색 또는 이동을 선택하고 프로젝트를 찾으세요.
-
왼쪽 사이드바에서 설정 > CI/CD를 선택하세요.
-
변수를 펼치세요.
-
K8S_SECRET_접두사로 CI/CD 변수를 생성하세요. 예를 들어,K8S_SECRET_RAILS_MASTER_KEY라는 변수를 만들 수 있습니다. -
새 파이프라인을 수동으로 생성하거나 GitLab에 코드 변경을 푸시하여 Auto DevOps 파이프라인을 실행하세요.
쿠버네티스 시크릿#
Auto DevOps 파이프라인은 애플리케이션 시크릿 변수를 사용해
쿠버네티스 시크릿을 채웁니다. 이 시크릿은 환경마다 고유합니다.
애플리케이션을 배포할 때 시크릿은 애플리케이션을 실행하는 컨테이너의 환경 변수로 로드됩니다. 예를 들어,
K8S_SECRET_RAILS_MASTER_KEY라는 시크릿을 생성하면
쿠버네티스 시크릿은 다음과 같이 표시될 수 있습니다:
$ kubectl get secret production-secret -n minimal-ruby-app-54 -o yaml
apiVersion: v1
data:
RAILS_MASTER_KEY: MTIzNC10ZXN0
kind: Secret
metadata:
creationTimestamp: 2018-12-20T01:48:26Z
name: production-secret
namespace: minimal-ruby-app-54
resourceVersion: "429422"
selfLink: /api/v1/namespaces/minimal-ruby-app-54/secrets/production-secret
uid: 57ac2bfd-03f9-11e9-b812-42010a9400e4
type: Opaque
애플리케이션 시크릿 업데이트#
환경 변수는 일반적으로 쿠버네티스 Pod에서 변경할 수 없습니다. 애플리케이션 시크릿을 업데이트하고 수동으로 새 파이프라인을 생성하면 실행 중인 애플리케이션은 업데이트된 시크릿을 수신하지 못합니다.
애플리케이션 시크릿을 업데이트하려면 다음 중 하나를 수행하세요:
-
코드 업데이트를 GitLab에 푸시하여 쿠버네티스 배포가 Pod를 재생성하도록 강제하세요.
-
실행 중인 Pod를 수동으로 삭제하여 쿠버네티스가 업데이트된 시크릿으로 새 Pod를 생성하도록 하세요.
Auto DevOps 스크립팅 환경의 제한으로 인해 여러 줄 값이 있는 변수는 지원되지 않습니다.
레플리카 변수 구성#
배포를 스케일링하려면 레플리카 변수를 추가하세요:
-
프로젝트 CI/CD 변수로 레플리카 변수를 추가하세요.
-
애플리케이션을 스케일링하려면 재배포하세요.
쿠버네티스를 사용해 직접 애플리케이션을 스케일링하지 마세요. Helm이 변경 사항을 감지하지 못할 수 있으며, Auto DevOps로 이후 배포 시 변경 사항이 취소될 수 있습니다.
커스텀 레플리카 변수#
__REPLICAS 형식으로 커스텀 레플리카 변수를 만들 수 있습니다:
-
는 Helm Chart 앱 정의에서 설정된track쿠버네티스 라벨의 대문자 값입니다.track이 설정되지 않은 경우 커스텀 변수에서를 생략하세요. -
는.gitlab-ci.yml에서 설정된 deploy job의 대문자 환경 이름입니다.
예를 들어, 환경이 qa이고 트랙이 foo인 경우
FOO_QA_REPLICAS라는 환경 변수를 만드세요:
QA testing:
stage: deploy
environment:
name: qa
script:
- deploy foo
트랙 foo는 애플리케이션의 Helm 차트에 정의되어 있어야 합니다.
예를 들어:
replicaCount: 1
image:
repository: gitlab.example.com/group/project
tag: stable
pullPolicy: Always
secrets:
- name: gitlab-registry
application:
track: foo
tier: web
service:
enabled: true
name: web
type: ClusterIP
url: http://my.host.com/
externalPort: 5000
internalPort: 5000
스테이징 및 프로덕션 환경의 배포 정책#
Auto DevOps는 일반적으로 지속적 배포를 사용하며, 기본 브랜치에서 새 파이프라인이 실행될 때마다
production 환경에 자동으로 푸시합니다. 프로덕션에 수동으로 배포하려면
STAGING_ENABLED CI/CD 변수를 사용할 수 있습니다.
STAGING_ENABLED를 설정하면 GitLab이 자동으로 애플리케이션을 staging 환경에 배포합니다. 프로덕션에 배포할 준비가 되면
GitLab이 production_manual job을 생성합니다.
프로젝트 설정에서 수동 배포를 활성화할 수도 있습니다.
Canary 환경의 배포 정책#
프로덕션에 변경 사항을 배포하기 전에 Canary 환경을 사용할 수 있습니다.
CANARY_ENABLED를 설정하면 GitLab이 두 개의 수동 job을 생성합니다:
-
canary- 애플리케이션을 Canary 환경에 배포합니다. -
production_manual- 애플리케이션을 프로덕션에 배포합니다.
프로덕션으로의 점진적 롤아웃#
Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
점진적 롤아웃을 사용해 소수의 Pod로 시작하여 애플리케이션을 지속적으로 배포하세요. Pod 수를 수동으로 늘릴 수 있습니다.
프로젝트 설정에서 수동 배포를 활성화하거나,
INCREMENTAL_ROLLOUT_MODE를 manual로 설정할 수 있습니다.
INCREMENTAL_ROLLOUT_MODE를 manual로 설정하면 GitLab이 네 개의
수동 job을 생성합니다:
-
rollout 10% -
rollout 25% -
rollout 50% -
rollout 100%
비율은 REPLICAS CI/CD 변수를 기반으로 하며, 배포에 사용되는 Pod 수를 정의합니다. 예를 들어, 값이 10이고
10% 롤아웃 job을 실행하면 애플리케이션은 하나의 Pod에만 배포됩니다.
롤아웃 job은 임의의 순서로 실행할 수 있습니다. 스케일 다운하려면 더 낮은 비율의 job을 다시 실행하세요.
rollout 100% job을 실행한 후에는 스케일 다운할 수 없으며,
배포를 롤백해야 합니다.
점진적 롤아웃 구성 예시#
INCREMENTAL_ROLLOUT_MODE 없이, STAGING_ENABLED 없이:
[
](/19.1/topics/autodevops/img/rollout_staging_disabled_v11_0.png)
INCREMENTAL_ROLLOUT_MODE 없이, STAGING_ENABLED 포함:
[
](/19.1/topics/autodevops/img/staging_enabled_v11_0.png)
INCREMENTAL_ROLLOUT_MODE를 manual로 설정하고 STAGING_ENABLED 없이:
[
](/19.1/topics/autodevops/img/rollout_enabled_v10_8.png)
INCREMENTAL_ROLLOUT_MODE를 manual로 설정하고 STAGING_ENABLED 포함:
[
](/19.1/topics/autodevops/img/rollout_staging_enabled_v11_0.png)
프로덕션으로의 시간 기반 점진적 롤아웃#
Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
시간 기반 점진적 롤아웃을 사용해 소수의 Pod로 시작하여 애플리케이션을 지속적으로 배포하세요.
프로젝트 설정에서 시간 기반 점진적 배포를 활성화하거나,
INCREMENTAL_ROLLOUT_MODE CI/CD 변수를 timed로 설정할 수 있습니다.
INCREMENTAL_ROLLOUT_MODE를 timed로 설정하면 GitLab이 네 개의 job을 생성합니다:
-
timed rollout 10% -
timed rollout 25% -
timed rollout 50% -
timed rollout 100%
job 사이에는 5분의 지연이 있습니다.