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

support minio as object storage #380

Open
abdennour opened this issue Dec 27, 2020 · 7 comments
Open

support minio as object storage #380

abdennour opened this issue Dec 27, 2020 · 7 comments

Comments

@abdennour
Copy link

abdennour commented Dec 27, 2020

Quay requires object storage.
The documentation mentions:

  • aws s3
  • openstack swift
  • Or Ceph Rados ( l love OSDs btw)

Now the question, can you support customizing the endpoint of s3 api because i want to use minio.
While minio is 100% API compatible with AWS S3, i need to provide the endpoint (url) of the minio server

old similar issue : https://access.redhat.com/solutions/3782641

@alecmerdler
Copy link
Contributor

Yes, MinIO will work with Quay using the RadosGWStorage driver option in config.yaml and providing the appropriate values. Our team has used it for development and testing purposes. It is not supported as part of the Red Hat Quay product, however.

Here is a partial config.yaml for using MinIO:

DISTRIBUTED_STORAGE_CONFIG:
  default:
  - RadosGWStorage
  - access_key: <hidden>
    secret_key: <hidden>
    hostname: <hidden>
    bucket_name: <hidden>
    port: 443
    is_secure: true
    storage_path: /datastorage/registry

@abdennour
Copy link
Author

abdennour commented Dec 28, 2020

@alecmerdler thank you so much! really appreciated!
Could you please do me a favor by sharing the file cconfiguration: not only config.yaml but also the kubernetes manifests (QuayRegistry/QuayEcosystem/ConfigMap/Secret/....) ?
i just need the shape where you can hide irrelevant values (sensitive,.. so on)

@alecmerdler
Copy link
Contributor

Sure, configuring a QuayRegistry to use unmanaged object storage should be very easy. You can either use the config tool UI (found using status.configEditorEndpoint) or by providing spec.configBundleSecret which contains the required Quay config values found above. I won't go into deploying MinIO itself, but configuring Quay to use an existing MinIO deployment basically follows the "unmanaged component" pattern, which looks a bit like this:

whatever.quayregistryyaml

apiVersion: quay.redhat.com/v1
kind: QuayRegistry
metadata: 
  name: whatever
spec:
  configBundleSecret: quay-config-abc
  components:
    - kind: objectstorage
      managed: false

quay-config-abc.secret.yaml

apiVersion: v1
kind: Secret
metadata:
  name: quay-config-abc
stringData:
  config.yaml:
    ... <other key/values>
    DISTRIBUTED_STORAGE_CONFIG:
      default:
      - RadosGWStorage
      - access_key: <hidden>
        secret_key: <hidden>
        hostname: <hidden>
        bucket_name: <hidden>
        port: 443
        is_secure: true
        storage_path: /datastorage/registry

@venezia
Copy link

venezia commented Feb 19, 2021

FWIW, I use minio using this sort of configuration, but I had an issue.

When I had minio endpoint set up as minio.quay.mydomain.com it would work fine with docker pull, but fail with crictl pull ... but if I set the minio endpoint (nothing else different) as minio-quay.mydomain.com then it would work with crictl pull

The error from crictl pull was

FATA[0000] pulling image: rpc error: code = Unknown desc = Error parsing image configuration: Error fetching blob: invalid status code from registry 400 (Bad Request)

It made me feel like there was a CORS header issue, possibly related to this comment in the code

In other words, a real minio client implementation may be needed ... also perhaps this comment should be in the quay repo and not the operator repo, unsure!

@alecmerdler
Copy link
Contributor

@venezia Indeed, looks like Quay needs to use a real MinIO client for crictl. For Quay we have focused on maintaing compatibility with docker, podman, and rkt (back in the CoreOS days). If this is important for your use case, I recommend either sending an email to [email protected] or filing an issue using our issue tracker.

@abdennour
Copy link
Author

abdennour commented Apr 16, 2024

i wanna specify also:

  • Certificate authority to connect securely with the s3 endponit
  • as well as, ability to skip the s3 v4 signature

what are the suitable config keys for that

@vChrisR
Copy link

vChrisR commented Aug 21, 2024

I'm also looking to specify a CA to connect to S3 endpoint. Is it possible to set it?

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

No branches or pull requests

4 participants