Replace MinIO with Garage as S3-compatible storage backend#25
Replace MinIO with Garage as S3-compatible storage backend#25RitikaSen27 wants to merge 15 commits into
Conversation
|
Provide missing bucket initialization and health checks, or this PR will be deleted. |
|
Thanks for the feedback! I’ll add bucket initialization and health checks to the Garage setup and update the PR shortly. |
|
Thanks for the feedback! I’ve added bucket initialization and health checks to the Garage setup and updated the PR accordingly. Please let me know if anything else needs improvement. |
|
Could you please ensure, that the functionality of the garage set-up is matching the one of minio, thank you. Use the same ports on node level for garage, so for the user and documentation, nothing needs to be changed. |
|
Thanks for your suggestion regarding matching the MinIO ports. I’ve addressed this in a separate PR to keep the changes focused and clean: This update aligns Garage with MinIO’s external ports (9000/9001 and corresponding nodePorts), so no changes are required for users or documentation. Please let me know if any further adjustments are needed. |
|
Please do not create a new PR requested updates. Just update this branch and the PR will be updated automatically. |
|
Thank you for the feedback! |
I am missing the fulfilling of these two. So, please
|
|
I will surely work on this but could you please explain a bit what is missing in the previous PR and what should i add there ? |
|
I’ve updated this PR to address the missing parts:
Along with aligning the ports to match MinIO, this ensures that no changes are required for users or documentation. Please let me know if this is okay or do i need to do something else on this. |
|
Please reply to my questions from the review, thank you. |
|
Thanks for your review! I’m currently not able to see the specific review comments or questions on this PR (in either the Conversation or Files changed tabs). Could you please point me to them or re-share them here? I’ll address them right away. |
|
Review 1 - I’ve ensured that the configuration uses the same endpoint as before, while the Garage service matches MinIO ports on the Kubernetes level. |
|
Review 2- I’ve removed the |
|
Review 3- I’ve removed them from this PR and will keep them only in the separate PR dedicated to that feature. |
|
Thank you for letting me the know the reviews. I have answered all of them and done the required changes. I hope this will be helpful. |
|
@RitikaSen27 Thank you very much for the improvements. I added some new questions and I am looking forward to your responses! |
|
I apologise for the late response . I’m still not able to see the new questions in the PR (I checked both the Conversation and Files changed tabs, including hidden/outdated comments). Could you please point me to them or re-share them? I'll be working on them right away. |
EHJ-52n
left a comment
There was a problem hiding this comment.
Dear @RitikaSen27,
I did not submit my review, hence you were not able to see my questions and comments.
Sorry for the delay.
| "PYGEOAPI_K8S_MANAGER_NAMESPACE": "default", | ||
| "PYGEOAPI_K8S_MANAGER_API_TOKEN": "do_not_use_in_production", | ||
| "PYGEOAPI_K8S_MANAGER_FINALIZER_BUCKET_ENDPOINT": "http://localhost:30090", | ||
| "PYGEOAPI_K8S_MANAGER_FINALIZER_BUCKET_ENDPOINT": "http://localhost:30091", |
There was a problem hiding this comment.
Why is this changed?
Shouldn't the minio replacement happen under the hood, hence the endpoint for the manager is still the same?
| jobs = k8s_batch_api.list_namespaced_job(self.namespace) | ||
| self.resource_version = jobs.metadata.resource_version | ||
| LOGGER.debug(f"resource_version received: '{self.resource_version}'.") | ||
| def delete_job(self, job_id: str, k8s_batch_api: BatchV1Api | None = None): |
There was a problem hiding this comment.
This should not be part of the PR to replace minio AFAIK.
|
|
||
| mocked_get_logs_for_pod.assert_not_called() | ||
| mocked_upload_logs_to_s3.assert_not_called() | ||
|
|
There was a problem hiding this comment.
this should not be part of the PR to replace minio.
| command: ["/bin/sh", "-c"] | ||
| args: | ||
| - | | ||
| sleep 10; |
There was a problem hiding this comment.
done sleep for a fixed amount of time, but check, if the service is available. See the removed minio init job for an example.
| sleep 10; | ||
| aws configure set aws_access_key_id $AWS_ACCESS_KEY_ID; | ||
| aws configure set aws_secret_access_key $AWS_SECRET_ACCESS_KEY; | ||
| aws configure set default.region us-east-1; |
There was a problem hiding this comment.
Why us-east-1? Can't this be left out or ignored, because it's not required at all?
| aws --endpoint-url=http://garage:9000 s3 mb s3://pygeoapi || true; | ||
| envFrom: | ||
| - secretRef: | ||
| name: garage-credentials No newline at end of file |
| import datetime | ||
| import os | ||
| from unittest.mock import MagicMock, patch | ||
| from unittest.mock import MagicMock, ANY |
| self.resource_version = jobs.metadata.resource_version | ||
| LOGGER.debug(f"resource_version received: '{self.resource_version}'.") | ||
|
|
||
| V1Job, | ||
| V1Pod, | ||
| ) | ||
| from tests.test_manager import job_id |
|
@RitikaSen27 are you willing to update this PR as requested? Looking forward to your updates. |
|
Hi, Thank you for following up. I appreciate the review and the detailed feedback. Unfortunately, I am currently in the middle of my university examinations and won't be able to work on the requested changes for a few weeks. Given this, I understand if you prefer to close the PR for now. Once my exams are over, I'd be happy to revisit the issue and submit a new PR that addresses all the review comments and project requirements. Thank you for your time and feedback. |
|
Hi, My exams are over now, thanks for waiting. I'll address all the open review comments and push the fixes to this branch shortly. |
|
Hi, I've pushed updates addressing all the outstanding review comments:
All existing tests still pass. Please let me know if anything else needs adjusting. Thanks again for your patience and the thorough review! |
|
…lizer.py conflict
… leftover MinIO values
|
Hi, Pushed fixes for the latest review:
Still working on full Garage bucket/key automation and the complete README verification with command output — will follow up with that shortly. |

Summary
Replaced MinIO with Garage as the S3-compatible object storage backend due to MinIO’s shift towards paid AIStor offerings.
Changes
minio.yaml)garage.yaml)localhost:30090) to Garage (localhost:30091)Details
Notes
emptyDir(non-persistent storage), similar to previous MinIO setupFuture Improvements
emptyDir