테스트 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.nameuser.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 deployOperatorHub 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이 미리 설치된 기존 클러스터를 가리켜야 합니다.

테스트 실행

  1. KinD 클러스터를 설정하고 Operator를 배포합니다:

    scripts/test_olm.sh upgrade_test_step1
    

    Operator Pod가 실행 중이어야 합니다. 다음을 실행하여 확인하세요:

    kubectl get pod -n gitlab-system -l control-plane=controller-manager
    
  2. Operator를 통해 “이전” 버전의 GitLab을 배포합니다:

    scripts/test_olm.sh upgrade_test_step2
    

    GitLab이 배포되었는지 확인하세요:

    kubectl get -n gitlab-system gitlab
    
  3. Operator를 업그레이드합니다:

    scripts/test_olm.sh upgrade_test_step3
    

    Operator가 업그레이드되었는지 확인하세요.

    다음 단계로 넘어가기 전에 설치가 완전히 배포될 때까지 기다리세요.

  4. GitLab을 업그레이드합니다:

    scripts/test_olm.sh upgrade_test_step4
    

    GitLab이 업그레이드되고 정상적으로 작동 중인지 확인하세요.

    업그레이드가 완료될 때까지 기다리세요.

  5. GitLab이 실행 중인지 확인하세요:

    scripts/test_olm.sh check_gitlab
    

    위 명령은 GitLab 상태를 검색하기 위해 Operator에 쿼리를 날리며, 대안으로 다음을 사용하세요.

    scripts/test_olm.sh check_gitlab2
    

    이는 Operator 확인을 건너뛰고 GitLab 인스턴스 자체에 대한 확인을 실행합니다.