アップグレード
Red Hat Advanced Cluster Security for Kubernetes のアップグレード
概要
第1章 Operator を使用したアップグレード リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Advanced Cluster Security for Kubernetes (RHACS) Operator を使用したアップグレードは、インストール時に選択した Update approval オプションに応じて、自動または手動で実行されます。
アップグレードするときは、次のガイドラインに従ってください。
- Central のバージョンが 3.74 より前の場合は、4.x バージョンにアップグレードする前に 3.74 にアップグレードする必要があります。Central をバージョン 3.74 にアップグレードするには、バージョン 3.74 のアップグレードドキュメント を参照してください。
-
Operator ベースの Central デプロイメントをバージョン 3.74 からアップグレードする場合は、まず Operator アップグレードモードが
Manualに設定されていることを確認します。次に、バージョン 4.0 のアップグレードドキュメント の手順に従って Operator をバージョン 4.0 にアップグレードし、Central がオンラインであることを確認します。バージョン 4.0 へのアップグレードが完了したら、Red Hat では完全な機能を利用するために Central を最新バージョンにアップグレードすることを推奨します。
PostgreSQL 15 へのアップグレードを含む RHACS 4.8 にアップグレードするには、ディスク領域を解放する必要があります。アップグレードを開始する前に、既存のデータベースの 2 倍以上の空きディスク領域があることを確認してください。
1.1. アップグレードへの準備 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Advanced Cluster Security for Kubernetes (RHACS) のバージョンをアップグレードする前に、次の手順を実行します。
- バージョン 3.74 からアップグレードする場合は、RHACS Operator 3.74 の最新パッチリリースバージョンを実行していることを確認します。
- 既存の Central データベースをバックアップします。
-
アップグレードするクラスターに
SecuredClusterカスタムリソース (CR) が含まれている場合は、収集方法をCORE_BPFに変更します。詳細は、「収集方法の変更」を参照してください。
1.1.1. 収集方法の変更 リンクのコピーリンクがクリップボードにコピーされました!
アップグレードするクラスターに SecuredCluster CR が含まれている場合は、アップグレードする前に、ノードごとのコレクション設定が CORE_BPF に設定されていることを確認する必要があります。
手順
- OpenShift Container Platform Web コンソールで、RHACS Operator ページに移動します。
- 上部のナビゲーションメニューで Secured Cluster を選択します。
- インスタンス名 (例: stackrox-secured-cluster-services) をクリックします。
設定を変更するには、次のいずれかの方法を使用します。
- Form view の Per Node Settings → Collector Settings → Collection で、CORE_BPF を選択します。
-
YAML をクリックして YAML エディターを開き、
spec.perNode.collector.collection属性を見つけます。値がKernelModuleまたはEBPFの場合は、CORE_BPFに変更します。
- Save をクリックします。
1.2. Central カスタムリソースの変更 リンクのコピーリンクがクリップボードにコピーされました!
Central DB サービスには永続ストレージが必要です。Central クラスターのデフォルトのストレージクラス (SSD または高パフォーマンス) を設定していない場合は、Central カスタムリソースを再インストールし、Central DB 永続ボリューム要求 (PVC) のストレージクラスで設定する必要があります。
storageClassName を変更する場合、Kubernetes ストレージレイヤーの制限により、バインドした後のクレームのストレージクラスを変更することはできません。そのため、Central CR を再作成する必要があります。
Central のデフォルトのストレージクラスをすでに設定している場合は、このセクションをスキップしてください。
1.3. 外部データベースの Central カスタムリソースの変更 リンクのコピーリンクがクリップボードにコピーされました!
前提条件
データベースインスタンスに、PostgreSQL 13 または 15 をサポートするデータベースと、以下のパーミッションを持つユーザーが必要。
- データベースに接続する権限。
-
スキーまでの
UsageおよびCreate。 -
スキーマ内のすべてのテーブルでの
Select、Insert、Update、およびDelete。 スキーマ内のすべてのシーケンスでの
Usage。注記推奨かつサポートされているバージョンは Postgres 15 です。Red Hat では Postgres 13 のサポートが非推奨となり、RHACS の新しいバージョンで削除される予定です。
手順
OpenShift Container Platform Web コンソールまたはターミナルを使用して、デプロイされた namespace にパスワードシークレットを作成します。
-
OpenShift Container Platform Web コンソールで、Workloads → Secrets ページに移動します。キー
password、およびプロビジョニングされたデータベースのスーパーユーザーのパスワードを含むプレーンテキストファイルのパスとしての値を使用して、キー/値のシークレット を作成します。 または、ターミナルで次のコマンドを実行します。
oc create secret generic external-db-password \ --from-file=password=<password.txt>
$ oc create secret generic external-db-password \1 --from-file=password=<password.txt>2 Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
OpenShift Container Platform Web コンソールで、Workloads → Secrets ページに移動します。キー
- OpenShift Container Platform Web コンソールの Red Hat Advanced Cluster Security for Kubernetes Operator ページに移動します。上部のナビゲーションバーで Central を選択し、データベースに接続するインスタンスを選択します。
- YAML editor ビューに移動します。
-
db.passwordSecret.nameには、前の手順で作成した参照シークレットを指定します。たとえば、external-db-passwordです。 -
db.connectionStringには、keyword=value形式で接続文字列を指定します (例:host=<host> port=5432 database=stackrox user=stackrox sslmode=verify-ca)。 -
db.persistenceの場合は、ブロック全体を削除します。 必要に応じて、次の例に示すように、最上位の仕様の下に TLS ブロックを追加することで、Central がデータベース証明書を信頼する認証局を指定できます。
次の設定で Central カスタムリソースを更新します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
IsEnabledの値をEnabledに変更しないでください。
- Save をクリックします。
1.4. サブスクリプションチャネルの変更 リンクのコピーリンクがクリップボードにコピーされました!
RHACS Operator の更新チャネルは、OpenShift Container Platform Web コンソールまたはコマンドラインを使用して変更できます。RHACS 3.74 から RHACS 4.0 にアップグレードするには、更新チャネルを変更する必要があります。
RHACS Operator をインストールしたすべてのクラスター (Central クラスターとすべてのセキュアクラスターを含む) のサブスクリプションチャネルを変更する必要があります。
前提条件
- 最新の RHACS 3.74 Operator を使用していること、および保留中の手動の Operator アップグレードがないことを確認する。
- Central データベースをバックアップしたことを確認する。
-
cluster-adminパーミッションを持つアカウントを使用して OpenShift Container Platform クラスター Web コンソールにアクセスできる。
1.4.1. Web コンソールを使用してサブスクリプションチャネルを変更する リンクのコピーリンクがクリップボードにコピーされました!
Web コンソールを使用してサブスクリプションチャネルを変更するには、次の手順に従います。
手順
- OpenShift Container Platform Web コンソールの Administrator パースペクティブで、Operators → Installed Operators に移動します。
- RHACS Operator をクリックします。
- Subscription タブをクリックします。
- Update Channel の下にある更新チャネルの名前をクリックします。
- stable を選択し、Save をクリックします。
Automatic 承認ストラテジーがあるサブスクリプションの場合、更新は自動的に開始します。Operators → Installed Operators ページに戻って、更新の進行状況を監視します。完了時に、ステータスは Succeeded および Up to date に変更されます。
Manual 承認ストラテジーがあるサブスクリプションの場合、Subscription タブから更新を手動で承認できます。
1.4.2. コマンドラインを使用したサブスクリプションチャネルの変更 リンクのコピーリンクがクリップボードにコピーされました!
コマンドラインを使用してサブスクリプションチャネルを変更するには、次の手順を使用します。
手順
次のコマンドを実行して、サブスクリプションチャネルを
stableチャネルに変更します。oc -n rhacs-operator \ patch subscriptions.operators.coreos.com rhacs-operator \ --type=merge --patch='{ "spec": { "channel": "stable" }}'$ oc -n rhacs-operator \1 patch subscriptions.operators.coreos.com rhacs-operator \ --type=merge --patch='{ "spec": { "channel": "stable" }}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Kubernetes を使用する場合は、
ocの代わりにkubectlを入力します。
更新中、RHACS Operator は、central-db という名前の新しいデプロイメントをプロビジョニングし、データの移行を開始します。これには約 30 分かかり、アップグレード後にのみ実行されます。
1.5. Operator アップグレードのロールバック リンクのコピーリンクがクリップボードにコピーされました!
Operator アップグレードをロールバックするには、次のセクションのいずれかで説明されている手順を実行する必要があります。CLI または OpenShift Container Platform Web コンソールを使用して、Operator アップグレードをロールバックできます。
- RHACS 4.0 からロールバックする場合は、RHACS 3.74 の最新のパッチリリースバージョンにのみロールバックできます。
- RHACS 4.8 以降からロールバックする場合は、RHACS 4.8 の最新のパッチリリースバージョンにのみロールバックできます。
1.5.1. CLI を使用した Operator アップグレードのロールバック リンクのコピーリンクがクリップボードにコピーされました!
コマンドラインインターフェイス (CLI) コマンドを使用して、Operator バージョンをロールバックできます。
手順
Operator Lifecycle Manager (OLM) サブスクリプションとクラスターサービスバージョン (CSV) を削除します。
重要Kubernetes を使用する場合は、
ocの代わりにkubectlを入力します。OLM サブスクリプションを削除するには、次のコマンドを実行します。
oc -n rhacs-operator delete subscription rhacs-operator
$ oc -n rhacs-operator delete subscription rhacs-operatorCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
subscription.operators.coreos.com "rhacs-operator" deleted
subscription.operators.coreos.com "rhacs-operator" deletedCopy to Clipboard Copied! Toggle word wrap Toggle overflow CSV を削除するには、次のコマンドを実行します。
oc -n rhacs-operator delete csv -l operators.coreos.com/rhacs-operator.rhacs-operator
$ oc -n rhacs-operator delete csv -l operators.coreos.com/rhacs-operator.rhacs-operatorCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
clusterserviceversion.operators.coreos.com "rhacs-operator.v4.8.4" deleted
clusterserviceversion.operators.coreos.com "rhacs-operator.v4.8.4" deletedCopy to Clipboard Copied! Toggle word wrap Toggle overflow
RHACS Operator の以前のバージョンをインストールします。
- OpenShift Web コンソールで、OperatorHub をクリックします。
- Advanced Cluster Security for Kubernetes を検索します。
以前のバージョンの Operator を選択してインストールします。
注記以前の Operator バージョンをインストールすると、RHACS は Operator と同じバージョンにロールバックされます。
1.5.2. Web コンソールを使用した Operator アップグレードのロールバック リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Container Platform Web コンソールを使用して Operator バージョンをロールバックできます。
前提条件
-
cluster-adminパーミッションを持つアカウントを使用して OpenShift Container Platform クラスター Web コンソールにアクセスできる。
手順
- OpenShift Web コンソールで、Operator → Installed Operator をクリックします。
- プロジェクトのリストから rhacs-operator を選択します。
Advanced Cluster Security for Kubernetes Operator を見つけます。
オーバーフローメニュー
→ Uninstall Operator をクリックします。
Operator のアンインストールダイアログが表示されます。
- Red Hat Advanced Cluster Security for Kubernetes (RHACS) のアンインストールを回避するために、Delete all operand instances for this operator チェックボックスがオフになっていることを確認します。
- Uninstall をクリックします。
RHACS Operator の以前のバージョンをインストールします。
- OpenShift Web コンソールで、OperatorHub をクリックします。
- Advanced Cluster Security for Kubernetes を検索します。
以前のバージョンの Operator を選択してインストールします。
注記以前の Operator バージョンをインストールすると、RHACS は Operator と同じバージョンにロールバックされます。
1.6. Operator アップグレードに関する問題のトラブルシューティング リンクのコピーリンクがクリップボードにコピーされました!
RHACS Operator のアップグレード関連の問題を調査して解決するには、次の手順に従ってください。
1.6.1. Central DB をスケジュールできない リンクのコピーリンクがクリップボードにコピーされました!
アップグレード中に失敗した Central DB Pod のトラブルシューティングを行うには、次の手順に従ってください。
central-dbPod のステータスを確認します。oc -n <namespace> get pod -l app=central-db
$ oc -n <namespace> get pod -l app=central-db1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Kubernetes を使用する場合は、
ocの代わりにkubectlを入力します。
Pod のステータスが
Pendingの場合は、describe コマンドを使用して詳細を取得します。oc -n <namespace> describe po/<central-db-pod-name>
$ oc -n <namespace> describe po/<central-db-pod-name>1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Kubernetes を使用する場合は、
ocの代わりにkubectlを入力します。
FailedScheduling警告メッセージが表示される場合があります。Type Reason Age From Message ---- ------ ---- ---- ------- Warning FailedScheduling 54s default-scheduler 0/7 nodes are available: 1 Insufficient memory, 3 node(s) had untolerated taint {node-role.kubernetes.io/master: }, 4 Insufficient cpu. preemption: 0/7 nodes are available: 3 Preemption is not helpful for scheduling, 4 No preemption victims found for incoming pod.Type Reason Age From Message ---- ------ ---- ---- ------- Warning FailedScheduling 54s default-scheduler 0/7 nodes are available: 1 Insufficient memory, 3 node(s) had untolerated taint {node-role.kubernetes.io/master: }, 4 Insufficient cpu. preemption: 0/7 nodes are available: 3 Preemption is not helpful for scheduling, 4 No preemption victims found for incoming pod.Copy to Clipboard Copied! Toggle word wrap Toggle overflow この警告メッセージは、スケジュールされたノードに Pod のリソース要件に対応するのに十分なメモリーがないことを示唆しています。小規模な環境の場合は、ノード上のリソースを増やすか、データベースをサポートできるより大きなノードを追加することを検討してください。
それ以外の場合は、
central→db→resourcesの下のカスタムリソースで、central-dbPod のリソース要件を減らすことを検討してください。ただし、推奨される最小リソースよりも少ないリソースで中央を実行すると、RHACS のパフォーマンスが低下する可能性があります。
1.6.2. Central クラスターまたはセキュアクラスターのデプロイに失敗する リンクのコピーリンクがクリップボードにコピーされました!
RHACS Operator が次の状態にある場合は、カスタムリソースの状態をチェックして問題を見つける必要があります。
- Operator が Central またはセキュアクラスターをデプロイできない場合
- Operator が CR の変更を実際のリソースに適用できない場合
Central の場合は、次のコマンドを実行して状態を確認します。
oc -n rhacs-operator describe centrals.platform.stackrox.io
$ oc -n rhacs-operator describe centrals.platform.stackrox.io1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Kubernetes を使用する場合は、
ocの代わりにkubectlを入力します。
セキュアクラスターの場合は、次のコマンドを実行して状態を確認します。
oc -n rhacs-operator describe securedclusters.platform.stackrox.io
$ oc -n rhacs-operator describe securedclusters.platform.stackrox.io1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Kubernetes を使用する場合は、
ocの代わりにkubectlを入力します。
状態の出力から設定エラーを特定できます。
出力例
さらに、RHACS Pod のログを表示して、問題に関する詳細情報を見つけることができます。次のコマンドを実行してログを表示します。
oc -n rhacs-operator logs deploy/rhacs-operator-controller-manager manager
oc -n rhacs-operator logs deploy/rhacs-operator-controller-manager manager
- 1
- Kubernetes を使用する場合は、
ocの代わりにkubectlを入力します。
第2章 Helm チャートを使用したアップグレード リンクのコピーリンクがクリップボードにコピーされました!
実行している RHACS のリリースに応じて、RHACS の特定のアップグレードパスに従う必要があります。Helm チャートを更新してアップグレードを実行する前に、Central データベースをバックアップする必要もあります。
Helm チャートを使用して RHACS をインストールした場合、RHACS の最新バージョンにアップグレードするには、次の手順を実行します。
- Central データベースをバックアップします。
- 必要に応じて、Central のデータベースと永続ボリューム要求 (PVC) を最適化します。
-
(オプション) central-services Helm チャートのルート証明書を含む
values-private.yaml設定ファイルを生成します。 - Helm チャートを更新します。
-
helm upgradeコマンドを実行します。
- 最適な機能を確保するには、secured-cluster-services Helm チャートと central-services Helm チャートに同じバージョンを使用してください。
- PostgreSQL 15 へのアップグレードを含む RHACS 4.8 にアップグレードするには、ディスク領域を解放する必要があります。アップグレードを開始する前に、既存のデータベースの 2 倍以上の空きディスク領域があることを確認してください。
2.1. Central データベースのバックアップ リンクのコピーリンクがクリップボードにコピーされました!
Central データベースをバックアップし、インフラストラクチャーの障害が発生した場合に、そのバックアップを使用して、失敗したアップグレードからのロールバックまたはデータの復元を行えます。
前提条件
-
Red Hat Advanced Cluster Security for Kubernetes のすべてのリソースに対する
read権限を持つ API トークンがある。Analyst システムロールには、すべてのリソースに対するread権限がある。 -
roxctlCLI をインストールしている。 -
ROX_API_TOKENおよびROX_CENTRAL_ADDRESS環境変数が設定されている。
手順
backup コマンドを実行します。
roxctl -e "$ROX_CENTRAL_ADDRESS" central backup
$ roxctl -e "$ROX_CENTRAL_ADDRESS" central backupCopy to Clipboard Copied! Toggle word wrap Toggle overflow
2.2. Central データベースと PVC の最適化 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Advanced Cluster Security for Kubernetes (RHACS) 4.0 にアップグレードすると、RHACS は、デフォルトの永続ボリューム要求 (PVC) を使用して、central-db という PostgreSQL インスタンスを作成します。オプションで、central-db または PVC 設定をカスタマイズできます。
Red Hat は、次のメモリーおよび CPU 要求の最小値を推奨します。
2.3. ルート証明書ファイルの生成 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Advanced Cluster Security for Kubernetes (RHACS) のインストールに使用した values-private.yaml 設定ファイルにアクセスできない場合は、次の手順に従って、ルート証明書を含む values-private.yaml 設定ファイルを生成します。
values-private.yaml 設定ファイルにアクセスできる場合は、ここでの手順をスキップしてください。
生成された values-private.yaml ファイルには、機密性の高い設定オプションが含まれています。このファイルは安全に保管してください。
手順
-
create_certificate_values_file.shスクリプトをダウンロードします。 create_certificate_values_file.shスクリプトを実行可能にします。chmod +x create_certificate_values_file.sh
$ chmod +x create_certificate_values_file.shCopy to Clipboard Copied! Toggle word wrap Toggle overflow create_certificate_values_file.shスクリプトファイルを実行します。create_certificate_values_file.sh values-private.yaml
$ create_certificate_values_file.sh values-private.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
2.4. Helm チャートリポジトリーの更新 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Advanced Cluster Security for Kubernetes の新しいバージョンにアップグレードする前に、常に Helm チャートを更新する必要があります。
前提条件
- Red Hat Advanced Cluster Security for Kubernetes の Helm チャートリポジトリーをすでに追加している。
- Helm バージョン 3.8.3 以降を使用している。
手順
Red Hat Advanced Cluster Security for Kubernetes チャートリポジトリーを追加します。
helm repo update
$ helm repo updateCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
次のコマンドを実行して、追加されたチャートリポジトリーを確認します。
helm search repo -l rhacs/
$ helm search repo -l rhacs/Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.6. アップグレード用のカスタムリソース定義の準備 リンクのコピーリンクがクリップボードにコピーされました!
バージョン 4.6 または 4.7 からアップグレードする場合は、アップグレードエラーを回避するために SecurityPolicy カスタムリソース定義 (CRD) を準備する必要があります。
手順
- 次のコマンドを実行して、Helm 固有のラベルとアノテーションを CRD に適用します。
oc annotate crd/securitypolicies.config.stackrox.io meta.helm.sh/release-name=stackrox-central-services
$ oc annotate crd/securitypolicies.config.stackrox.io meta.helm.sh/release-name=stackrox-central-services
- 1
- Kubernetes を使用する場合は、
ocの代わりにkubectlを入力します。必要に応じて、上記のデフォルト値stackrox-central-servicesからrelease-nameの値を調整します。
oc annotate crd/securitypolicies.config.stackrox.io meta.helm.sh/release-namespace=stackrox
$ oc annotate crd/securitypolicies.config.stackrox.io meta.helm.sh/release-namespace=stackrox
- 1
- Kubernetes を使用する場合は、
ocの代わりにkubectlを入力します。必要に応じて、上記のデフォルト値stackroxからrelease-namespaceの値を調整します。
oc label crd/securitypolicies.config.stackrox.io app.kubernetes.io/managed-by=Helm
$ oc label crd/securitypolicies.config.stackrox.io app.kubernetes.io/managed-by=Helm
- 1
- Kubernetes を使用する場合は、
ocの代わりにkubectlを入力します。
2.7. Helm アップグレードコマンドの実行 リンクのコピーリンクがクリップボードにコピーされました!
helm upgrade コマンドを使用して、Red Hat Advanced Cluster Security for Kubernetes (RHACS) を更新できます。
前提条件
-
Red Hat Advanced Cluster Security for Kubernetes (RHACS) のインストールに使用した
values-private.yaml設定ファイルにアクセスできる。アクセスできない場合は、この手順のコマンドを続行する前に、ルート証明書を含むvalues-private.yaml設定ファイルを生成する必要があります。
手順
helm upgrade コマンドを実行し、
-fオプションを使用して設定ファイルを指定します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
-fオプションを使用して、YAML 設定ファイルのパスを指定します。
helm upgrade -n stackrox stackrox-secured-cluster-services \ rhacs/secured-cluster-services --version <current-rhacs-version> \ -f values-private.yaml
$ helm upgrade -n stackrox stackrox-secured-cluster-services \ rhacs/secured-cluster-services --version <current-rhacs-version> \1 -f values-private.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
-fオプションを使用して、YAML 設定ファイルのパスを指定します。
--reuse-values オプションを使用すると、アップグレード中に以前に設定された Helm 値を保存できます。その場合は、次のバージョンにアップグレードする前に、central-db の作成をオフにする必要があります。
次のコマンド例を参照してください。
2.8. Helm アップグレードのロールバック リンクのコピーリンクがクリップボードにコピーされました!
新しいバージョンへのアップグレードが失敗した場合は、以前のバージョンの Central にロールバックできます。
手順
次の
helm upgradeコマンドを実行します。helm upgrade -n stackrox \ stackrox-central-services rhacs/central-services \ --version <previous_rhacs_74_version> \ --set central.db.enabled=false
$ helm upgrade -n stackrox \ stackrox-central-services rhacs/central-services \ --version <previous_rhacs_74_version> \1 --set central.db.enabled=falseCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
<previous_rhacs_74_version>を以前にインストールされた RHACS バージョンに置き換えます。
central-db永続ボリューム要求 (PVC) を削除します。oc -n stackrox delete pvc central-db
$ oc -n stackrox delete pvc central-db1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Kubernetes を使用する場合は、
ocの代わりにkubectlを入力します。
第3章 roxctl CLI を使用した手動アップグレード リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Advanced Cluster Security for Kubernetes (RHACS) を、サポート対象の古いバージョンから最新バージョンにアップグレードできます。
-
手動アップグレード手順を実行する必要があるのは、
roxctlCLI を使用して RHACS をインストールした場合のみです。 - たとえば、バージョン 3.74 からバージョン 4.0 へ、バージョン 4.0 からバージョン 4.1 へなど、バージョンアップグレードごとに実行する必要がある手動の手順があります。したがって、Red Hat では、選択したバージョンがインストールされるまで、まず 3.74 から 4.0 にアップグレードし、次に 4.0 から 4.1 にアップグレードし、最後に 4.1 から 4.2 にアップグレードすることを推奨しています。完全な機能を利用するには、Red Hat は最新バージョンにアップグレードすることを推奨します。
- RHACS 4.8 へのアップグレードには PostgreSQL 15 へのアップグレードが含まれており、ディスク上に追加の空き容量が必要になります。アップグレードを開始する前に、十分な空きディスク容量 (理想的には既存のデータベースのサイズのほぼ 2 倍) があることを確認してください。
RHACS を最新バージョンにアップグレードするには、次の手順を実行します。
3.1. Central データベースのバックアップ リンクのコピーリンクがクリップボードにコピーされました!
Central データベースをバックアップし、インフラストラクチャーの障害が発生した場合に、そのバックアップを使用して、失敗したアップグレードからのロールバックまたはデータの復元を行えます。
前提条件
-
Red Hat Advanced Cluster Security for Kubernetes のすべてのリソースに対する
read権限を持つ API トークンがある。Analyst システムロールには、すべてのリソースに対するread権限がある。 -
roxctlCLI をインストールしている。 -
ROX_API_TOKENおよびROX_CENTRAL_ADDRESS環境変数が設定されている。
手順
backup コマンドを実行します。
roxctl -e "$ROX_CENTRAL_ADDRESS" central backup
$ roxctl -e "$ROX_CENTRAL_ADDRESS" central backupCopy to Clipboard Copied! Toggle word wrap Toggle overflow
3.2. roxctl CLI のアップグレード リンクのコピーリンクがクリップボードにコピーされました!
roxctl CLI を最新バージョンにアップグレードするには、既存のバージョンの roxctl CLI をアンインストールしてから、最新バージョンの roxctl CLI をインストールする必要があります。
3.2.1. roxctl CLI のアンインストール リンクのコピーリンクがクリップボードにコピーされました!
次の手順を使用して、Linux 上の roxctl CLI バイナリーをアンインストールできます。
手順
roxctlバイナリーを見つけて削除します。ROXPATH=$(which roxctl) && rm -f $ROXPATH
$ ROXPATH=$(which roxctl) && rm -f $ROXPATH1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 環境によっては、
roxctlバイナリーを削除するために管理者権限が必要になる場合があります。
3.2.2. Linux への roxctl CLI のインストール リンクのコピーリンクがクリップボードにコピーされました!
次の手順を使用して、Linux に roxctl CLI バイナリーをインストールできます。
Linux 用の roxctl CLI は、amd64、arm64、ppc64le、s390x アーキテクチャーで使用できます。
手順
ターゲットのオペレーティングシステムの
roxctlアーキテクチャーを確認します。arch="$(uname -m | sed "s/x86_64//")"; arch="${arch:+-$arch}"$ arch="$(uname -m | sed "s/x86_64//")"; arch="${arch:+-$arch}"Copy to Clipboard Copied! Toggle word wrap Toggle overflow roxctlCLI をダウンロードします。curl -L -f -o roxctl "https://mirror.openshift.com/pub/rhacs/assets/4.8.4/bin/Linux/roxctl${arch}"$ curl -L -f -o roxctl "https://mirror.openshift.com/pub/rhacs/assets/4.8.4/bin/Linux/roxctl${arch}"Copy to Clipboard Copied! Toggle word wrap Toggle overflow roxctlバイナリーを実行可能にします。chmod +x roxctl
$ chmod +x roxctlCopy to Clipboard Copied! Toggle word wrap Toggle overflow PATH上にあるディレクトリーにroxctlバイナリーを配置します。PATHを確認するには、以下のコマンドを実行します。echo $PATH
$ echo $PATHCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
インストールした
roxctlのバージョンを確認します。roxctl version
$ roxctl versionCopy to Clipboard Copied! Toggle word wrap Toggle overflow
3.2.3. macOS への roxctl CLI のインストール リンクのコピーリンクがクリップボードにコピーされました!
次の手順を使用して、roxctl CLI バイナリーを macOS にインストールできます。
macOS 用の roxctl CLI は、amd64 および arm64 アーキテクチャーで使用できます。
手順
ターゲットのオペレーティングシステムの
roxctlアーキテクチャーを確認します。arch="$(uname -m | sed "s/x86_64//")"; arch="${arch:+-$arch}"$ arch="$(uname -m | sed "s/x86_64//")"; arch="${arch:+-$arch}"Copy to Clipboard Copied! Toggle word wrap Toggle overflow roxctlCLI をダウンロードします。curl -L -f -o roxctl "https://mirror.openshift.com/pub/rhacs/assets/4.8.4/bin/Darwin/roxctl${arch}"$ curl -L -f -o roxctl "https://mirror.openshift.com/pub/rhacs/assets/4.8.4/bin/Darwin/roxctl${arch}"Copy to Clipboard Copied! Toggle word wrap Toggle overflow バイナリーからすべての拡張属性を削除します。
xattr -c roxctl
$ xattr -c roxctlCopy to Clipboard Copied! Toggle word wrap Toggle overflow roxctlバイナリーを実行可能にします。chmod +x roxctl
$ chmod +x roxctlCopy to Clipboard Copied! Toggle word wrap Toggle overflow PATH上にあるディレクトリーにroxctlバイナリーを配置します。PATHを確認するには、以下のコマンドを実行します。echo $PATH
$ echo $PATHCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
インストールした
roxctlのバージョンを確認します。roxctl version
$ roxctl versionCopy to Clipboard Copied! Toggle word wrap Toggle overflow
3.2.4. Windows への roxctl CLI のインストール リンクのコピーリンクがクリップボードにコピーされました!
次の手順を使用して、roxctl CLI バイナリーを Windows にインストールできます。
Windows 用の roxctl CLI は、amd64 アーキテクチャーで使用できます。
手順
roxctlCLI をダウンロードします。curl -f -O https://mirror.openshift.com/pub/rhacs/assets/4.8.4/bin/Windows/roxctl.exe
$ curl -f -O https://mirror.openshift.com/pub/rhacs/assets/4.8.4/bin/Windows/roxctl.exeCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
インストールした
roxctlのバージョンを確認します。roxctl version
$ roxctl versionCopy to Clipboard Copied! Toggle word wrap Toggle overflow
3.3. Central クラスターのアップグレード リンクのコピーリンクがクリップボードにコピーされました!
Central データベースのバックアップを作成し、プロビジョニングバンドルを使用して必要なリソースを生成したら、次に Central クラスターをアップグレードします。このプロセスでは、SecurityPolicy カスタムリソース定義 (CRD)、Central、および Scanner をアップグレードする必要があります。
3.3.1. SecurityPolicy カスタムリソース定義のアップグレード リンクのコピーリンクがクリップボードにコピーされました!
新しい CRD を生成してクラスターに適用することで、SecurityPolicy カスタムリソース定義 (CRD) を最新バージョンに更新できます。
手順
次のコマンドを入力し、
roxctlを使用して新しいリソースセットを生成します。roxctl central generate k8s pvc > bundle.zip
$ roxctl central generate k8s pvc > bundle.zipCopy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを入力して、アーカイブから CRD を抽出します。
unzip bundle.zip central/00-securitypolicy-crd.yaml
$ unzip bundle.zip central/00-securitypolicy-crd.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを入力して、抽出した CRD をクラスターに適用します。
oc apply -f central/00-securitypolicy-crd.yaml
$ oc apply -f central/00-securitypolicy-crd.yaml1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Kubernetes を使用する場合は、
ocの代わりにkubectlを入力します。
3.3.2. Central のアップグレード リンクのコピーリンクがクリップボードにコピーされました!
更新されたイメージをダウンロードしてデプロイすることにより、Central を最新バージョンに更新できます。
Kubernetes を使用する場合は、oc の代わりに kubectl を入力します。
手順
次のコマンドを実行して、Central イメージを更新します。
oc -n stackrox set image deploy/central \ central=registry.redhat.io/advanced-cluster-security/rhacs-main-rhel8:4.8.4
$ oc -n stackrox set image deploy/central \ central=registry.redhat.io/advanced-cluster-security/rhacs-main-rhel8:4.8.4Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、Central-db イメージを更新します。
oc -n stackrox set image deploy/central-db \ central-db=registry.redhat.io/advanced-cluster-security/rhacs-central-db-rhel8:4.8.4 \ init-db=registry.redhat.io/advanced-cluster-security/rhacs-central-db-rhel8:4.8.4
$ oc -n stackrox set image deploy/central-db \ central-db=registry.redhat.io/advanced-cluster-security/rhacs-central-db-rhel8:4.8.4 \ init-db=registry.redhat.io/advanced-cluster-security/rhacs-central-db-rhel8:4.8.4Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、config controller イメージを更新します。
oc -n stackrox set image deploy/config-controller \ manager=registry.redhat.io/advanced-cluster-security/rhacs-main-rhel8:4.8.4
$ oc -n stackrox set image deploy/config-controller \ manager=registry.redhat.io/advanced-cluster-security/rhacs-main-rhel8:4.8.4Copy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
新しい Pod がデプロイされたことを確認します。
oc get deploy -n stackrox -o wide
$ oc get deploy -n stackrox -o wideCopy to Clipboard Copied! Toggle word wrap Toggle overflow oc get pod -n stackrox --watch
$ oc get pod -n stackrox --watchCopy to Clipboard Copied! Toggle word wrap Toggle overflow
3.3.3. Scanner のアップグレード リンクのコピーリンクがクリップボードにコピーされました!
更新されたイメージをダウンロードしてデプロイすることで、Scanner を最新バージョンに更新できます。
Kubernetes を使用している場合は、oc コマンドの代わりに kubectl コマンドを入力します。
手順
カスタム Scanner 設定を作成した場合は、Scanner 設定ファイルを更新する前に、これらの変更を適用する必要があります。
次のコマンドを実行して Scanner を生成します。
roxctl -e "$ROX_CENTRAL_ADDRESS" scanner generate
$ roxctl -e "$ROX_CENTRAL_ADDRESS" scanner generateCopy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、TLS シークレット YAML ファイルを適用します。
oc apply -f scanner-bundle/scanner/02-scanner-03-tls-secret.yaml
$ oc apply -f scanner-bundle/scanner/02-scanner-03-tls-secret.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、スキャナー設定 YAML ファイルを適用します。
oc apply -f scanner-bundle/scanner/02-scanner-04-scanner-config.yaml
$ oc apply -f scanner-bundle/scanner/02-scanner-04-scanner-config.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
次のコマンドを実行して、Scanner イメージを更新します。
oc -n stackrox set image deploy/scanner \ scanner=registry.redhat.io/advanced-cluster-security/rhacs-scanner-rhel8:4.8.4
$ oc -n stackrox set image deploy/scanner \ scanner=registry.redhat.io/advanced-cluster-security/rhacs-scanner-rhel8:4.8.4Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、Scanner データベースイメージを更新します。
oc -n stackrox set image deploy/scanner-db \ db=registry.redhat.io/advanced-cluster-security/rhacs-scanner-db-rhel8:4.8.4 \ init-db=registry.redhat.io/advanced-cluster-security/rhacs-scanner-db-rhel8:4.8.4
$ oc -n stackrox set image deploy/scanner-db \ db=registry.redhat.io/advanced-cluster-security/rhacs-scanner-db-rhel8:4.8.4 \ init-db=registry.redhat.io/advanced-cluster-security/rhacs-scanner-db-rhel8:4.8.4Copy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
次のコマンドを実行して、新しい Pod がデプロイされたことを確認します。
oc get deploy -n stackrox -o wide
$ oc get deploy -n stackrox -o wideCopy to Clipboard Copied! Toggle word wrap Toggle overflow oc get pod -n stackrox --watch
$ oc get pod -n stackrox --watchCopy to Clipboard Copied! Toggle word wrap Toggle overflow
3.3.3.1. Scanner デプロイメントの GOMEMLIMIT 環境変数の編集 リンクのコピーリンクがクリップボードにコピーされました!
バージョン 4.4 にアップグレードするには、GOMEMLIMIT 環境変数を ROX_MEMLIMIT 環境変数に手動で置き換える必要があります。この変数はデプロイメントごとに編集する必要があります。
手順
次のコマンドを実行して、Scanner デプロイメントの変数を編集します。
oc -n stackrox edit deploy/scanner
$ oc -n stackrox edit deploy/scanner1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Kubernetes を使用する場合は、
ocの代わりにkubectlを入力します。
-
GOMEMLIMIT変数をROX_MEMLIMITに置き換えます。 - ファイルを保存します。
3.3.4. Central クラスターのアップグレードの確認 リンクのコピーリンクがクリップボードにコピーされました!
Central と Scanner の両方をアップグレードした後、Central クラスターのアップグレードが完了していることを確認します。
手順
次のコマンドを実行して、Central ログを確認します。
oc logs -n stackrox deploy/central -c central
$ oc logs -n stackrox deploy/central -c central1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Kubernetes を使用する場合は、
ocの代わりにkubectlを入力します。
正常なアップグレードのサンプル出力
3.4. すべてのセキュアクラスターのアップグレード リンクのコピーリンクがクリップボードにコピーされました!
Central サービスをアップグレードした後、すべてのセキュアクラスターをアップグレードする必要があります。
自動アップグレードを使用している場合は、以下を行います。
- 自動アップグレードを使用して、すべてのセキュアクラスターを更新します。
- 自動クラスターアップグレーダーの問題のトラブルシューティングは、クラスターアップグレーダーのトラブルシューティング を参照してください。
- このセクションの手順をスキップして、アップグレードの確認 および API トークンの取り消し セクションの手順に従ってください。
自動アップグレードを使用していない場合は、Central クラスターを含むすべてのセキュアクラスターでこのセクションの手順を実行する必要があります。
- 最適な機能を確保するには、セキュアクラスターと Central がインストールされているクラスターに同じ RHACS バージョンを使用してください。
Sensor、Collector、および Admission コントローラーを実行している各セキュアクラスターの手動アップグレードを完了するには、このセクションの手順に従ってください。
3.4.1. その他のイメージの更新 リンクのコピーリンクがクリップボードにコピーされました!
自動アップグレードを使用しない場合は、各セキュアクラスターの Sensor、Collector、Compliance イメージを更新する必要があります。
Kubernetes を使用している場合は、この手順にリストされているコマンドで oc の代わりに kubectl を使用してください。
手順
Sensor イメージを更新します。
oc -n stackrox set image deploy/sensor sensor=registry.redhat.io/advanced-cluster-security/rhacs-main-rhel8:4.8.4
$ oc -n stackrox set image deploy/sensor sensor=registry.redhat.io/advanced-cluster-security/rhacs-main-rhel8:4.8.41 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Kubernetes を使用する場合は、
ocの代わりにkubectlを入力します。
Compliance イメージを更新します。
oc -n stackrox set image ds/collector compliance=registry.redhat.io/advanced-cluster-security/rhacs-main-rhel8:4.8.4
$ oc -n stackrox set image ds/collector compliance=registry.redhat.io/advanced-cluster-security/rhacs-main-rhel8:4.8.41 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Kubernetes を使用する場合は、
ocの代わりにkubectlを入力します。
Collector イメージを更新します。
oc -n stackrox set image ds/collector collector=registry.redhat.io/advanced-cluster-security/rhacs-collector-rhel8:4.8.4
$ oc -n stackrox set image ds/collector collector=registry.redhat.io/advanced-cluster-security/rhacs-collector-rhel8:4.8.41 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Kubernetes を使用する場合は、
ocの代わりにkubectlを入力します。
アドミッションコントロールイメージを更新します。
oc -n stackrox set image deploy/admission-control admission-control=registry.redhat.io/advanced-cluster-security/rhacs-main-rhel8:4.8.4
$ oc -n stackrox set image deploy/admission-control admission-control=registry.redhat.io/advanced-cluster-security/rhacs-main-rhel8:4.8.4Copy to Clipboard Copied! Toggle word wrap Toggle overflow
roxctl CLI を使用して Red Hat OpenShift に RHACS をインストールした場合は、Security Context Constraints (SCC) を移行する必要があります。
詳細は、「関連情報」セクションの「手動アップグレード中の SCC の移行」を参照してください。
3.4.2. センサーと admission-control デプロイメントに POD_NAMESPACE を追加する リンクのコピーリンクがクリップボードにコピーされました!
4.6 より前のバージョンからバージョン 4.6 以降にアップグレードする場合は、センサーと admission-control デプロイメントにパッチを適用して、POD_NAMESPACE 環境変数を設定する必要があります。
Kubernetes を使用している場合は、この手順にリストされているコマンドで oc の代わりに kubectl を使用してください。
手順
次のコマンドを実行して、センサーにパッチを適用し、
POD_NAMESPACEが設定されていることを確認します。[[ -z "$(oc -n stackrox get deployment sensor -o yaml | grep POD_NAMESPACE)" ]] && oc -n stackrox patch deployment sensor --type=json -p '[{"op":"add","path":"/spec/template/spec/containers/0/env/-","value":{"name":"POD_NAMESPACE","valueFrom":{"fieldRef":{"fieldPath":"metadata.namespace"}}}}]'$ [[ -z "$(oc -n stackrox get deployment sensor -o yaml | grep POD_NAMESPACE)" ]] && oc -n stackrox patch deployment sensor --type=json -p '[{"op":"add","path":"/spec/template/spec/containers/0/env/-","value":{"name":"POD_NAMESPACE","valueFrom":{"fieldRef":{"fieldPath":"metadata.namespace"}}}}]'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、admission-control にパッチを適用し、
POD_NAMESPACEが設定されていることを確認します。[[ -z "$(oc -n stackrox get deployment admission-control -o yaml | grep POD_NAMESPACE)" ]] && oc -n stackrox patch deployment admission-control --type=json -p '[{"op":"add","path":"/spec/template/spec/containers/0/env/-","value":{"name":"POD_NAMESPACE","valueFrom":{"fieldRef":{"fieldPath":"metadata.namespace"}}}}]'$ [[ -z "$(oc -n stackrox get deployment admission-control -o yaml | grep POD_NAMESPACE)" ]] && oc -n stackrox patch deployment admission-control --type=json -p '[{"op":"add","path":"/spec/template/spec/containers/0/env/-","value":{"name":"POD_NAMESPACE","valueFrom":{"fieldRef":{"fieldPath":"metadata.namespace"}}}}]'Copy to Clipboard Copied! Toggle word wrap Toggle overflow
次のステップ
3.4.3. 手動アップグレード中の SCC の移行 リンクのコピーリンクがクリップボードにコピーされました!
roxctl CLI を使用して手動アップグレード中に Security Context Constraints (SCC) を移行すると、Red Hat OpenShift SCC を使用するように Red Hat Advanced Cluster Security for Kubernetes (RHACS) サービスを移行して、Central クラスターとすべてのセキュアクラスター全体で互換性と最適なセキュリティー設定を確保できます。
手順
Central クラスターとすべてのセキュアクラスターにデプロイされているすべての RHACS サービスをリスト表示します。
oc -n stackrox describe pods | grep 'openshift.io/scc\|^Name:'
$ oc -n stackrox describe pods | grep 'openshift.io/scc\|^Name:'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow この例では、各 Pod に独自のカスタム SCC があり、
openshift.io/sccフィールドで指定されていることがわかります。RHACS のカスタム SCC の代わりに Red Hat OpenShift SCC を使用するには、必要なロールとロールバインディングを追加します。
Central クラスターで Red Hat OpenShift SCC を使用するために必要なロールとロールバインディングを追加するには、次の手順を実行します。
次の内容を使用して、ロールリソースとロールバインディングリソースを定義する
update-central.yamlという名前のファイルを作成します。例3.1 サンプル YAML ファイル
次のコマンドを実行して、
update-central.yamlファイルで指定したロールリソースとロールバインディングリソースを作成します。oc -n stackrox create -f ./update-central.yaml
$ oc -n stackrox create -f ./update-central.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
すべてのセキュアクラスターで Red Hat OpenShift SCC を使用するために必要なロールとロールバインディングを追加するには、次の手順を実行します。
次の内容を使用して、ロールリソースとロールバインディングリソースを定義する
upgrade-scs.yamlという名前のファイルを作成します。例3.2 サンプル YAML ファイル
次のコマンドを実行して、
upgrade-scs.yamlファイルで指定したロールリソースとロールバインディングリソースを作成します。oc -n stackrox create -f ./update-scs.yaml
$ oc -n stackrox create -f ./update-scs.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 重要upgrade-scs.yamlファイルで指定したロールとロールバインディングを作成するには、各セキュアクラスターでこのコマンドを実行する必要があります。
RHACS に固有の SCC を削除します。
Central クラスターに固有の SCC を削除するには、次のコマンドを実行します。
oc delete scc/stackrox-central scc/stackrox-central-db scc/stackrox-scanner
$ oc delete scc/stackrox-central scc/stackrox-central-db scc/stackrox-scannerCopy to Clipboard Copied! Toggle word wrap Toggle overflow すべてのセキュアクラスターに固有の SCC を削除するには、次のコマンドを実行します。
oc delete scc/stackrox-admission-control scc/stackrox-collector scc/stackrox-sensor
$ oc delete scc/stackrox-admission-control scc/stackrox-collector scc/stackrox-sensorCopy to Clipboard Copied! Toggle word wrap Toggle overflow 重要各セキュアクラスターに固有の SCC を削除するには、各セキュアクラスターでこのコマンドを実行する必要があります。
検証
次のコマンドを実行して、すべての Pod が正しい SCC を使用していることを確認します。
oc -n stackrox describe pods | grep 'openshift.io/scc\|^Name:'
$ oc -n stackrox describe pods | grep 'openshift.io/scc\|^Name:'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力を次の表と比較してください。
Expand コンポーネント 以前のカスタム SCC Red Hat OpenShift 4 の新しい SCC Central
stackrox-centralnonroot-v2Central-db
stackrox-central-dbnonroot-v2Scanner
stackrox-scannernonroot-v2Scanner-db
stackrox-scannernonroot-v2Admission Controller
stackrox-admission-controlrestricted-v2Collector
stackrox-collectorprivilegedSensor
stackrox-sensorrestricted-v2
3.4.3.1. Sensor デプロイメントの GOMEMLIMIT 環境変数の編集 リンクのコピーリンクがクリップボードにコピーされました!
バージョン 4.4 にアップグレードするには、GOMEMLIMIT 環境変数を ROX_MEMLIMIT 環境変数に手動で置き換える必要があります。この変数はデプロイメントごとに編集する必要があります。
手順
次のコマンドを実行して、Sensor デプロイメントの変数を編集します。
oc -n stackrox edit deploy/sensor
$ oc -n stackrox edit deploy/sensor1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Kubernetes を使用する場合は、
ocの代わりにkubectlを入力します。
-
GOMEMLIMIT変数をROX_MEMLIMITに置き換えます。 - ファイルを保存します。
3.4.3.2. Collector デプロイメントの GOMEMLIMIT 環境変数の編集 リンクのコピーリンクがクリップボードにコピーされました!
バージョン 4.4 にアップグレードするには、GOMEMLIMIT 環境変数を ROX_MEMLIMIT 環境変数に手動で置き換える必要があります。この変数はデプロイメントごとに編集する必要があります。
手順
Collector デプロイメントの変数を編集するには、次のコマンドを実行します。
oc -n stackrox edit deploy/collector
$ oc -n stackrox edit deploy/collector1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Kubernetes を使用する場合は、
ocの代わりにkubectlを入力します。
-
GOMEMLIMIT変数をROX_MEMLIMITに置き換えます。 - ファイルを保存します。
3.4.3.3. Admission Controller デプロイメントの GOMEMLIMIT 環境変数の編集 リンクのコピーリンクがクリップボードにコピーされました!
バージョン 4.4 にアップグレードするには、GOMEMLIMIT 環境変数を ROX_MEMLIMIT 環境変数に手動で置き換える必要があります。この変数はデプロイメントごとに編集する必要があります。
手順
次のコマンドを実行して、Admission Controller デプロイメントの変数を編集します。
oc -n stackrox edit deploy/admission-control
$ oc -n stackrox edit deploy/admission-control1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Kubernetes を使用する場合は、
ocの代わりにkubectlを入力します。
-
GOMEMLIMIT変数をROX_MEMLIMITに置き換えます。 - ファイルを保存します。
3.4.3.4. セキュアクラスターのアップグレードの確認 リンクのコピーリンクがクリップボードにコピーされました!
セキュアクラスターをアップグレードしたら、更新された Pod が機能していることを確認します。
手順
新しい Pod がデプロイされていることを確認します。
oc get deploy,ds -n stackrox -o wide
$ oc get deploy,ds -n stackrox -o wide1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Kubernetes を使用する場合は、
ocの代わりにkubectlを入力します。
oc get pod -n stackrox --watch
$ oc get pod -n stackrox --watch1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Kubernetes を使用する場合は、
ocの代わりにkubectlを入力します。
3.5. StackRox Scanner を使用した RHCOS ノードスキャンの有効化 リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Container Platform を使用する場合は、Red Hat Advanced Cluster Security for Kubernetes (RHACS) を使用して、Red Hat Enterprise Linux CoreOS (RHCOS) ノードの脆弱性スキャンを有効にできます。
ノードをスキャンする際に完全な機能を利用するには、Scanner V4 を使用します。StackRox Scanner を使用している場合に Scanner V4 に変更する手順については、「Scanner V4 の有効化」を参照してください。
前提条件
- セキュアクラスターの RHCOS ノードホストをスキャンするには、OpenShift Container Platform 4.12 以降にセキュアクラスターをインストールしておく必要があります。サポートされるプラットフォームおよびアーキテクチャーの詳細は、Red Hat Advanced Cluster Security for Kubernetes Support Matrix を参照してください。RHACS のライフサイクルのサポート情報は、Red Hat Advanced Cluster Security for Kubernetes サポートポリシー を参照してください。
- この手順では、ノードスキャンを初めて有効にする方法を説明します。Scanner V4 ではなく StackRox Scanner を使用するように Red Hat Advanced Cluster Security for Kubernetes を再設定する場合は、「StackRox Scanner を使用して RHCOS ノードのスキャンを復元する」の手順に従ってください。
手順
次のコマンドのいずれかを実行して、コンプライアンスコンテナーを更新します。
メトリクスが無効になっているデフォルトのコンプライアンスコンテナーの場合は、次のコマンドを実行します。
oc -n stackrox patch daemonset/collector -p '{"spec":{"template":{"spec":{"containers":[{"name":"compliance","env":[{"name":"ROX_METRICS_PORT","value":"disabled"},{"name":"ROX_NODE_SCANNING_ENDPOINT","value":"127.0.0.1:8444"},{"name":"ROX_NODE_SCANNING_INTERVAL","value":"4h"},{"name":"ROX_NODE_SCANNING_INTERVAL_DEVIATION","value":"24m"},{"name":"ROX_NODE_SCANNING_MAX_INITIAL_WAIT","value":"5m"},{"name":"ROX_RHCOS_NODE_SCANNING","value":"true"},{"name":"ROX_CALL_NODE_INVENTORY_ENABLED","value":"true"}]}]}}}}'$ oc -n stackrox patch daemonset/collector -p '{"spec":{"template":{"spec":{"containers":[{"name":"compliance","env":[{"name":"ROX_METRICS_PORT","value":"disabled"},{"name":"ROX_NODE_SCANNING_ENDPOINT","value":"127.0.0.1:8444"},{"name":"ROX_NODE_SCANNING_INTERVAL","value":"4h"},{"name":"ROX_NODE_SCANNING_INTERVAL_DEVIATION","value":"24m"},{"name":"ROX_NODE_SCANNING_MAX_INITIAL_WAIT","value":"5m"},{"name":"ROX_RHCOS_NODE_SCANNING","value":"true"},{"name":"ROX_CALL_NODE_INVENTORY_ENABLED","value":"true"}]}]}}}}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow Prometheus メトリクスが有効になっているコンプライアンスコンテナーの場合は、次のコマンドを実行します。
oc -n stackrox patch daemonset/collector -p '{"spec":{"template":{"spec":{"containers":[{"name":"compliance","env":[{"name":"ROX_METRICS_PORT","value":":9091"},{"name":"ROX_NODE_SCANNING_ENDPOINT","value":"127.0.0.1:8444"},{"name":"ROX_NODE_SCANNING_INTERVAL","value":"4h"},{"name":"ROX_NODE_SCANNING_INTERVAL_DEVIATION","value":"24m"},{"name":"ROX_NODE_SCANNING_MAX_INITIAL_WAIT","value":"5m"},{"name":"ROX_RHCOS_NODE_SCANNING","value":"true"},{"name":"ROX_CALL_NODE_INVENTORY_ENABLED","value":"true"}]}]}}}}'$ oc -n stackrox patch daemonset/collector -p '{"spec":{"template":{"spec":{"containers":[{"name":"compliance","env":[{"name":"ROX_METRICS_PORT","value":":9091"},{"name":"ROX_NODE_SCANNING_ENDPOINT","value":"127.0.0.1:8444"},{"name":"ROX_NODE_SCANNING_INTERVAL","value":"4h"},{"name":"ROX_NODE_SCANNING_INTERVAL_DEVIATION","value":"24m"},{"name":"ROX_NODE_SCANNING_MAX_INITIAL_WAIT","value":"5m"},{"name":"ROX_RHCOS_NODE_SCANNING","value":"true"},{"name":"ROX_CALL_NODE_INVENTORY_ENABLED","value":"true"}]}]}}}}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow
次の手順を実行して、Collector DaemonSet (DS) を更新します。
次のコマンドを実行して、新しいボリュームマウントを Collector DS に追加します。
oc -n stackrox patch daemonset/collector -p '{"spec":{"template":{"spec":{"volumes":[{"name":"tmp-volume","emptyDir":{}},{"name":"cache-volume","emptyDir":{"sizeLimit":"200Mi"}}]}}}}'$ oc -n stackrox patch daemonset/collector -p '{"spec":{"template":{"spec":{"volumes":[{"name":"tmp-volume","emptyDir":{}},{"name":"cache-volume","emptyDir":{"sizeLimit":"200Mi"}}]}}}}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、新しい
NodeScannerコンテナーを追加します。oc -n stackrox patch daemonset/collector -p '{"spec":{"template":{"spec":{"containers":[{"command":["/scanner","--nodeinventory","--config=",""],"env":[{"name":"ROX_NODE_NAME","valueFrom":{"fieldRef":{"apiVersion":"v1","fieldPath":"spec.nodeName"}}},{"name":"ROX_CLAIR_V4_SCANNING","value":"true"},{"name":"ROX_COMPLIANCE_OPERATOR_INTEGRATION","value":"true"},{"name":"ROX_CSV_EXPORT","value":"false"},{"name":"ROX_DECLARATIVE_CONFIGURATION","value":"false"},{"name":"ROX_INTEGRATIONS_AS_CONFIG","value":"false"},{"name":"ROX_NETPOL_FIELDS","value":"true"},{"name":"ROX_NETWORK_DETECTION_BASELINE_SIMULATION","value":"true"},{"name":"ROX_NETWORK_GRAPH_PATTERNFLY","value":"true"},{"name":"ROX_NODE_SCANNING_CACHE_TIME","value":"3h36m"},{"name":"ROX_NODE_SCANNING_INITIAL_BACKOFF","value":"30s"},{"name":"ROX_NODE_SCANNING_MAX_BACKOFF","value":"5m"},{"name":"ROX_PROCESSES_LISTENING_ON_PORT","value":"false"},{"name":"ROX_QUAY_ROBOT_ACCOUNTS","value":"true"},{"name":"ROX_ROXCTL_NETPOL_GENERATE","value":"true"},{"name":"ROX_SOURCED_AUTOGENERATED_INTEGRATIONS","value":"false"},{"name":"ROX_SYSLOG_EXTRA_FIELDS","value":"true"},{"name":"ROX_SYSTEM_HEALTH_PF","value":"false"},{"name":"ROX_VULN_MGMT_WORKLOAD_CVES","value":"false"}],"image":"registry.redhat.io/advanced-cluster-security/rhacs-scanner-slim-rhel8:4.8.4","imagePullPolicy":"IfNotPresent","name":"node-inventory","ports":[{"containerPort":8444,"name":"grpc","protocol":"TCP"}],"volumeMounts":[{"mountPath":"/host","name":"host-root-ro","readOnly":true},{"mountPath":"/tmp/","name":"tmp-volume"},{"mountPath":"/cache","name":"cache-volume"}]}]}}}}'$ oc -n stackrox patch daemonset/collector -p '{"spec":{"template":{"spec":{"containers":[{"command":["/scanner","--nodeinventory","--config=",""],"env":[{"name":"ROX_NODE_NAME","valueFrom":{"fieldRef":{"apiVersion":"v1","fieldPath":"spec.nodeName"}}},{"name":"ROX_CLAIR_V4_SCANNING","value":"true"},{"name":"ROX_COMPLIANCE_OPERATOR_INTEGRATION","value":"true"},{"name":"ROX_CSV_EXPORT","value":"false"},{"name":"ROX_DECLARATIVE_CONFIGURATION","value":"false"},{"name":"ROX_INTEGRATIONS_AS_CONFIG","value":"false"},{"name":"ROX_NETPOL_FIELDS","value":"true"},{"name":"ROX_NETWORK_DETECTION_BASELINE_SIMULATION","value":"true"},{"name":"ROX_NETWORK_GRAPH_PATTERNFLY","value":"true"},{"name":"ROX_NODE_SCANNING_CACHE_TIME","value":"3h36m"},{"name":"ROX_NODE_SCANNING_INITIAL_BACKOFF","value":"30s"},{"name":"ROX_NODE_SCANNING_MAX_BACKOFF","value":"5m"},{"name":"ROX_PROCESSES_LISTENING_ON_PORT","value":"false"},{"name":"ROX_QUAY_ROBOT_ACCOUNTS","value":"true"},{"name":"ROX_ROXCTL_NETPOL_GENERATE","value":"true"},{"name":"ROX_SOURCED_AUTOGENERATED_INTEGRATIONS","value":"false"},{"name":"ROX_SYSLOG_EXTRA_FIELDS","value":"true"},{"name":"ROX_SYSTEM_HEALTH_PF","value":"false"},{"name":"ROX_VULN_MGMT_WORKLOAD_CVES","value":"false"}],"image":"registry.redhat.io/advanced-cluster-security/rhacs-scanner-slim-rhel8:4.8.4","imagePullPolicy":"IfNotPresent","name":"node-inventory","ports":[{"containerPort":8444,"name":"grpc","protocol":"TCP"}],"volumeMounts":[{"mountPath":"/host","name":"host-root-ro","readOnly":true},{"mountPath":"/tmp/","name":"tmp-volume"},{"mountPath":"/cache","name":"cache-volume"}]}]}}}}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.6. Central のロールバック リンクのコピーリンクがクリップボードにコピーされました!
新しいバージョンへのアップグレードが失敗した場合は、以前のバージョンの Central にロールバックできます。
3.6.1. Central を通常どおりロールバックする リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Advanced Cluster Security for Kubernetes のアップグレードが失敗した場合は、以前のバージョンの Central にロールバックできます。
前提条件
- 十分なディスク領域: ロールバックを実行する前に、永続ストレージ上に使用可能な空きディスク領域が必要です。Red Hat Advanced Cluster Security for Kubernetes が、ディスク領域を使用して、アップグレード中にデータベースのコピーを保持している。コピーを保存するためのディスク領域が不足しており、アップグレードが失敗した場合は、以前のバージョンへのロールバックを実行できません。
内部データベースのロールバック (4.8 以前): RHACS 4.8 から以前のバージョンにロールバックし、内部データベース (
central-db) を使用する場合は、まず PostgreSQL 13 バックアップからデータベースを復元する必要があります。-
データベースを復元するには、
central-dbコンポーネントのcentral-dbコンテナーとinit-dbコンテナーにRESTORE_BACKUP=trueおよびFORCE_OLD_BINARIES=true環境変数を追加します。 - 環境変数の注入の詳細は、「Central デプロイメントへの環境変数の注入」を参照してください。
-
データベースを復元するには、
手順
アップグレードが失敗した場合 (Central サービスが開始する前) に、次のコマンドを実行して前のバージョンにロールバックします。
oc -n stackrox rollout undo deploy/central
$ oc -n stackrox rollout undo deploy/central1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Kubernetes を使用する場合は、
ocの代わりにkubectlを入力します。
3.6.2. Central を強制的にロールバックする リンクのコピーリンクがクリップボードにコピーされました!
強制ロールバックを使用して、以前のバージョンの Central にロールバックできます (Central サービスの開始後)。
強制ロールバックを使用して以前のバージョンに戻すと、データと機能が失われる可能性があります。
前提条件
- 十分なディスク領域: ロールバックを実行する前に、永続ストレージ上に使用可能な空きディスク領域が必要です。Red Hat Advanced Cluster Security for Kubernetes が、ディスク領域を使用して、アップグレード中にデータベースのコピーを保持している。コピーを保存するためのディスク領域が不足しており、アップグレードが失敗した場合は、以前のバージョンへのロールバックを実行できません。
内部データベースのロールバック (4.8 以前): RHACS 4.8 から以前のバージョンにロールバックし、内部データベース (
central-db) を使用する場合は、まず PostgreSQL 13 バックアップからデータベースを復元する必要があります。-
データベースを復元するには、
central-dbコンポーネントのcentral-dbコンテナーとinit-dbコンテナーにRESTORE_BACKUP=trueおよびFORCE_OLD_BINARIES=true環境変数を追加します。 - 環境変数の注入の詳細は、「Central デプロイメントへの環境変数の注入」を参照してください。
-
データベースを復元するには、
手順
次のコマンドを実行して、強制ロールバックを実行します。
以前にインストールしたバージョンに強制的にロールバックするには、以下のコマンドを実行します。
oc -n stackrox rollout undo deploy/central
$ oc -n stackrox rollout undo deploy/central1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Kubernetes を使用する場合は、
ocの代わりにkubectlを入力します。
特定のバージョンに強制的にロールバックするには、以下を行います。
Central に属する
ConfigMapを編集します。oc -n stackrox edit configmap/central-config
$ oc -n stackrox edit configmap/central-config1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Kubernetes を使用する場合は、
ocの代わりにkubectlを入力します。
maintenance.forceRollbackVersionキーの値を更新します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- ロールバックするバージョンを指定します。
Central イメージのバージョンを更新します。
oc -n stackrox \ set image deploy/central central=registry.redhat.io/advanced-cluster-security/rhacs-main-rhel8:<x.x.x.x>
$ oc -n stackrox \1 set image deploy/central central=registry.redhat.io/advanced-cluster-security/rhacs-main-rhel8:<x.x.x.x>2 Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.7. アップグレードの確認 リンクのコピーリンクがクリップボードにコピーされました!
更新された Sensor と Collector は、それぞれのセキュアクラスターからの最新データを引き続き報告します。
Sensor が Central に最後に接続した時刻は、RHACS ポータルに表示されます。
手順
- RHACS ポータルで、Platform Configuration → System Health に移動します。
- Sensor Upgrade で、Central で最新のクラスターが表示されることを確認してください。
3.8. API トークンの取り消し リンクのコピーリンクがクリップボードにコピーされました!
セキュリティー上の理由から、Red Hat では、Central データベースのバックアップを完了するために使用した API トークンを取り消すことが推奨されます。
前提条件
- アップグレード後、RHACS ポータルページをリロードし、証明書を再承認して、RHACS ポータルを引き続き使用している。
手順
- RHACS ポータルで、Platform Configuration → Integrations に移動します。
- Authentication Tokens カテゴリーまで下にスクロールし、API Token をクリックします。
- 取り消すトークン名の前にあるチェックボックスを選択します。
- Revoke をクリックします。
- 確認ダイアログボックスで、Confirm をクリックします。
3.9. クラスターアップグレーダのトラブルシューティング リンクのコピーリンクがクリップボードにコピーされました!
セキュアクラスターの従来のインストール方法を使用し、自動更新を有効にするときに問題が発生した場合は、問題のトラブルシューティングを試すことができます。アップグレーダーが失敗すると、クラスタービューに次のエラーが表示されます。
3.9.1. アップグレーダーに権限が足りない リンクのコピーリンクがクリップボードにコピーされました!
現象
クラスターページに次のエラーが表示されます。
Upgrader failed to execute PreflightStage of the roll-forward workflow: executing stage "Run preflight checks": preflight check "Kubernetes authorization" reported errors. This usually means that access is denied. Have you configured this Secured Cluster for automatically receiving upgrades?"
Upgrader failed to execute PreflightStage of the roll-forward workflow: executing stage "Run preflight checks": preflight check "Kubernetes authorization" reported errors. This usually means that access is denied. Have you configured this Secured Cluster for automatically receiving upgrades?"
手順
- Download YAML file and keys をクリックする前に、セキュアクラスターのバンドルが今後のアップグレードを有効にした状態で生成されていることを確認してください。
- 可能であれば、そのセキュアクラスターを削除し、今後のアップグレードが有効になるように新しいバンドルを生成してください。
クラスターを再作成できない場合は、次のアクションを実行できます。
-
サービスアカウント
sensor-upgraderが Sensor と同じ namespace に存在することを確認します。 -
cluster-adminClusterRole をsensors-upgraderサービスアカウントに付与する ClusterRoleBinding (デフォルト名:<namespace>:upgrade-sensors) が存在することを確認します。
-
サービスアカウント
3.9.2. イメージがないため、アップグレーダーを開始できない リンクのコピーリンクがクリップボードにコピーされました!
現象
クラスターページに次のエラーが表示されます。
"Upgrade initialization error: The upgrader pods have trouble pulling the new image: Error pulling image: (...) (<image_reference:tag>: not found)"
"Upgrade initialization error: The upgrader pods have trouble pulling the new image: Error pulling image: (...) (<image_reference:tag>: not found)"
手順
-
セキュアクラスターがレジストリーにアクセスし、イメージ
<image_reference:tag>をプルできることを確認します。 - セキュアクラスターでイメージプルシークレットが正しく設定されていることを確認します。
3.9.3. 不明な理由によりアップグレーダーを起動できない リンクのコピーリンクがクリップボードにコピーされました!
現象
クラスターページに次のエラーが表示されます。
"Upgrade initialization error: Pod terminated: (Error)"
"Upgrade initialization error: Pod terminated: (Error)"
手順
- アップグレーダーに、クラスターオブジェクトにアクセスする権限があることを確認します。詳細は、「Upgrader is missing permissions」を参照してください。
- 詳細は、アップグレーダーログを確認してください。
3.9.3.1. アップグレーダーログの取得 リンクのコピーリンクがクリップボードにコピーされました!
次のコマンドを実行するとログにアクセスできます。
kubectl -n <namespace> logs deploy/sensor-upgrader
$ kubectl -n <namespace> logs deploy/sensor-upgrader
- 1
<namespace>には、Sensor が実行されている namespace を指定します。
通常、アップグレーダーのデプロイメントは、アップグレードの実行中にクラスター内で短時間のみ実行されます。これは後で削除されるため、適切なタイミングでオーケストレーター CLI を使用してログにアクセスする必要があります。