5.5.4. Helm ベースのプロジェクトを新しい Operator SDK バージョン用に更新する
OpenShift Container Platform 4.12 は Operator SDK 1.25.4 をサポートします。ワークステーションにすでに 1.36.1 CLI がインストールされている場合は、最新バージョンをインストール して CLI を 1.38.0 に更新できます。
ただし、既存の Operator プロジェクトが Operator SDK 1.25.4 との互換性を維持するには、1.22.2 以降に導入された関連する重大な変更に対し、更新手順を実行する必要があります。アップグレードの手順は、以前は 1.22.2 で作成または維持されている Operator プロジェクトのいずれかで手動で実行する必要があります。
5.5.4.1. Operator SDK 1.25.4 の Helm ベースの Operator プロジェクトの更新 リンクのコピーリンクがクリップボードにコピーされました!
次の手順では、1.25.4 との互換性を確保するため、既存の Helm ベースの Operator プロジェクトを更新します。
前提条件
- Operator SDK 1.25.4 がインストールされている
- Operator SDK 1.22.2 で作成または保守されている Operator プロジェクト
手順
config/default/manager_auth_proxy_patch.yamlファイルに以下の変更を加えます。apiVersion: apps/v1 kind: Deployment metadata: name: controller-manager namespace: system spec: template: spec: containers: - name: kube-rbac-proxy image: registry.redhat.io/openshift4/ose-kube-rbac-proxy:v4.121 args: - "--secure-listen-address=0.0.0.0:8443" - "--upstream=http://127.0.0.1:8080/" - "--logtostderr=true" - "--v=0" ...- 1
- タグバージョンを
v4.11からv4.12に更新します。
Makefileに以下の変更を加えます。マルチアーキテクチャービルドサポートを有効にするには、
docker-buildxターゲットをプロジェクトのMakefileに追加します。Makefileの例# PLATFORMS defines the target platforms for the manager image be build to provide support to multiple # architectures. (i.e. make docker-buildx IMG=myregistry/mypoperator:0.0.1). To use this option you need to: # - able to use docker buildx . More info: https://docs.docker.com/build/buildx/ # - have enable BuildKit, More info: https://docs.docker.com/develop/develop-images/build_enhancements/ # - be able to push the image for your registry (i.e. if you do not inform a valid value via IMG=<myregistry/image:<tag>> than the export will fail) # To properly provided solutions that supports more than one platform you should use this option. PLATFORMS ?= linux/arm64,linux/amd64,linux/s390x,linux/ppc64le .PHONY: docker-buildx docker-buildx: test ## Build and push docker image for the manager for cross-platform support # copy existing Dockerfile and insert --platform=${BUILDPLATFORM} into Dockerfile.cross, and preserve the original Dockerfile sed -e '1 s/\(^FROM\)/FROM --platform=\$$\{BUILDPLATFORM\}/; t' -e ' 1,// s//FROM --platform=\$$\{BUILDPLATFORM\}/' Dockerfile > Dockerfile.cross - docker buildx create --name project-v3-builder docker buildx use project-v3-builder - docker buildx build --push --platform=$(PLATFORMS) --tag ${IMG} -f Dockerfile.cross - docker buildx rm project-v3-builder rm Dockerfile.crossOperator プロジェクトで 64 ビットのアーキテクチャーのサポートを有効にするには、
Makefileに以下の変更を加えます。古い
MakefileOS := $(shell uname -s | tr '[:upper:]' '[:lower:]') ARCH := $(shell uname -m | sed 's/x86_64/amd64/')新しい
MakefileOS := $(shell uname -s | tr '[:upper:]' '[:lower:]') ARCH := $(shell uname -m | sed 's/x86_64/amd64/' | sed 's/aarch64/arm64/')次の例に示すように、Kustomize のバージョンを
v4.5.5に更新します。古い
Makefile.PHONY: kustomize KUSTOMIZE = $(shell pwd)/bin/kustomize kustomize: ## Download kustomize locally if necessary. ifeq (,$(wildcard $(KUSTOMIZE))) ifeq (,$(shell which kustomize 2>/dev/null)) @{ \ set -e ;\ mkdir -p $(dir $(KUSTOMIZE)) ;\ curl -sSLo - https://github.com/kubernetes-sigs/kustomize/releases/download/kustomize/v3.8.7/kustomize_v3.8.7_$(OS)_$(ARCH).tar.gz | \ tar xzf - -C bin/ ;\ } else新しい
Makefile.PHONY: kustomize KUSTOMIZE = $(shell pwd)/bin/kustomize kustomize: ## Download kustomize locally if necessary. ifeq (,$(wildcard $(KUSTOMIZE))) ifeq (,$(shell which kustomize 2>/dev/null)) @{ \ set -e ;\ mkdir -p $(dir $(KUSTOMIZE)) ;\ curl -sSLo - https://github.com/kubernetes-sigs/kustomize/releases/download/kustomize/v4.5.5/kustomize_v4.5.5_$(OS)_$(ARCH).tar.gz | \1 tar xzf - -C bin/ ;\ } else- 1
- バージョン
v3.8.7をv4.5.5に更新します。重要Kustomize バージョン
4.0.0では、go-getterプラグインが削除され、以前のバージョンとの下位互換性がない重大な変更が導入されました。古いバージョンの Kustomize に依存する Operator プロジェクトは、新しいリリースでは機能しない可能性があります。
Makefileに変更を適用し、Operator を再構築するには、次のコマンドを入力します。$ make
次の例のとおり、Operator の Dockerfile 内のイメージタグを更新します。
Dockerfile の例
FROM registry.redhat.io/openshift4/ose-helm-operator:v4.121 - 1
- バージョンタグを
v4.12に更新します。
次の例に示すように、
config/default/kustomizations.yamlファイルを更新します。kustomizations.yamlファイルの例# Adds namespace to all resources. namespace: memcached-operator-system # Value of this field is prepended to the # names of all resources, e.g. a deployment named # "wordpress" becomes "alices-wordpress". # Note that it should also match with the prefix (text before '-') of the namespace # field above. namePrefix: memcached-operator- # Labels to add to all resources and selectors. #labels:1 #- includeSelectors: true2 # pairs: # someName: someValue resources:3 - ../crd - ../rbac - ../manager