테스트 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 (도커를 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 설정

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.22.4 클러스터 설정에 사용할 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 인스턴스 자체에 대한 확인을 실행합니다.