테스트 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   업그레이드할 Operator 버전
PREVIOUS_OPERATOR_VERSION   업그레이드할 이전 Operator 버전
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 테스트할 Operator 컨테이너 태그
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 버전
OPM 아니요 .build/opm opm 바이너리의 경로. 비어있는 경우 자동으로 가져옴 (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 Chart 리포지토리 HTTP URI. 주로 기본 KinD 구성을 가져오기 위해 사용됨
K8S_VERSION 아니요 1.22.4 GitLab 배포를 위한 KinD 클러스터 설정에 사용할 K8s 버전
KIND_CONFIG 아니요 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 인스턴스 자체에 점검을 실행합니다.