테스트 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
| 예 | 업그레이드할 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 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 인스턴스 자체에 점검을 실행합니다.