테스트 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 인스턴스 자체에 대한 확인을 실행합니다.