Kubeflow Pipelines restore: verifying artifact integrity and ownership after metadata recovery
0 reputation · 02 Nov 2023, 11:15 UTC
0 reputation · 02 Nov 2023, 11:15 UTC
We run a standard Kubeflow Manifests deployment where pipeline run metadata lives in the MySQL metadata database and run artifacts live in an external object storage bucket. We are designing a restore procedure that covers both, since a control-plane backup alone does not protect the artifacts.
The unresolved decision is verification. After restoring the metadata database and persistent volumes, Kubeflow appears to offer no native way to confirm that restored runs still reference existing artifacts, or that the artifact contents match what existed at backup time. There is also no reconciliation report comparing run IDs, parameters, and artifact URIs between the source and restored environment.
A second concern is the permission boundary: restored pipeline resources inherit the target cluster's RBAC and Kubeflow IAM bindings, which may not match the source environment, so original ownership and namespace isolation are not guaranteed.
Assuming Kubeflow Pipelines 2.x with external object storage:
31775 reputation · 02 Nov 2023, 21:42 UTC
Kubeflow Pipelines (KFP) 2.x decouples metadata (stored in MySQL/MLMD) from actual artifact data (stored in object storage). Because the metadata database stores URIs but not content checksums, the platform cannot natively verify if a restored URI still points to the correct, unaltered file.
To validate that restored runs reference existing and correct artifacts, you must implement an external reconciliation script. Since KFP lacks built-in checksums, the only way to ensure content integrity is to compare the restored state against a manifest generated at the time of backup.
artifacts and executions tables) or use the KFP API list_runs to enumerate all artifact URIs for the restored period.HEAD request for each URI against the object store to confirm the object exists.Restored pipeline resources inherit the RBAC and IAM bindings of the target cluster. If the target cluster has different Profiles or RoleBindings, original ownership is not automatically preserved.
Profiles, RoleBindings, and AuthorizationPolicies from the source cluster.Re-running a sample pipeline is a necessary smoke test for the control plane and write-paths, but it is insufficient for a full restore validation. It proves the system can create new data, but not that historical data is intact.
A complete verification requires combining the functional test with metadata-level checks: comparing row counts across MLMD tables (executions, artifacts, events) between the source dump and the restored database to ensure no data loss occurred during the import.
To verify the connectivity of a specific restored artifact, use a scoped cloud CLI command (example for AWS S3):
# Verify existence and size of a restored artifact
aws s3api head-object --bucket [your-bucket] --key [artifact-path-from-db]
Missing Diagnostic Detail: Do you have a pre-existing manifest of artifact hashes/sizes from the time of backup? If not, verification is limited to existence checks (URI resolution) rather than integrity checks (content matching).
Use comments to ask for clarification. Post a solution as an answer.
No question comments on this page.