Decoupling MinIO from fossa-core
Migrate a bundled-MinIO deployment to externally managed MinIO releases when upgrading the fossa-core chart to 5.0.0.
Overview
As of fossa-core 5.0.0, MinIO is no longer a sub-chart dependency. Instead, MinIO is deployed via its own Helm chart for both fossa-core and Hubble. Migrating off the bundled MinIO requires a scheduled maintenance window of roughly 30 minutes to 1 hour.
The following configuration changes are required during the migration:
storage.endpointmust include thehttpprefix.iam.kindmust be set toAccessKey, andiam.regionmust be set tominio.storage.forcePathStylemust be set totruewhen using MinIO.hubble.storage.endpointmust include thehttpprefix.hubble.iam.kindmust be set toAccessKey, andhubble.iam.regionmust be set tominio.storage.provisionInstanceandhubble.storage.provisionInstancemust be removed. They are deprecated flags.
Assumptions
The example commands assume:
- Namespace:
fossa - fossa-core release name:
fossa - Values files:
- MinIO bundled config:
fossa-core-config.yml - New decoupled config:
decoupled-fossa-core-config.yml
- MinIO bundled config:
- Persistent Volume Claims (PVCs):
fossa-core-minio,fossa-hubble-minio - Existing buckets:
fossa.test(core),hubble.fossa.test(hubble) storage.endpoint:http://fossa-core-minio,storage.forcePathStyle:truehubble.storage.endpoint:http://fossa-hubble-minio- IAM overrides:
iam.kind: AccessKey,iam.region: minio(and the same underhubble.iam)
Danger
This migration deletes the fossa-core release. Your MinIO data survives only if its PVCs are annotated with helm.sh/resource-policy: keep. Verify this (Step 3) before proceeding; if the annotation is missing, do not continue.
Decoupling steps
- 1
Set the namespace
Shellkubectl config set-context --current --namespace=fossa - 2
Locate the MinIO PVCs
Find the MinIO PVCs and note them. They follow the pattern
RELEASE-miniofor fossa-core andRELEASE-hubble-miniofor Hubble:fossa-core-miniofossa-hubble-minio
- 3
Confirm the PVC resource policy is `keep`
Ensure both PVCs have the resource-policy annotation set to
keep. If this is not the case, do not proceed.Shellkubectl get pvc fossa-core-minio -o jsonpath='{.metadata.annotations.helm\.sh/resource-policy}'kubectl get pvc fossa-hubble-minio -o jsonpath='{.metadata.annotations.helm\.sh/resource-policy}' - 4
Enable maintenance mode
This triggers a downtime event.
Shellhelm upgrade -i fossa fossa/fossa-core --values fossa-core-config.yml --set global.maintenanceMode.enabled=true --version "^4.0.0" - 5
Delete the fossa-core release
This triggers a downtime event. The MinIO PVCs are retained because of their
keepresource policy.Shellhelm delete fossa - 6
Deploy externally managed MinIO releases
Deploy standalone MinIO releases for fossa-core and Hubble, reusing the existing PVCs with
persistence.existingClaim:Shellhelm upgrade -i fossa-core-minio fossa/minio --set bucket=fossa.test --set auth.accessKey=minio --set auth.secretKey=minio123 --set persistence.existingClaim=fossa-core-minio helm upgrade -i fossa-hubble-minio fossa/minio --set bucket=hubble.fossa.test --set auth.accessKey=minio --set auth.secretKey=minio123 --set persistence.existingClaim=fossa-hubble-minio - 7
Upgrade fossa-core to 5.0.0
Ensure
storage.endpoint,iam.kind,iam.region,hubble.storage.endpoint,hubble.iam.kind, andhubble.iam.regionare defined in your values file.Example
decoupled-fossa-core-config.yml:YAML# decoupled-fossa-core-config.yml iam: kind: AccessKey region: minio storage: endpoint: http://fossa-core-minio bucket: fossa.test forcePathStyle: true auth: accessKey: minio secretKey: minio123 hubble: iam: kind: AccessKey region: minio storage: bucket: hubble.fossa.test endpoint: http://fossa-hubble-minio auth: accessKey: minio secretKey: minio123Upgrade:
Shellhelm upgrade -i fossa fossa/fossa-core --values decoupled-fossa-core-config.yml --version "^5.0.0" - 8
Verify pod health and data
Ensure all pods become healthy and your data is still available:
Shellkubectl exec fossa-core-minio-0 -- /opt/bitnami/minio-client/bin/mc ls local/fossa.test/BUILDS/kubectl exec fossa-hubble-minio-0 -- /opt/bitnami/minio-client/bin/mc ls local/hubble.fossa.test/BUILDS/ - 9
Confirm in the UI
Log in to the FOSSA UI and confirm your data is available.