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.7.0 1
- 1
- Kubernetes を使用する場合は、
oc
の代わりにkubectl
を入力します。
Compliance イメージを更新します。
$ oc -n stackrox set image ds/collector compliance=registry.redhat.io/advanced-cluster-security/rhacs-main-rhel8:4.7.0 1
- 1
- Kubernetes を使用する場合は、
oc
の代わりにkubectl
を入力します。
Collector イメージを更新します。
$ oc -n stackrox set image ds/collector collector=registry.redhat.io/advanced-cluster-security/rhacs-collector-rhel8:4.7.0 1
- 1
- Kubernetes を使用する場合は、
oc
の代わりにkubectl
を入力します。
アドミッションコントロールイメージを更新します。
$ oc -n stackrox set image deploy/admission-control admission-control=registry.redhat.io/advanced-cluster-security/rhacs-main-rhel8:4.7.0
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"}}}}]'
次のコマンドを実行して、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"}}}}]'
次のステップ
関連情報
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:'
出力例
Name: admission-control-6f4dcc6b4c-2phwd openshift.io/scc: stackrox-admission-control #... Name: central-575487bfcb-sjdx8 openshift.io/scc: stackrox-central Name: central-db-7c7885bb-6bgbd openshift.io/scc: stackrox-central-db Name: collector-56nkr openshift.io/scc: stackrox-collector #... Name: scanner-68fc55b599-f2wm6 openshift.io/scc: stackrox-scanner Name: scanner-68fc55b599-fztlh #... Name: sensor-84545f86b7-xgdwf openshift.io/scc: stackrox-sensor #...
この例では、各 Pod に独自のカスタム SCC があり、
openshift.io/scc
フィールドで指定されていることがわかります。RHACS のカスタム SCC の代わりに Red Hat OpenShift SCC を使用するには、必要なロールとロールバインディングを追加します。
Central クラスターで Red Hat OpenShift SCC を使用するために必要なロールとロールバインディングを追加するには、次の手順を実行します。
次の内容を使用して、ロールリソースとロールバインディングリソースを定義する
update-central.yaml
という名前のファイルを作成します。例3.1 サンプル YAML ファイル
apiVersion: rbac.authorization.k8s.io/v1 kind: Role 1 metadata: annotations: email: support@stackrox.com owner: stackrox labels: app.kubernetes.io/component: central app.kubernetes.io/instance: stackrox-central-services app.kubernetes.io/name: stackrox app.kubernetes.io/part-of: stackrox-central-services app.kubernetes.io/version: 4.4.0 name: use-central-db-scc 2 namespace: stackrox 3 Rules: 4 - apiGroups: - security.openshift.io resourceNames: - nonroot-v2 resources: - securitycontextconstraints verbs: - use - - - apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: annotations: email: support@stackrox.com owner: stackrox labels: app.kubernetes.io/component: central app.kubernetes.io/instance: stackrox-central-services app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: stackrox app.kubernetes.io/part-of: stackrox-central-services app.kubernetes.io/version: 4.4.0 name: use-central-scc namespace: stackrox rules: - apiGroups: - security.openshift.io resourceNames: - nonroot-v2 resources: - securitycontextconstraints verbs: - use - - - apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: annotations: email: support@stackrox.com owner: stackrox labels: app.kubernetes.io/component: scanner app.kubernetes.io/instance: stackrox-central-services app.kubernetes.io/name: stackrox app.kubernetes.io/part-of: stackrox-central-services app.kubernetes.io/version: 4.4.0 name: use-scanner-scc namespace: stackrox rules: - apiGroups: - security.openshift.io resourceNames: - nonroot-v2 resources: - securitycontextconstraints verbs: - use - - - apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding 5 metadata: annotations: email: support@stackrox.com owner: stackrox labels: app.kubernetes.io/component: central app.kubernetes.io/instance: stackrox-central-services app.kubernetes.io/name: stackrox app.k ubernetes.io/part-of: stackrox-central-services app.kubernetes.io/version: 4.4.0 name: central-db-use-scc 6 namespace: stackrox roleRef: 7 apiGroup: rbac.authorization.k8s.io kind: Role name: use-central-db-scc subjects: 8 - kind: ServiceAccount name: central-db namespace: stackrox - - - apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: annotations: email: support@stackrox.com owner: stackrox labels: app.kubernetes.io/component: central app.kubernetes.io/instance: stackrox-central-services app.kubernetes.io/name: stackrox app.kubernetes.io/part-of: stackrox-central-services app.kubernetes.io/version: 4.4.0 name: central-use-scc namespace: stackrox roleRef: apiGroup: rbac.authorization.k8s.io kind: Role name: use-central-scc subjects: - kind: ServiceAccount name: central namespace: stackrox - - - apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: annotations: email: support@stackrox.com owner: stackrox labels: app.kubernetes.io/component: scanner app.kubernetes.io/instance: stackrox-central-services app.kubernetes.io/name: stackrox app.kubernetes.io/part-of: stackrox-central-services app.kubernetes.io/version: 4.4.0 name: scanner-use-scc namespace: stackrox roleRef: apiGroup: rbac.authorization.k8s.io kind: Role name: use-scanner-scc subjects: - kind: ServiceAccount name: scanner namespace: stackrox - - -
次のコマンドを実行して、
update-central.yaml
ファイルで指定したロールリソースとロールバインディングリソースを作成します。$ oc -n stackrox create -f ./update-central.yaml
すべてのセキュアクラスターで Red Hat OpenShift SCC を使用するために必要なロールとロールバインディングを追加するには、次の手順を実行します。
次の内容を使用して、ロールリソースとロールバインディングリソースを定義する
upgrade-scs.yaml
という名前のファイルを作成します。例3.2 サンプル YAML ファイル
apiVersion: rbac.authorization.k8s.io/v1 kind: Role 1 metadata: annotations: email: support@stackrox.com owner: stackrox labels: app.kubernetes.io/component: collector app.kubernetes.io/instance: stackrox-secured-cluster-services app.kubernetes.io/name: stackrox app.kubernetes.io/part-of: stackrox-secured-cluster-services app.kubernetes.io/version: 4.4.0 auto-upgrade.stackrox.io/component: sensor name: use-privileged-scc 2 namespace: stackrox 3 rules: 4 - apiGroups: - security.openshift.io resourceNames: - privileged resources: - securitycontextconstraints verbs: - use - - - apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding 5 metadata: annotations: email: support@stackrox.com owner: stackrox labels: app.kubernetes.io/component: collector app.kubernetes.io/instance: stackrox-secured-cluster-services app.kubernetes.io/name: stackrox app.kubernetes.io/part-of: stackrox-secured-cluster-services app.kubernetes.io/version: 4.4.0 auto-upgrade.stackrox.io/component: sensor name: collector-use-scc 6 namespace: stackrox roleRef: 7 apiGroup: rbac.authorization.k8s.io kind: Role name: use-privileged-scc subjects: 8 - kind: ServiceAccount name: collector namespace: stackrox - - -
次のコマンドを実行して、
upgrade-scs.yaml
ファイルで指定したロールリソースとロールバインディングリソースを作成します。$ oc -n stackrox create -f ./update-scs.yaml
重要upgrade-scs.yaml
ファイルで指定したロールとロールバインディングを作成するには、各セキュアクラスターでこのコマンドを実行する必要があります。
RHACS に固有の SCC を削除します。
Central クラスターに固有の SCC を削除するには、次のコマンドを実行します。
$ oc delete scc/stackrox-central scc/stackrox-central-db scc/stackrox-scanner
すべてのセキュアクラスターに固有の SCC を削除するには、次のコマンドを実行します。
$ oc delete scc/stackrox-admission-control scc/stackrox-collector scc/stackrox-sensor
重要各セキュアクラスターに固有の SCC を削除するには、各セキュアクラスターでこのコマンドを実行する必要があります。
検証
次のコマンドを実行して、すべての Pod が正しい SCC を使用していることを確認します。
$ oc -n stackrox describe pods | grep 'openshift.io/scc\|^Name:'
出力を次の表と比較してください。
コンポーネント 以前のカスタム SCC Red Hat OpenShift 4 の新しい SCC Central
stackrox-central
nonroot-v2
Central-db
stackrox-central-db
nonroot-v2
Scanner
stackrox-scanner
nonroot-v2
Scanner-db
stackrox-scanner
nonroot-v2
Admission Controller
stackrox-admission-control
restricted-v2
Collector
stackrox-collector
privileged
Sensor
stackrox-sensor
restricted-v2
3.4.3.1. Sensor デプロイメントの GOMEMLIMIT 環境変数の編集
バージョン 4.4 にアップグレードするには、GOMEMLIMIT
環境変数を ROX_MEMLIMIT
環境変数に手動で置き換える必要があります。この変数はデプロイメントごとに編集する必要があります。
手順
次のコマンドを実行して、Sensor デプロイメントの変数を編集します。
$ oc -n stackrox edit deploy/sensor 1
- 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 1
- 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 1
- 1
- Kubernetes を使用する場合は、
oc
の代わりにkubectl
を入力します。
-
GOMEMLIMIT
変数をROX_MEMLIMIT
に置き換えます。 - ファイルを保存します。
3.4.3.4. セキュアクラスターのアップグレードの確認
セキュアクラスターをアップグレードしたら、更新された Pod が機能していることを確認します。