1.3. 既知の問題

Red Hat Advanced Cluster Management for Kubernetes の既知の問題を確認してください。以下の一覧には、本リリースの既知の問題、または以前のリリースから持ち越された既知の問題が記載されています。Red Hat OpenShift Container Platform クラスターについては、「OpenShift Container Platform の既知の問題」を参照してください。

1.3.1. アップグレードの既知の問題

1.3.1.1. 可観測性アドオンにより、バージョン 2.1.x から 2.3.2 へのアップグレードの低下

2.1.x から 2.3.2 へのアップグレード後、可観測性アドオンの準備が整わないか、またはアップグレード時にイメージマニフェスト ConfigMap が正しく読み込まれないため、一部のクラスターのパフォーマンスが低下してしまう可能性があります。これにより、誤ったイメージが生じます。

この問題を修正するには、以下のコマンドを実行して multicluster-observability-operator Pod を再起動します。

oc delete pod multicluster-observability-operator -n open-cluster-management

1.3.1.2. 2.1.x にアップグレードすると、証明書が失われます。

Red Hat Advanced Cluster Management をバージョン 2.0 から 2.1 にアップグレードした後、アプリケーションテンプレートエディターを開いて変更を行う際に、アプリケーションをデプロイする場所を指定する設定は事前に選択されません。アプリケーションテンプレートエディターでアプリケーション設定を変更した場合には、エディターを保存して閉じる前に、アプリケーションのデプロイメント設定を選択する必要があります。

1.3.1.3. 2.1.1 へのアップグレードにより証明書が失われます。

クラスターを Red Hat Advanced Cluster Management バージョン 2.1.1 にアップグレードすると、クラスター上の証明書の一部またはすべてが失われます。以下のコマンドのいずれかを入力すると、この状況を確認できます。

oc get certificates -n open-cluster-management

または

oc get pods -n open-cluster-management | grep -vE "Completed|Running"

最初のコマンドの実行時に想定よりも少ない証明書が返された場合、または 2 番目のコマンドの実行後に複数の Pod が返された場合は、 generate-update-issue-cert-manifest.sh スクリプト を実行して証明書を更新します。

1.3.1.4. バージョン 2.1.1 へのアップグレードは、ClusterImageSet エラーにより完了しません。

Red Hat Advanced Cluster Management for Kubernetes バージョン 2.1.0 を Red Hat Advanced Cluster Management バージョン 2.1.1 にアップグレードしても完了せず、以下のエラーと同様のエラーが表示される場合があります。

failed to get candidate release: rendered manifests contain a resource
that already exists. Unable to continue with update: ClusterImageSet "img4.6.1-x86-64"
in namespace "" exists and cannot be imported into the current release: invalid
ownership metadata; label validation error: missing key "app.kubernetes.io/managed-by":
must be set to "Helm"; annotation validation error: missing key "meta.helm.sh/release-name":
must be set to "console-chart-c4cb5"; annotation validation error: missing key
"meta.helm.sh/release-namespace": must be set to "open-cluster-management"

これは、既存バージョンの 1 つまたは複数の ClusterImageSets に、アップグレードと共に追加されるバージョンと同じ名前を持つ場合に生じます。これにより、競合が生じます。この問題を回避するには、以下の手順を実行します。

  1. 実行中のアップグレードを停止します。
  2. エラーメッセージで特定されるローカル環境から、ClusterImageSet または ClusterImageSets を削除します。
  3. アップグレードを再起動します。

1.3.1.5. 2.1.1 へのアップグレードにより、klusterletaddonconfig CRD が無効になります。

Red Hat Advanced Cluster Management をバージョン 2.1.0 から 2.1.1 にアップグレードすると、アップグレード中に klusterletaddonconfig カスタムリソース定義 (CRD) が再インストールされる可能性があります。再インストールされる場合、すべてのアドオンは Cluster settings ページに Disabled ステータスを表示します。問題を診断し、klusterletaddonconfig CRD を復元するには、以下の手順を実行します。

  1. oc login コマンドを使用して、ハブクラスターにログオンします。
  2. 以下のコマンドを実行して、klusterletaddonconfig CRD が削除されたのは、CRD の再インストールが原因であることを確認します。

    % oc get klusterletaddonconfig --all-namespaces

    返されるコンテンツが No resources found の場合は、再インストールが原因である可能性が高いです。ステップ 3 に進みます。

  3. 以下のスクリプトをファイルに保存します。この例では、ファイル名は restore-addons.sh です。

    KUBECTL=oc
    ACM_NAMESPACE=open-cluster-management
    
    ACM_VERSION=$(${KUBECTL} get -n ${ACM_NAMESPACE} `${KUBECTL} get mch -oname -n ${ACM_NAMESPACE} | head -n1` -ojsonpath='{.status.desiredVersion}')
    if [ "${ACM_VERSION}" = ""  ]; then
    ACM_VERSION=2.1.1
    fi
    
    echo "ACM version: ${ACM_VERSION}"
    
    for clusterName in `${KUBECTL} get managedcluster --ignore-not-found | grep -v "NAME" | awk '{ print $1 }'`; do
        echo "Checking klusterletaddonconfig in ${clusterName} namespace."
        ${KUBECTL} get klusterletaddonconfig ${clusterName} -n ${clusterName} >/dev/null 2>&1
        if [ "$?" != "0"  ]; then
            echo "  klusterletaddonconfig in ${clusterName} is missing."
            echo "  Creating..."
            printf "  "
            cat <<EOF | ${KUBECTL}  apply -f -
    apiVersion: agent.open-cluster-management.io/v1
    kind: KlusterletAddonConfig
    metadata:
      name: ${clusterName}
      namespace: ${clusterName}
    spec:
      clusterLabels:
        cloud: auto-detect
        vendor: auto-detect
      clusterName: ${clusterName}
      clusterNamespace: ${clusterName}
      applicationManager:
        enabled: true
      certPolicyController:
        enabled: true
      iamPolicyController:
        enabled: true
      policyController:
        enabled: true
      searchCollector:
        enabled: true
      version: ${ACM_VERSION}
    EOF
    
        fi
        echo "  Done."
    done

    open-cluster-management namespace に Red Hat Advanced Cluster Management をインストールしなかった場合は、ACM_NAMESPACE の値を namespace の名前に置き換えます。

  4. CLI からスクリプトを実行します。コマンドは、以下のコマンドのようになるはずです。

    chmod +x restore-addons.sh && ./restore-addons.sh

    スクリプトを実行すると、削除された klusterletaddonconfig CRD が各マネージドクラスター namespace に再作成されます。

1.3.1.6. OpenShift Container Platform クラスターのアップグレード失敗のステータス

Openshift Container Platform クラスターがアップグレードの段階に入ると、クラスター Pod は再起動され、クラスターのステータスが 1-5 分ほど、upgrade failed のままになることがあります。この動作は想定されており、数分後に解決されます。

1.3.1.7. バージョン 2.0.4 から 2.1 にアップグレードすると、ClusterServiceVersion が保留状態のままになる

Red Hat Advanced Cluster Management バージョン 2.0.4 から 2.1 にアップグレードした後に、oc get csv コマンドを実行します。この出力で、Red Hat Advanced Cluster Management ClusterServiceVersion (CSV) の PHASEPending にも拘らず、NAMEadvanced-cluster-management.v2.1.0 に更新されています。

この問題を回避するには、以下の手順を実行し、 clusterRole カスタムリソースを検索して、このリソースがない場合には作成します。

  1. 以下のコマンドを入力して、the Red Hat Advanced Cluster Management 2.1 CSV がデプロイした clusterrolebinding リソースすべてを検索します。

    oc get clusterrolebinding |grep advanced-cluster-management

    出力は次のような内容になるはずです。

    advanced-cluster-management.v2.1.0-86dfdf7c5d          ClusterRole/advanced-cluster-management.v2.1.0-86dfdf7c5d       9h
    advanced-cluster-management.v2.1.0-cd8d57f64           ClusterRole/advanced-cluster-management.v2.1.0-cd8d57f64        9h
  2. 以下のようなコマンドを入力して、各 clusterrolebinding を開き、open-cluster-management サービスアカウントに関連付けられている clusterRole 名を検索します。

    oc get clusterrolebinding advanced-cluster-management.v2.1.0-cd8d57f64 -o yaml

    出力は次のような内容になるはずです。

    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRoleBinding
    metadata:
      name: advanced-cluster-management.v2.1.0-cd8d57f64
    roleRef:
      apiGroup: rbac.authorization.k8s.io
      kind: ClusterRole
      name: advanced-cluster-management.v2.1.0-cd8d57f64
    subjects:
    - kind: ServiceAccount
      name: multicluster-operators
      namespace: open-cluster-management
  3. 以下のコンテンツを .yaml ファイルに追加し、欠落している clusterRole エントリーを手作業で作成します。

    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRole
    metadata:
      name: advanced-cluster-management.v2.1.0-cd8d57f64
    rules:
    - apiGroups:
      - '*'
      resources:
      - '*'
      verbs:
      - '*'