테스트 OLM 번들
전제 조건
알려진 동작 버전 목록입니다. 낮은 버전은 동작할 수도 있지만 테스트되지는 않았습니다.
-
task-3.17.0
(asdf
) -
operator-sdk-1.32.0
(asdf
) -
kubectl-1.25.3
(asdf
) -
helm-3.10.1
(asdf
) -
kustomize-4.5.7
(asdf
) -
yq-4.29.2
(asdf
) -
opm-1.26.2
(스크립트에 의해 자동으로 다운로드되거나 asdf-opm 플러그인을 사용하여 설치할 수 있음) -
kind-0.17.0
(asdf
) -
docker
(DOCKER="podman"
을 통해podman
으로 대체 가능) -
podman
(OperatorSDK 도구 체인 중 일부에 podman 사용) -
k9s-0.26.7
(asdf
선택 사항)
환경 설정
Podman 설정
podman login registry.gitlab.com
Docker 설정
모든 작업에 podman
을 사용하지 않는 경우, Docker가 registry.gitlab.com
에 액세스할 수 있도록 인증하세요:
docker login registry.gitlab.com
Git 설정
Git의 user.name
및 user.email
이 구성되어 있는지 확인하세요.
환경 설정
변수 이름 | 필수 여부 | 기본값 | 설명 |
---|---|---|---|
OPERATOR_VERSION |
yes | 업그레이드할 Operator 버전 | |
PREVIOUS_OPERATOR_VERSION |
yes | 업그레이드할 이전 Operator 버전 | |
LOCAL_IP |
yes | 127.0.0.1 |
GITLAB_OPERATOR_DOMAIN 에 필요한 로컬 머신 IP. GITLAB_OPERATOR_DOMAIN 이 제공될 때 - LOCAL_IP 는 필요하지 않음 |
GITLAB_OPERATOR_OLM_REGISTRY |
yes | registry.gitlab.com/gitlab-org/cloud-native/gitlab-operator/bundle |
릴리스된 번들과 카탈로그가 포함된 OLM 번들 및 카탈로그 레지스트리 |
BUNDLE_REGISTRY |
yes | 중간 OLM 번들과 카탈로그를 게시하기 위한 스테이징 컨테이너 레지스트리 | |
OLM_TESTING_ENVIRONMENT |
no | ./test_olm.env |
테스트 실행에 필요한 환경 변수가 포함된 파일 |
OPERATOR_TAG |
no | $OPERATOR_VERSION |
테스트할 Operator 컨테이너 태그 |
OLM_BUNDLE_SH |
no | scripts/olm_bundle.sh |
기본 olm_bundle.sh 스크립트 경로 |
PROVISION_AND_DEPLOY_SH |
no | scripts/provision_and_deploy.sh |
기본 provision_and_deploy.sh 스크립트 경로 |
YQ |
no | yq |
yq 유틸리티 경로 |
OPM_VERSION |
no | 1.26.2 |
OPM 이 지정되지 않은 경우 자동으로 가져올 opm 버전 |
OPM |
no | .build/opm |
opm 이진 파일 경로. 비어 있는 경우 자동으로 가져옴 (OPM_VERSION 사용) |
OSDK_BASE_DIR |
no | .build/operatorhub-io |
중간 OLM 번들링 아티팩트 저장을 위한 디렉터리 |
OLM_PACKAGE_VERSION |
no | $OPERATOR_TAG |
OLM 패키지에 적용할 버전 |
KUBERNETES_TIMEOUT |
no | 120s |
Kubernetes 작업의 타임아웃 |
DO_NOT_PUBLISH |
no | "" |
현재 번들/카탈로그를 컴파일하고 게시할지 또는 공개 레지스트리에서 이미 게시된 항목을 사용할지 제어 |
BUNDLE_VERSION |
no | $OPERATOR_VERSION |
업그레이드할 번들 버전 |
PREVIOUS_BUNDLE_VERSION |
no | $PREVIOUS_OPERATOR_VERSION |
업그레이드할 이전 번들 버전 |
PREVIOUS_CHART_VERSION |
no | 자동 생성 | 업그레이드할 차트 버전 |
GITLAB_OPERATOR_DOMAIN |
no | ${LOCAL_IP}.nip.io |
테스트 GitLab 인스턴스 배포할 도메인 |
GITLAB_OPERATOR_DIR |
no | . |
GitLab Operator 리포지토리가 있는 디렉터리 |
GITLAB_CHART_VERSION |
no |
${GITLAB_OPERATOR_DIR}/CHART_VERSIONS} 의 첫 번째 줄 |
업그레이드할 차트 버전 |
GITLAB_CHART_REPO |
no | https://gitlab.com/gitlab-org/charts/gitlab |
GitLab Helm Chart 리포지토리 HTTP URI. 주로 기본 KinD 구성을 가져오는 데 사용 |
K8S_VERSION |
no | 1.25.9 |
GitLab 배포를 위해 사용할 K8s 버전 |
KIND_CONFIG |
no | GitLab Chart의 기본 브랜치에서의 examples/kind/kind-ssl.yaml
|
GitLab 배포를 위해 KinD 클러스터를 준비하기 위한 KinD 구성 파일 |
추가 변수는 Provision and deploy 및 OperatorHub publishing을 참조하세요.
Operator의 루트 디렉터리에 test_olm.env
를 만드세요 (또는 ${OLM_TESTING_ENVIRONMENT}
환경 변수를 사용하여 사용자 정의 위치에 있는 파일을 가리킬 수 있음)
다음 각 사용자 지정 행이 개인 설정을 반영하는지 확인하세요:
export OPERATOR_VERSION="0.10.2"
export BUNDLE_REGISTRY="registry.gitlab.com/dmakovey/gitlab-operator-bundle"
export PREVIOUS_OPERATOR_VERSION="0.9.1"
export LOCAL_IP="192.168.3.194"
export DO_NOT_PUBLISH="yes" # 번들/카탈로그 다시 컴파일 및 게시 안 함
# 이미 공개 레지스트리에서 게시된 항목 사용
KinD 클러스터 준비하기 (옵션)
OLM이 설정된 KinD 클러스터에서 테스트를 실행하려면:
scripts/test_olm.sh setup_kind_cluster
그렇지 않으면 현재 kubectl
컨텍스트가 OLM이 미리 설치된 기존 클러스터를 가리켜야 합니다.
테스트 실행
-
KinD 클러스터를 설정하고 Operator를 배포합니다:
scripts/test_olm.sh upgrade_test_step1
Operator Pod가 실행 중이어야 합니다. 다음을 실행하여 확인하세요:
kubectl get pod -n gitlab-system -l control-plane=controller-manager
-
Operator를 통해 “이전” 버전의 GitLab을 배포합니다:
scripts/test_olm.sh upgrade_test_step2
GitLab이 배포되었는지 확인하세요:
kubectl get -n gitlab-system gitlab
-
Operator를 업그레이드합니다:
scripts/test_olm.sh upgrade_test_step3
Operator가 업그레이드되었는지 확인하세요.
다음 단계로 넘어가기 전에 설치가 완전히 배포될 때까지 기다리세요.
-
GitLab을 업그레이드합니다:
scripts/test_olm.sh upgrade_test_step4
GitLab이 업그레이드되고 정상적으로 작동 중인지 확인하세요.
업그레이드가 완료될 때까지 기다리세요.
-
GitLab이 실행 중인지 확인하세요:
scripts/test_olm.sh check_gitlab
위 명령은 GitLab 상태를 검색하기 위해 Operator에 쿼리를 날리며, 대안으로 다음을 사용하세요.
scripts/test_olm.sh check_gitlab2
이는 Operator 확인을 건너뛰고 GitLab 인스턴스 자체에 대한 확인을 실행합니다.