テストOLMバンドル

前提条件

記載されているバージョンは動作が確認されているものです。

  • task-3.17.0 (asdf)
  • operator-sdk-1.25.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プラグインを使用してasdf からインストールできます)
  • 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のセットアップ

user.nameuser.email が Git で設定されていることを確認します。

環境構築

変数名必須デフォルト説明
OPERATOR_VERSIONyes アップグレードするオペレータのバージョン
PREVIOUS_OPERATOR_VERSIONyes アップグレードするオペレータのバージョン
LOCAL_IPyes127.0.0.1ローカルマシンのIPGITLAB_OPERATOR_DOMAINGITLAB_OPERATOR_DOMAIN LOCAL_IP は省略可能ですGITLAB_OPERATOR_DOMAINGITLAB_OPERATOR_DOMAIN
GITLAB_OPERATOR_OLM_REGISTRYyesregistry.gitlab.com/gitlab-org/cloud-native/gitlab-operator/bundleOLMバンドルとカタログ リリースされたバンドルとカタログのレジストリ
BUNDLE_REGISTRYyes 中間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
OPMいいえ.build/opm opm バイナリへのパス。空の場合は自動取得 (OPM_VERSION を使用)
OSDK_BASE_DIRいいえ.build/operatorhub-ioOLMバンドル中間アーティファクト保管用ディレクトリ
OLM_PACKAGE_VERSIONいいえ$OPERATOR_TAGOLMパッケージに適用するバージョン
KUBERNETES_TIMEOUTいいえ120sKubernetesオペレーションのタイムアウト
DO_NOT_PUBLISHいいえ""現在のバンドル/カタログを (一時レジストリに) コンパイルして公開するか、公開済みのレジストリから使用するかを制御します。
BUNDLE_VERSIONいいえ$OPERATOR_VERSIONアップグレードするバンドルのバージョン
PREVIOUS_BUNDLE_VERSIONいいえ$PREVIOUS_OPERATOR_VERSIONアップグレードするバンドルのバージョン
PREVIOUS_CHART_VERSIONいいえ自動生成アップグレードするChartバージョン
GITLAB_OPERATOR_DOMAINいいえ${LOCAL_IP}.nip.ioテスト用GitLabインスタンスをデプロイするドメイン
GITLAB_OPERATOR_DIRいいえ.GitLab Operatorリポジトリがあるディレクトリ
GITLAB_CHART_VERSIONいいえの最初の行は${GITLAB_OPERATOR_DIR}/CHART_VERSIONS} アップグレードするChart Version
GITLAB_CHART_REPOいいえhttps://gitlab.com/gitlab-org/charts/gitlabGitLab ChartリポジトリHTTP URI。主にデフォルトのKinD設定を取得するために使用します。
K8S_VERSIONいいえ1.22.4クラスター設定に使用するK8sのバージョン
KIND_CONFIGいいえ examples/kind/kind-ssl.yaml GitLab Chart のデフォルトブランチからGitLabデプロイのためにKinDクラスターを準備するKinD設定ファイル

追加の変数については、プロビジョニングとデプロイと OperatorHubパブリッシングを見てください。

Operatorのルートディレクトリにtest_olm.env を作成します(または、${OLM_TESTING_ENVIRONMENT} 環境変数を使用して、カスタムロケーションのファイルを指定します)。

以下のすべてのカスタマイズ行があなたの個人的な設定を反映していることを確認してください:

export OPERATOR_VERSION="0.10.2"
export OPERATOR_SDK="${HOME}/bin/operator-sdk_linux_amd64"
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" # do not re-compile and publish bundle/catalog
                            # use the ones already published

KinDクラスターの準備 (オプション)

OLMをセットアップしたKinDクラスターでテストを実行します:

scripts/test_olm.sh setup_kind_cluster

そうでなければ、現在のkubectl コンテキストは、OLM がプリインストールされた既存のクラスターを指す必要があります。

テストの実行

  1. KinDクラスターをセットアップし、Operatorをデプロイします:

    scripts/test_olm.sh upgrade_test_step1
    

    Operator ポッドが起動しているはずです。実行して確認します:

    kubectl get pod -n gitlab-system -l control-plane=controller-manager
    
  2. GitLabの「古い」バージョンをOperator経由でデプロイします:

    scripts/test_olm.sh upgrade_test_step2
    

    GitLabがデプロイされたことを確認します:

    kubectl get -n gitlab-system gitlab
    
  3. オペレーションをアップグレードします:

    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
    

    上記のオペレーションはOperatorにGitLabのステータスをクエリします。

    scripts/test_olm.sh check_gitlab2
    

    を使うと Operator のチェックをバイパスして GitLab インスタンス自体のチェックを行います。