Je recherche un moyen d'exporter un fichier yaml à partir d'un composant déployé mais sans les informations spécifiques au cluster.
kubectl get MYOBJECT --export -o yaml > my.yaml
mais comme "export" est désormais obsolète (depuis la version 1.14 et devrait normalement disparaître en 1.18 (je ne l'ai pas trouvé dans le changelog), quelle serait une alternative?
Merci
6 Réponses :
Il n'y a pas de moyen cohérent de le faire car il n'y a pas de directives générales sur les valeurs par défaut et autres nettoyages de données en direct. C'est pourquoi il est obsolète. Vous devez conserver vos fichiers source dans git ou similaire.
Actuellement, la seule option est de faire -o yaml
ou -o json
et de supprimer les champs inutiles
En effet, faire kubectl get MYOBJECT -o yaml > my.yaml
au lieu de kubectl get MYOBJECT --export -o yaml > my.yaml
semble produire presque le même résultat à l'exception de quelques champs supplémentaires qui ne devraient pas faire de mal.
L'utilisation de JQ fait l'affaire.
kubectl get secret <secretname> -ojson --export
produit exactement le même JSON que
kubectl get secret <secretname> -ojson | jq 'del(.metadata.namespace,.metadata.resourceVersion,.metadata.uid) | .metadata.creationTimestamp=null'
Si vous souhaitez utiliser l'entrée / sortie YAML, vous pouvez utiliser yq .
Cela a fait l'affaire pour moi, ajoutez ou supprimez des filtres selon vos besoins:
kubectl get secret "my_secret" -n "my_namespace" --context "my_context" -o yaml \ | yq d - 'metadata.resourceVersion' \ | yq d - 'metadata.uid' \ | yq d - 'metadata.annotations' \ | yq d - 'metadata.creationTimestamp' \ | yq d - 'metadata.selfLink'
pourrait tout aussi bien supprimer toutes les métadonnées et écrire une nouvelle valeur
ajoutez cette ligne: `` `| yq d - 'metadata.managedFields' `` ``
Une autre option consiste à utiliser le champ d'annotation kubectl.kubernetes.io/last-applied-configuration
qui contient la configuration appliquée initiale de la ressource sans champs auto-générés.
Exemple:
kubectl get <resource kind> <resource name> -o yaml | \ yq r - 'metadata.annotations."kubectl.kubernetes.io/last-applied-configuration"'
Sur la base de l'entrée ci-dessus, j'ai créé un court-métrage sur notre projet fubectl: https://github.com/kubermatic/fubectl/pull/58
j'espère que cela aide aussi les autres:
kget-ex RESOURCE > export.yaml