5.3. 新しい Operator SDK バージョンのプロジェクトのアップグレード


OpenShift Container Platform 4.10 は Operator SDK v1.16.0 をサポートします。ワークステーションに v1.10.1 CLI がすでにインストールされている場合は、最新バージョンをインストール して CLI を v1.16.0 にアップグレードできます。

ただし、既存の Operator プロジェクトが Operator SDK v1.16.1 との互換性を維持するには、v1.10.0 以降に導入された関連する重大な変更に対し、アップグレード手順を実行する必要があります。アップグレードの手順は、以前は v1.10.1 で作成または維持されている Operator プロジェクトのいずれかで手動で実行する必要があります。

5.3.1. Operator SDK v1.16.0 のプロジェクトのアップグレード

次の手順では、v1.16.0 との互換性を確保するため、既存の Operator プロジェクトを更新します。

重要
  • Operator SDK v1.16.0 は Kubernetes 1.22 をサポートします。
  • 非推奨の v1beta1 API の多くは、sigs.k8s.io/controller-runtime v0.10.0 および controller-gen v0.7 を含む Kubernetes 1.22 で削除されました。
  • カスタムリソース定義 (CRD) または Webhook の v1beta1 API をスキャフォールディングする必要がある場合には、Kubernetes 1.22 にプロジェクトへの更新は重大な変更になります。

Kubernetes 1.22 で導入された変更の詳細は、Kubernetes 1.22 から削除された API のバンドルマニフェストの検証ベータ版 API が Kubernetes 1.22 から削除について参照してください。

前提条件

  • Operator SDK v1.16.0 がインストールされている
  • Operator SDKv1.10.1 で作成または保守されている Operator プロジェクト。

手順

  1. config/default/manager_auth_proxy_patch.yamlconfig/rbac/auth_proxy_service.yaml ファイルに protocol フィールドを追加します。

    ...
     ports:
     - containerPort: 8443
    +  protocol: TCP
       name: https
  2. config/manager/manager.yaml ファイルに以下の変更を加えます。

    1. CPU とメモリーのリソース制限を増やします。

      resources:
        limits:
      -     cpu: 100m
      -     memory: 30Mi
      +     cpu: 200m
      +     memory: 100Mi
    2. デフォルトのコンテナーマネージャーを指定するアノテーションを追加します。

      ...
      template:
        metadata:
          annotations:
            kubectl.kubernetes.io/default-container: manager
      ...
  3. Makefileファイル内のすべてのターゲットにPHONYターゲットを追加します。
  4. Go ベースの Operator プロジェクトの場合には、次の変更を加えます。

    1. setup-envtestバイナリーをインストールします。
    2. go.modファイルを変更して、依存関係を更新します。

      k8s.io/api v0.22.1
      k8s.io/apimachinery v0.22.1
      k8s.io/client-go v0.22.1
      sigs.k8s.io/controller-runtime v0.10.0
    3. go mod tidyコマンドを実行して、依存関係をダウンロードします。

      $ go mod tidy
    4. Makefile に以下の変更を加えます。

      ...
      
      + ENVTEST_K8S_VERSION = 1.22
      
        test: manifests generate fmt vet envtest ## Run tests.
      -   go test ./... -coverprofile cover.out
      +   KUBEBUILDER_ASSETS="$(shell $(ENVTEST) use $(ENVTEST_K8S_VERSION) -p path)" go test ./... -coverprofile cover.out
      ...
      
      - $(CONTROLLER_GEN) $(CRD_OPTIONS) rbac:roleName=manager-role webhook paths="./..." output:crd:artifacts:config=config/crd/bases
      + $(CONTROLLER_GEN) rbac:roleName=manager-role crd webhook paths="./..." output:crd:artifacts:config=config/crd/bases
      ...
      
      # Produce CRDs that work back to Kubernetes 1.11 (no version conversion)
      - CRD_OPTIONS ?= "crd:trivialVersions=true,preserveUnknownFields=false"
      ...
      - admissionReviewVersions={v1,v1beta1}
      + admissionReviewVersions=v1
      ...
      
      + ifndef ignore-not-found
      +   ignore-not-found = false
      + endif
      
      ##@ Deployment
      ...
      - sh kubectl delete -f -
      + sh kubectl delete --ignore-not-found=$(ignore-not-found) -f -
    5. make manifestコマンドを実行して Kubernetes の更新バージョンでマニフェストを生成します。

      $ make manifest
  5. Ansible ベースの Operator プロジェクトの場合には、次の変更を加えます。

    1. 以下を含めるようにrequirements.ymlファイルを変更します。

      1. community.kubernetesコレクションは、kubernetes.coreコレクションに置き換えます。

        ...
        - name: kubernetes.core
          version: "2.2.0"
        ...
      2. operator_sdk.utilユーティリティーをバージョン0.2.0から0.3.1に更新します。

        ...
        - name: operator_sdk.util
          version: "0.3.1"
    2. config/manager/manager.yaml ファイルでデフォルトのリソース制限を確認します。

      ...
       # TODO(user): Configure the resources accordingly based on the project requirements.
       # More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
      
      resources:
        limits:
          cpu: 500m
          memory: 768Mi
        requests:
          cpu: 10m
          memory: 256Mi
      重要

      Operator SDK は、これらの値を妥当なデフォルト設定としてスキャフォールディングします。Operator の作成者は、プロジェクトの要件に基づいてリソース制限を設定および最適化する必要があります。

    3. オプション: make runコマンドを使用して Ansible ベースの Operator をローカルで実行する場合は、次の変更を加えます。

      1. Makefileファイルで実行ターゲットを変更します。

        ANSIBLE_ROLES_PATH="$(ANSIBLE_ROLES_PATH):$(shell pwd)/roles" $(ANSIBLE_OPERATOR) run
      2. ansible-runnerのローカルバージョンを 2.0.2 以降に更新します。

        重要

        バージョン 2.0 の時点で、ansible-runner ツールには、以前のバージョンと互換性のないコマンド署名の変更が含まれています。

5.3.2. 関連情報

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.