ポッド・セキュリティーのアップグレードの前提条件が原因でクラスターのアップグレードが失敗するのはなぜですか?
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 で削除され、新しいポッド・セキュリティー・アドミッション・コントローラーに置き換えられました。
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 からポッド・セキュリティー・アドミッションへのマイグレーション 」ガイドを参照してください。
ポッド・セキュリティー・アドミッションにマイグレーションする準備ができていない場合は、クラスター・マスターのリフレッシュを実行して状況メッセージをクリアできます。
ポッド・セキュリティー・アドミッションのアップグレードの前提条件アクションを既に実行している場合、エラー・メッセージには、対処する必要がある IBM Cloud Kubernetes Service 定義済みリソースに対するアクションの欠落または予期しない変更が示されます。 表示されているメッセージに基づいて、以下の手順を実行します。
取得できませんでした。 PodSecurityPolicies
- PSPを入手するためのコマンドを実行します。
kubectl get podsecuritypolicies
- エラーがない場合は、クラスター・マスターのアップグレードを再試行してください。
IBM PodSecurityPolicy
以外が見つかりました
削除する必要がある追加の PSP があります。
クラスターをバージョン 1.25にアップグレードする前に、以下の PSP のみが存在することを確認してください。
ibm-privileged-psp
ibm-anyuid-psp
ibm-anyuid-hostpath-psp
ibm-anyuid-hostaccess-psp
ibm-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-user
NotFound
エラーが発生した場合は、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