Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix/ handle long pvc names #248

Merged
merged 11 commits into from
Apr 22, 2024
Merged

Conversation

clementnuss
Copy link
Contributor

  • instead of putting the original PVC name into a label, we write it to an
    annotation
  • also, PVC name are no longer truncated at 63 chars, as they can be up to 253
    long (DNS name)
  • finally, instead the migration's pod name is prefixed with migrate- and
    truncated to a max total length of 63 chars (as pod name should typically
    not be longer than 63 chars)

closes #155 #171

@clementnuss clementnuss requested a review from laverya as a code owner March 22, 2024 14:22
@clementnuss
Copy link
Contributor Author

also, I noticed that the baseAnnotation=sourcePvcName isn't actually used when swapping off the PVCs after migration.
please let me know if I missed the usage for this annotation, but I think we can change it from a label to an annotation without trouble.

also, here's a log of a migration for a PVC with a 253 chars long name:

pvmigrate_log.txt
./pvmigrate -source-sc nfs -dest-sc nfs -skip-preflight-validation -namespace=cjmnuss
Running pvmigrate build:
version=(devel)
sha=
time=

Found 1 StorageClass:
nfs

Migrating data from nfs to nfs
PV pvc-641fbe2b-3e2a-49ba-a58b-06090f6e1c3b does not match source SC nfs, not migrating

Found 1 matching PVCs to migrate across 1 namespaces:
namespace: pvc:                                                                                                                                                                                                                                                          pv:                                      size:
cjmnuss    super-long-pvc-253-chars-longlonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonnglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglong-pvcmigrate pvc-2e452efe-9733-4f56-8861-9fecc9f9038d 1Gi
cjmnuss    super-long-pvc-253-chars-longlonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglong pvc-ead5ef1d-5b07-4152-8e63-b3469f8ab042 1Gi

Creating new PVCs to migrate data to using the nfs StorageClass
created new PVC super-long-pvc-253-chars-longlonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglononglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglong-pvcmigrate-pvcmigrate with size 1Gi in cjmnuss
found existing PVC with name super-long-pvc-253-chars-longlonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonnglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglong-pvcmigrate, not creating new one

Found 1 matching pods to migrate across 1 namespaces:
namespace: pod:
cjmnuss    test-deploy-attached-to-super-long-pvc-with-a-name-63-charv547h

Scaling down StatefulSets and Deployments with matching PVCs
scaling Deployment test-deploy-attached-to-super-long-pvc-with-a-name-63-char-long-659898f79f from 1 to 0 in cjmnuss

Waiting for pods with mounted PVCs to be cleaned up
Found pod test-deploy-attached-to-super-long-pvc-with-a-name-63-charv547h in cjmnuss mounting to-be-migrated PVC super-long-pvc-253-chars-longlonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglong, waiting
All pods removed successfully

Copying data from nfs PVCs to nfs PVCs
Copying data from super-long-pvc-253-chars-longlonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonnglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglong-pvcmigrate (pvc-2e452efe-9733-4f56-8861-9fecc9f9038d) to super-long-pvc-253-chars-longlonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglononglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglong-pvcmigrate-pvcmigrate in cjmnuss
Determining the node to migrate PVC super-long-pvc-253-chars-longlonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonnglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglong-pvcmigrate on
Creating pvc migrator pod on node
waiting for pod migrate--super-long-pvc-253-chaglonglonglonglonglong-pvcmigrate to start in cjmnuss
migrating PVC super-long-pvc-253-chars-longlonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonnglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglong-pvcmigrate:
.done!
finished migrating PVC super-long-pvc-253-chars-longlonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonnglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglong-pvcmigrate
Copying data from super-long-pvc-253-chars-longlonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglong (pvc-ead5ef1d-5b07-4152-8e63-b3469f8ab042) to super-long-pvc-253-chars-longlonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonnglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglong-pvcmigrate in cjmnuss
Determining the node to migrate PVC super-long-pvc-253-chars-longlonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglong on
Creating pvc migrator pod on node abcd.domain.ch
waiting for pod migrate--super-long-pvc-253-chalonglonglonglonglonglonglonglong to start in cjmnuss
migrating PVC super-long-pvc-253-chars-longlonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglong:
..done!
finished migrating PVC super-long-pvc-253-chars-longlonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglong

Swapping PVC super-long-pvc-253-chars-longlonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonnglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglong-pvcmigrate in cjmnuss to the new StorageClass
Marking original PV pvc-2e452efe-9733-4f56-8861-9fecc9f9038d as to-be-retained
Marking migrated-to PV pvc-3e2be7e1-fa9b-4d32-90f5-5a553a5104bb as to-be-retained
Deleting original PVC super-long-pvc-253-chars-longlonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonnglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglong-pvcmigrate in cjmnuss to free up the name
Deleting migrated-to PVC super-long-pvc-253-chars-longlonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglononglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglong-pvcmigrate-pvcmigrate in cjmnuss to release the PV
Waiting for original PVC super-long-pvc-253-chars-longlonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonnglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglong-pvcmigrate in cjmnuss to finish deleting
Waiting for migrated-to PVC super-long-pvc-253-chars-longlonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglononglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglong-pvcmigrate-pvcmigrate in cjmnuss to finish deleting
Removing claimref from original PV pvc-2e452efe-9733-4f56-8861-9fecc9f9038d
Removing claimref from migrated-to PV pvc-3e2be7e1-fa9b-4d32-90f5-5a553a5104bb
Creating new PVC super-long-pvc-253-chars-longlonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonnglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglong-pvcmigrate with migrated-to PV pvc-3e2be7e1-fa9b-4d32-90f5-5a553a5104bb
Resetting migrated-to PV pvc-3e2be7e1-fa9b-4d32-90f5-5a553a5104bb reclaim policy
Got conflict updating PV pvc-3e2be7e1-fa9b-4d32-90f5-5a553a5104bb, waiting 5s to retry
Deleting original, now redundant, PV pvc-2e452efe-9733-4f56-8861-9fecc9f9038d
Successfully migrated PVC super-long-pvc-253-chars-longlonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonnglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglong-pvcmigrate in cjmnuss from PV pvc-2e452efe-9733-4f56-8861-9fecc9f9038d to pvc-3e2be7e1-fa9b-4d32-90f5-5a553a5104bb

Swapping PVC super-long-pvc-253-chars-longlonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglong in cjmnuss to the new StorageClass
Marking original PV pvc-ead5ef1d-5b07-4152-8e63-b3469f8ab042 as to-be-retained
Marking migrated-to PV pvc-3e2be7e1-fa9b-4d32-90f5-5a553a5104bb as to-be-retained
Deleting original PVC super-long-pvc-253-chars-longlonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglong in cjmnuss to free up the name
Deleting migrated-to PVC super-long-pvc-253-chars-longlonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonnglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglong-pvcmigrate in cjmnuss to release the PV
Waiting for original PVC super-long-pvc-253-chars-longlonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglong in cjmnuss to finish deleting
Waiting for migrated-to PVC super-long-pvc-253-chars-longlonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonnglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglong-pvcmigrate in cjmnuss to finish deleting
Removing claimref from original PV pvc-ead5ef1d-5b07-4152-8e63-b3469f8ab042
Removing claimref from migrated-to PV pvc-3e2be7e1-fa9b-4d32-90f5-5a553a5104bb
Creating new PVC super-long-pvc-253-chars-longlonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglong with migrated-to PV pvc-3e2be7e1-fa9b-4d32-90f5-5a553a5104bb
Resetting migrated-to PV pvc-3e2be7e1-fa9b-4d32-90f5-5a553a5104bb reclaim policy
Deleting original, now redundant, PV pvc-ead5ef1d-5b07-4152-8e63-b3469f8ab042
Successfully migrated PVC super-long-pvc-253-chars-longlonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglong in cjmnuss from PV pvc-ead5ef1d-5b07-4152-8e63-b3469f8ab042 to pvc-3e2be7e1-fa9b-4d32-90f5-5a553a5104bb

Scaling back StatefulSets and Deployments with matching PVCs
scaling Deployment test-deploy-attached-to-super-long-pvc-with-a-name-63-char-long from 0 to 1 in cjmnuss

Success!

@laverya
Copy link
Member

laverya commented Apr 22, 2024

I'm sorry for leaving this open for so long! I'm taking a look now

pkg/k8sutil/truncate.go Outdated Show resolved Hide resolved
pkg/k8sutil/truncate.go Outdated Show resolved Hide resolved
@laverya laverya merged commit b32441d into replicatedhq:main Apr 22, 2024
6 checks passed
@laverya
Copy link
Member

laverya commented Apr 22, 2024

Thank you for the PR @clementnuss !

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Handle long named PVs better
3 participants