GitLab 테스트용 자동배포
요구 사항
-
openssl
유틸리티 kubectl
task
- 클러스터 상호 작용 도구(다음 중 하나):
gcloud
kind
매개변수
매개변수는 환경 변수를 통해 전달됩니다.
변수 이름 | 필수 | 기본값 | 설명 |
---|---|---|---|
GITLAB_CHART_VERSION
| 아니요 | 최신 사용 가능한 것 | 사용할 차트 버전. 연산자의 TAG 내에서 제공된 차트와 일치해야 합니다.
|
GITLAB_CHART_REPO
| 아니요 | https://gitlab.com/gitlab-org/charts/gitlab
| GitLab 헬름 차트 저장소 HTTP URI. 기본적으로 기본 KinD 구성을 검색하는 데 사용됩니다. |
IMG
| 아니요 | registry.gitlab.com/gitlab-org/cloud-native/gitlab-operator
| 오퍼레이터 컨테이너 이미지 이름 |
TAG
| 아니요 | master
| 오퍼레이터 컨테이너 이미지 태그. 대부분의 경우 재정의가 필요합니다. |
GITLAB_CHART_DIR
| 예 | GitLab 차트 저장소의 복제본 경로 | |
GITLAB_OPERATOR_DIR
| 아니요 | .
| GitLab 오퍼레이터 저장소의 경로 |
GITLAB_OPERATOR_MANIFEST
| 아니요 | 오퍼레이터 배포를 위한 매니페스트에 대한 참조(선택 사항), 비어있는 경우 - ${GITLAB_OPERATOR_DIR} 에서 자동 생성됨. 적절한 이미지 및 태그를 참조하려면 IMG 및 TAG 환경 변수를 설정해야 함
| |
GITLAB_CR_DEPLOY_MODE
| 아니요 | selfsigned
| 배포 모드 선택: selfsigned 또는 certmanager
|
GITLAB_OPERATOR_DOMAIN
| 아니요 |
${LOCAL_IP}.nip.io (KinD용), 다른 플랫폼을 위해 cloud-native.win
| GitLab(오퍼레이터) 배포를 위한 도메인 |
GITLAB_HOST
| 아니요 | *.${GITLAB_OPERATOR_DOMAIN}
| GitLab 엔드포인트의 자체 서명된 인증서에 사용할 공통 이름 |
GITLAB_KEY_FILE
| 아니요 | gitlab.key
| 자체 서명된 인증서 키 파일 |
GITLAB_CERT_FILE
| 아니요 | gitlab.crt
| 자체 서명된 인증서 파일 |
GITLAB_PAGES_HOST
| 아니요 | *.pages.${GITLAB_OPERATOR_DOMAIN}
| GitLab Pages 엔드포인트의 자체 서명된 인증서에 사용할 공통 이름 |
GITLAB_PAGES_KEY_FILE
| 아니요 | pages.key
| 자체 서명된 인증서 키 파일 |
GITLAB_PAGES_CERT_FILE
| 아니요 | pages.crt
| 자체 서명된 인증서 파일 |
GITLAB_ACME_EMAIL
| 아니요 |
git config user.email 의 출력
| cert-manager에 사용될 이메일. KinD 배포에서는 필요하지 않음 |
GITLAB_RUNNER_TOKEN
| 아니요 | Runner 토큰, 비어있으면 실행 중인 GitLab 인스턴스에서 자동으로 검색됨 | |
KIND
| 아니요 | kind
| KinD용 명령 줄 실행 가능한 이름 |
KIND_CLUSTER_NAME
| 아니요 | gitlab
| KinD 클러스터 이름 |
KIND_IMAGE
| 아니요 | kindest/node:v1.18.19
| KinD용 --image 인자의 값
|
KIND_LOCAL_IP
| KinD용 필수 | 도메인 ${LOCAL_IP}.nip.io 을 위해 인증서 등을 제공하는 데 필요한 로컬 IP
| |
KUBECTL
| 아니요 | kubectl
|
kubectl 명령어의 경로
|
HELM
| 아니요 | helm
|
helm 명령어의 경로
|
TASK
| 아니요 | task
|
task 명령어의 경로
|
도구 포인터 변수($KIND
, $KUBECTL
, $HELM
등)
도구 포인터 변수의 주요 사용 용도는 특정 도구 경로나 래퍼 스크립트 경로를 가리키는 것입니다(kubectl
의 경우 k
등).
그러나 이러한 변수 중 하나의 대체 사용 방법 중 하나는 일부 디버깅 정보를 얻는 것입니다:
KUBECTL="echo kubectl" provision_and_deploy.sh deploy_operator
그러나 이는 bash -x provision_and_deploy.sh
를 사용하여도 달성할 수 있습니다.
GCP
Cert-Manager 예시( gitlab-operator
리포지토리의 루트에서 실행):
export GITLAB_CHART_DIR=~/work/gitlab \
GITLAB_OPERATOR_DOMAIN="mydomain.k8s-ft.win" \
GITLAB_ACME_EMAIL="somebody@gitlab.com" \
GITLAB_CR_DEPLOY_MODE="certmanager"
# https://docs.gitlab.com/charts/installation/cloud/gke.html
PROJECT="gcp-project-123" CLUSTER_NAME="mydomain" \
bash ${GITLAB_CHART_DIR}/scripts/gke_bootstrap_script.sh up
# ...프로비저닝이 완료될 때까지 기다린 후
scripts/provision_and_deploy.sh generic_deploy
또는 파이프라인에서 생성된 CR을 사용하여 알터너티브로(예: ./123-my-branch.yaml
로 다운로드 받음):
cd scripts
export GITLAB_CHART_DIR=~/work/gitlab \
GITLAB_OPERATOR_DIR=~/work/gitlab-operator \
GITLAB_OPERATOR_MANIFEST=./123-my-branch.yaml \
GITLAB_OPERATOR_DOMAIN="mydomain.k8s-ft.win" \
GITLAB_ACME_EMAIL="somebody@gitlab.com" \
GITLAB_CR_DEPLOY_MODE="certmanager"
PROJECT="gcp-project-123" CLUSTER_NAME="mydomain" \
bash ${GITLAB_CHART_DIR}/scripts/gke_bootstrap_script.sh up
# ...프로비저닝이 완료될 때까지 기다린 후
./provision_and_deploy.sh generic_deploy
위의 명령은 scripts/
디렉토리 내에서 실행되었습니다(GITLAB_OPERATOR_DIR
사용에 유의하세요). 자체 서명된 인증서로 배포할 수도 있는데, 이 경우 KIND_LOCAL_IP
를 제공해야 합니다(“클러스터 IP”를 사용하고 GITLAB_OPERATOR_DOMAIN
은 사용하지 않아야 함).
KinD
기본적으로 배포는 자체 서명된 인증서로 수행됩니다:
export KIND_CLUSTER_NAME=gitlab \
KIND_LOCAL_IP=192.168.3.194 \
GITLAB_CHART_DIR=~/work/gitlab
scripts/provision_and_deploy.sh kind_deploy
또는 빌드 manifest
작업에서 생성된 CR을 사용합니다(./123-my-branch.yaml
에 다운로드됨):
export KIND_CLUSTER_NAME=gitlab \
KIND_LOCAL_IP=192.168.3.194 \
GITLAB_CHART_DIR=~/work/gitlab \
GITLAB_OPERATOR_MANIFEST=./123-my-branch.yaml \
GITLAB_OPERATOR_DIR=~/work/gitlab-operator
scripts/provision_and_deploy.sh kind_deploy
이게 전부입니다! 이제 https://gitlab.(your IP).nip.io
로 이동하여 루트 비밀번호로 로그인할 수 있어야합니다.
참고: KinD의 Ingress에 대한 인증서 생성을 위해 cert-manager
를 사용하는 것은 KinD 인스턴스가 공개적으로 접근 가능하지 않는 한 불가능합니다.
Runner 배포
기본 배포가 수행된 후 러너 배포를 수행하십시오 (동일한 내보낸 변수 유지):
scripts/provision_and_deploy.sh runner_deploy
또는 한 번에 모든 작업을 수행합니다(예시로 kind
배포를 사용합니다):
scripts/provision_and_deploy.sh kind_deploy runner_deploy