Pourquoi la mise à niveau de mon cluster échoue-t-elle en raison des prérequis de mise à niveau de la sécurité de pod?
Lorsque vous mettez à niveau IBM Cloud Kubernetes Service de Kubernetes version 1.24 vers la version 1.25, la mise à niveau échoue et un message d'erreur similaire à l'exemple suivant s'affiche.
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'
Le contrôleur d'admission Kubernetes PodSecurityPolicy
a été retiré dans Kubernetes 1.25 et remplacé par un nouveau contrôleur d'admission de sécurité de pod.
Pour mettre à niveau en toute sécurité les clusters IBM Cloud Kubernetes Service de la version 1.24 vers la version 1.25, le cluster PodSecurityPolicies
(PSP) et le contrôle d'accès basé sur les rôles associé doivent satisfaire les
prérequis suivants.
- Aucun PSP au-delà des 5 IBM Cloud PSP définis ne peut exister.
- Les liaisons de rôle de cluster définies par IBM Cloud qui donnent à tous les utilisateurs et aux comptes de service le droit d'utiliser les ASP privilégiés et restreints définis par IBM Cloud doivent exister.
Ces prérequis garantissent que la configuration de la version 1.24 PodSecurityPolicy
du cluster est équivalente à la configuration de la version 1.25 de Pod Security Admission et que la mise à niveau et le basculement vers Pod Security
Admission n'interrompent pas les applications existantes. Notez que ces prérequis n'empêchent pas l'utilisation de fournisseurs de sécurité de pod tiers.
Avant de commencer
- Passez en revue les informations de version1.25 et les actions de mise à jour.
- Consultez le guide Migrating from PSPs to Pod Security Admission.
Si vous n'êtes pas prêt à migrer vers Pod Security Admission, vous pouvez effacer le message de statut en effectuant une actualisation du maître cluster.
Si vous avez déjà effectué les actions prérequises pour la mise à niveau de Pod Security Admission, le message d'erreur indique une action que vous avez peut-être manquée ou une modification inattendue des ressources définies par IBM Cloud Kubernetes Service que vous devez traiter. Procédez comme suit en fonction du message que vous voyez.
Impossible d'obtenir PodSecurityPolicies
- Exécutez la commande suivante pour obtenir vos PSP.
kubectl get podsecuritypolicies
- S'il n'y a pas d'erreur, essayez à nouveau de mettre à niveau le maître cluster.
Trouvé non-IBM PodSecurityPolicy
Il existe d'autres prestataires de services de paiement qui doivent être supprimés.
Avant de mettre à niveau votre cluster vers la version 1.25, vérifiez que seuls les PSP suivants existent.
ibm-privileged-psp
ibm-anyuid-psp
ibm-anyuid-hostpath-psp
ibm-anyuid-hostaccess-psp
ibm-restricted-psp
-
Répertoriez vos PSP.
kubectl get podsecuritypolicies
-
Si l' PodSecurityPolicy s supplémentaires ne sont plus utilisées, supprimez-les. S'il existe des politiques de sécurité de pod supplémentaires, consultez le guide de migration.
kubectl delete podsecuritypolicies PSP
-
Relancez la mise à niveau du cluster.
Impossible d'obtenir l' ClusterRoleBinding privilégié-psp-utilisateur
Ce message indique que la liaison de rôle de cluster privileged-psp-user
n'existe pas ou qu'une autre erreur a empêché l'opération de mise à niveau de lire la ressource.
ClusterRoleBinding privileged-psp-user
n'a pas roleRef
Cette erreur indique une modification inattendue et que la liaison de rôle de cluster fait référence à un rôle de cluster incorrect.
ClusterRoleBinding privileged-psp-user n'a pas les sujets attendus
Si cette modification était intentionnelle, vous devez d'abord déterminer si vos applications peuvent s'exécuter avec la liaison de rôle de cluster. S'ils le peuvent, créez ou mettez à jour la liaison de rôle de cluster restreinte-psp-user.
Impossible d'obtenir ClusterRoleBinding restricted-psp-user
Ce message indique que la liaison de rôle de cluster restricted-psp-user
n'existe pas ou qu'une autre erreur a empêché l'opération de mise à niveau de lire la ressource.
- Obtenez les détails de la liaison de rôle de cluster
restricted-psp-user
.kubectl get clusterrolebindings restricted-psp-user
- Si vous obtenez une erreur
NotFound
, créez ou mettez à jour la liaison de rôle de cluster restricted-psp-user.
ClusterRoleBinding restricted-psp-user
n'a pas roleRef
Cette erreur indique qu'il s'agit d'une modification inattendue et que la liaison de rôle de cluster fait référence à un rôle de cluster incorrect.
Effectuez les étapes suivantes pour modifier l' roleRef
.
- Supprimer la liaison de rôle de cluster.
kubectl delete clusterrolebinding restricted-psp-user
- Créez ou mettez à jour la liaison de rôle de cluster restreinte-psp-user.
ClusterRoleBinding restricted-psp-user n'a pas de sujets attendus
Si cette modification était intentionnelle, vous devez d'abord déterminer si les applications peuvent s'exécuter correctement avec la liaison de rôle de cluster.
Ensuite, créez ou mettez à jour la liaison de rôle de cluster restreinte-psp-user.
Création ou mise à jour de l' privileged-psp-user
ClusterRoleBinding
Créez ou mettez à jour la liaison de rôle de cluster privileged-psp-user
en exécutant la commande suivante.
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
Création de la liaison de rôle de cluster restricted-psp-user
Créez ou mettez à jour l' restricted-psp-user
ClusterRoleBinding en exécutant la commande suivante.
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