ポッド・セキュリティーのアップグレードの前提条件が原因でクラスターのアップグレードが失敗するのはなぜですか?
IBM Cloud Kubernetes Service を、 Kubernetes のバージョン 1.24 からバージョン 1.25 にアップグレードしようとすると、アップグレードが失敗し、次のようなエラーメッセージが表示されます。
Version update canceled. CAE009: Cannot complete cluster master operations because the cluster does not pass Pod Security upgrade prerequisites. Reason: [ClusterRoleBinding 'restricted-psp-user' does not have expected subjects]. For more information, see the troubleshooting docs: 'https://ibm.biz/master_pod_security_upgrade_iks_125'
Kubernetes PodSecurityPolicy のアドミッションコントローラーは、 Kubernetes 1.25 で削除され、新しいPod Securityアドミッションコントローラーに置き換えられました。
IBM Cloud Kubernetes Service クラスターをバージョン 1.24 からバージョン 1.25に安全にアップグレードするには、クラスター PodSecurityPolicies (PSP) および関連する役割ベースのアクセス制御が以下の前提条件を満たしている必要があります。
- 5 つの IBM Cloud 定義済み PSP を超える PSP は存在できません。
- すべてのユーザーおよびサービス・アカウントに IBM Cloud 定義済み特権および制限付き PSP を使用する権限を付与する IBM Cloud 定義済みクラスター役割バインディング。
これらの前提条件により、クラスターのバージョン 1.24 PodSecurityPolicy 構成がバージョン 1.25 ポッド・セキュリティー・アドミッション構成と同等であり、ポッド・セキュリティー・アドミッションへのアップグレードおよび切り替えによって既存のアプリケーションが中断されないことが保証されます。 これらの前提条件は、サード・パーティーのポッド・セキュリティー・プロバイダーの使用を妨げるものではないことに注意してください。
開始前に
- 「 1.25 」のバージョン情報と更新手順を確認してください(このバージョンはアーカイブ済みです)。
- 「 PSPs からポッド・セキュリティー・アドミッションへのマイグレーション 」ガイドを参照してください。
ポッド・セキュリティー・アドミッションにマイグレーションする準備ができていない場合は、クラスター・マスターのリフレッシュを実行して状況メッセージをクリアできます。
すでに「Pod Security Admission」のアップグレードに必要な前提条件の作業を完了している場合、このエラーメッセージは、見落としている可能性がある作業、または IBM Cloud Kubernetes Service で定義されたリソースに予期せぬ変更が生じており、それに対処する必要があることを示しています。 表示されているメッセージに基づいて、以下の手順を実行します。
取得できませんでした PodSecurityPolicies
- PSPを取得するには、次のコマンドを実行してください。
kubectl get podsecuritypolicies - エラーがない場合は、クラスター・マスターのアップグレードを再試行してください。
IBM PodSecurityPolicy 以外が見つかりました
削除する必要がある追加の PSP があります。
クラスターをバージョン 1.25にアップグレードする前に、以下の PSP のみが存在することを確認してください。
ibm-privileged-pspibm-anyuid-pspibm-anyuid-hostpath-pspibm-anyuid-hostaccess-pspibm-restricted-psp
-
PSP をリストします。
kubectl get podsecuritypolicies -
追加の PodSecurityPolicy が使用されていない場合は、削除してください。 追加のポッド・セキュリティー・ポリシーがある場合は、 マイグレーション・ガイドを確認 してください。
kubectl delete podsecuritypolicies PSP -
クラスターのアップグレードを再試行します。
ClusterRoleBinding 特権PSPユーザーを取得できませんでした
このメッセージは、 privileged-psp-user クラスター役割バインディングが存在しないか、他の何らかのエラーによりアップグレード操作でリソースを読み取ることができなかったことを示します。
- リソースをリストします。
kubectl get clusterrolebindings privileged-psp-user NotFoundエラーが発生した場合は、privileged-psp-userクラスター役割バインディング を作成または更新します。
ClusterRoleBinding privileged-psp-user 期待通りの結果にならない roleRef
このエラーは、予期しない変更を示し、クラスター役割バインディングが誤ったクラスター役割を参照していることを示します。
-
クラスタ・ロールのバインディングを削除します。
kubectl delete clusterrolebinding privileged-psp-user -
privileged-psp-userクラスター役割バインディング を作成します。
ClusterRoleBinding privileged-psp-userは期待される対象を持っていません
この変更が意図的なものであった場合は、まず、 クラスター役割バインディング を使用してアプリを実行できるかどうかを判別する必要があります。 可能な場合は、restricted-psp-user クラスター役割バインディング を作成または更新します。
ClusterRoleBinding を取得できませんでした。 restricted-psp-user
このメッセージは、 restricted-psp-user クラスター役割バインディングが存在しないか、その他の何らかのエラーが原因でアップグレード操作がリソースを読み取れなかったことを示します。
restricted-psp-userクラスター役割バインディングの詳細を取得します。kubectl get clusterrolebindings restricted-psp-userNotFoundエラーが発生した場合は、restricted-psp-user クラスター役割バインディング を作成または更新します。
ClusterRoleBinding restricted-psp-user 期待通りの結果にならない roleRef
このエラーは、予期しない変更であり、クラスター役割バインディングが誤ったクラスター役割を参照していることを示します。
roleRef を変更するには、以下の手順に従ってください。
- クラスタ・ロールのバインディングを削除します。
kubectl delete clusterrolebinding restricted-psp-user - restricted-psp-user クラスター役割バインディング を作成または更新します。
ClusterRoleBinding restricted-psp-userは期待されるサブジェクトを持っていません
この変更が意図的なものであった場合は、まず、 クラスター役割バインディング を使用してアプリケーションを適切に実行できるかどうかを判別する必要があります。
次に、restricted-psp-user クラスター役割バインディング を作成または更新します。
privileged-psp-user の作成または更新 ClusterRoleBinding
以下のコマンドを実行して、 privileged-psp-user クラスター役割バインディングを作成または更新します。
kubectl apply -f - <<EOF
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: privileged-psp-user
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: ibm-privileged-psp-user
subjects:
- apiGroup: rbac.authorization.k8s.io
kind: Group
name: system:masters
- apiGroup: rbac.authorization.k8s.io
kind: Group
name: system:nodes
- apiGroup: rbac.authorization.k8s.io
kind: Group
name: system:serviceaccounts
- apiGroup: rbac.authorization.k8s.io
kind: Group
name: system:authenticated
EOF
restricted-psp-user クラスター役割バインディングの作成
restricted-psp-user ClusterRoleBinding を新規作成または更新するには、以下のコマンドを実行してください。
kubectl apply -f - <<EOF
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: restricted-psp-user
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: ibm-restricted-psp-user
subjects:
- apiGroup: rbac.authorization.k8s.io
kind: Group
name: system:masters
- apiGroup: rbac.authorization.k8s.io
kind: Group
name: system:nodes
- apiGroup: rbac.authorization.k8s.io
kind: Group
name: system:serviceaccounts
- apiGroup: rbac.authorization.k8s.io
kind: Group
name: system:authenticated
EOF