테스트 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
를 사용하여 asdf-opm 플러그인으로 설치 가능) -
kind-0.17.0
(asdf
) -
docker
(podman
으로 대체 가능,DOCKER="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 설정
user.name
과 user.email
이 Git에 구성되어 있는지 확인합니다.
환경 설정
변수 이름 | 필수 | 기본값 | 설명 |
---|---|---|---|
OPERATOR_VERSION |
예 | 업그레이드할 운영자 버전 | |
PREVIOUS_OPERATOR_VERSION |
예 | 업그레이드할 이전 운영자 버전 | |
LOCAL_IP |
예 | 127.0.0.1 |
GITLAB_OPERATOR_DOMAIN 에 필요하며, 로컬 머신 IP입니다. GITLAB_OPERATOR_DOMAIN 이 제공되는 경우 LOCAL_IP 는 생략할 수 있습니다. |
GITLAB_OPERATOR_OLM_REGISTRY |
예 | registry.gitlab.com/gitlab-org/cloud-native/gitlab-operator/bundle |
릴리스된 번들 및 카탈로그가 포함된 OLM 번들 및 카탈로그 레지스트리 |
BUNDLE_REGISTRY |
예 | 중간 OLM 번들 및 카탈로그를 게시할 스테이징 컨테이너 레지스트리 | |
OLM_TESTING_ENVIRONMENT |
아니오 | ./test_olm.env |
테스트 실행에 필요한 환경 변수를 포함하는 파일 |
OPERATOR_TAG |
아니오 | $OPERATOR_VERSION |
테스트할 운영자 컨테이너 태그 |
OLM_BUNDLE_SH |
아니오 | scripts/olm_bundle.sh |
기본 olm_bundle.sh 스크립트의 경로 |
PROVISION_AND_DEPLOY_SH |
아니오 | scripts/provision_and_deploy.sh |
기본 provision_and_deploy.sh 스크립트의 경로 |
YQ |
아니오 | yq |
yq 유틸리티의 경로 |
OPM_VERSION |
아니오 | 1.26.2 |
명시적인 바이너리가 지정되지 않은 경우 자동으로 가져올 opm 버전 |
OPM |
아니오 | .build/opm |
opm 바이너리의 경로. 비어 있으면 자동으로 가져옵니다 (using OPM_VERSION ) |
OSDK_BASE_DIR |
아니오 | .build/operatorhub-io |
중간 OLM 번들 아티팩트 저장소를 위한 디렉토리 |
OLM_PACKAGE_VERSION |
아니오 | $OPERATOR_TAG |
OLM 패키지에 적용할 버전 |
KUBERNETES_TIMEOUT |
아니오 | 120s |
Kubernetes 작업을 위한 타임아웃 |
DO_NOT_PUBLISH |
아니오 | "" |
현재 번들/카탈로그를 컴파일하고 게시할지(임시 레지스트리에) 또는 공개 레지스트리에서 이미 게시된 것을 사용할지를 제어합니다. |
BUNDLE_VERSION |
아니오 | $OPERATOR_VERSION |
업그레이드할 번들 버전 |
PREVIOUS_BUNDLE_VERSION |
아니오 | $PREVIOUS_OPERATOR_VERSION |
업그레이드할 이전 번들 버전 |
PREVIOUS_CHART_VERSION |
아니오 | 자동 생성 | 업그레이드할 차트 버전 |
GITLAB_OPERATOR_DOMAIN |
아니오 | ${LOCAL_IP}.nip.io |
테스트 GitLab 인스턴스를 배포할 도메인 |
GITLAB_OPERATOR_DIR |
아니오 | . |
GitLab Operator 리포지토리가 있는 디렉토리 |
GITLAB_CHART_VERSION |
아니오 |
${GITLAB_OPERATOR_DIR}/CHART_VERSIONS} 의 첫 번째 줄 |
업그레이드할 차트 버전 |
GITLAB_CHART_REPO |
아니오 | https://gitlab.com/gitlab-org/charts/gitlab |
GitLab Helm 차트 레포지토리 HTTP URI. 주로 기본 KinD 구성 파일을 가져오는 데 사용됩니다. |
K8S_VERSION |
아니오 | 1.25.9 |
클러스터 설정에 사용할 K8s 버전 |
KIND_CONFIG |
아니오 |
examples/kind/kind-ssl.yaml 에서 GitLab 차트의 기본 분기 |
GitLab 배포를 위한 KinD 클러스터를 준비하기 위한 KinD 구성 파일 |
추가 변수를 보려면 Provision and deploy 및 OperatorHub publishing을 참조하세요.
운영자의 루트 디렉토리에 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 인스턴스 자체에 대한 검사를 실행합니다.