IBM Cloud Docs
Pourquoi la mise à niveau de mon cluster échoue-t-elle en raison des prérequis de mise à niveau de la sécurité de pod?

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

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

  1. Exécutez la commande suivante pour obtenir vos PSP.
    kubectl get podsecuritypolicies
    
  2. 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
  1. Répertoriez vos PSP.

    kubectl get podsecuritypolicies
    
  2. 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
    
  3. 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.

  1. Répertoriez la ressource.
    kubectl get clusterrolebindings privileged-psp-user
    
  2. Si vous obtenez une erreur NotFound, créez ou mettez à jour la privileged-psp-user liaison de rôle de cluster .

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.

  1. Supprimer la liaison de rôle de cluster.

    kubectl delete clusterrolebinding privileged-psp-user
    
  2. Créez la privileged-psp-user liaison de rôle de cluster .

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.

  1. Obtenez les détails de la liaison de rôle de cluster restricted-psp-user.
    kubectl get clusterrolebindings restricted-psp-user
    
  2. 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.

  1. Supprimer la liaison de rôle de cluster.
    kubectl delete clusterrolebinding restricted-psp-user
    
  2. 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