Resize_pvc

Resize PVC dans kubernetes

Dans le cas où un PVC est plein, et que celui-ci n’est pas géré par un operator (CNPG, Victoria Metrics…), il est nécessaire d’appliquer ce mode opératoire pour augmenter la taille du PVC. En effet, la taille est un élément immuable dans le Statefulset.

Prérequis

  • Accès au cluster kubernetes concerné (kubectl, k9s, lens…) et PIM Azure

Mode opératoire

Désactiver la synchonisation automatique

Pour pouvoir manipuler les objets kubernetes à notre guise pendant l’opération, il faut désactiver la synchronisation automatique d’ArgoCD.

ApplicationSet

Dans l’applicationSet, passer les valeurs de selfHeal et prune à false.

syncPolicy:
  managedNamespaceMetadata:
    labels:
  syncOptions:
    - RespectIgnoreDifferences=true
    - CreateNamespace=true
  automated:
    selfHeal: false
    prune: false

Une fois cette modification faite, pousser et merge cette modification pour que le paramètre soit pris en compte.

WebUI

Depuis l’interface web d’ArgoCD, dans l’application, une fois les modifications prises en compte, cliquer sur Details puis sur DISABLE AUTO-SYNC dans la partie “Sync Policy”.

Edition du PVC

Maintenant que la synchro auto est désactivée, on peut éditer les objets kubernetes.

Exemple avec kubectl :

Lister les PVC dans le namespace :

kubectl --context $context --namespace $namespace get pvc
kubectl --context $context --namespace $namespace edit pvc $nom_du_pvc

Le manifest “runtime” du PVC va s’ouvrir dans l’éditeur par défaut.
Changer la valeur souhaitée. Exemple :

spec:
  resources:
    requests:
      storage: 1Gi

Ou en une ligne : kubectl --context $CONTEXT -n $NAMESPACE patch pvc $PVC_NAME -p '{"spec": {"resources": {"requests": {"storage":"$NEW_STO"}}}}'

Suppression du StatefulSet

Pour que le changement de valeur soit pris en compte, il faut supprimer le StatefulSet duquel le PVC dépend sans supprimer les pods et PVC associés.

kubectl --context $context --namespace $namespace delete sts $nom_du_sts --cascade=orphan

Attention Il est très important d’indiquer l’argument --cascade=orphan. Auquel cas, les pods et PVC liés au STS seront supprimés.

Modification des valeurs sur gitlab

Ajustez les valeurs correspondantes à la capacité de votre PVC.

Réactivation de la synchronisation

Remettre les valeurs de selfHeal et prune à true dans l’applicationSet.

Pousser les modifications et synchroniser l’application dans ArgoCD.

Les valeurs de l’objet dans kubernetes et dans gitlab correspondent.