# S3 Object Storage

Phoeniqs Cloud provides S3-compatible object storage for buckets used by your applications, backups, media, and data lakes. Object storage is backed by Ceph RGW (Red Hat OpenShift Data Foundation / NooBaa) and is served from Phoeniqs' Swiss sovereign infrastructure.

Object storage is different from the block storage in your Capacity Pool. Block storage is purchased and consumed through a Capacity Pool and PersistentVolumeClaims inside a Namespace. S3 object storage is allocated in the portal, but provisioned on OpenShift through an ObjectBucketClaim. Using it therefore takes two steps:

  1. In the portal, add the S3 storage subscription to the resource group you want it billed to.
  2. On OpenShift, create an ObjectBucketClaim YAML in your project to provision the bucket and obtain access credentials.

Setting up S3 is not complete by adding it to a resource group alone — the bucket is only created on OpenShift.


# Step 1: Purchase & allocate in the portal

  1. Sign in to the Phoeniqs Portal.
  2. Go to Products → Infrastructure Services.
  3. Click Add on the S3 Object Storage tile.
  4. At checkout, select the Resource Group you want the storage allocated and billed to, agree to the terms, and click Buy subscription.

This mirrors the checkout flow for the other IaaS products. See the IaaS Quickstart Guide for the general purchase flow and Resource Pricing for rates.


# Step 2: Provision the bucket on OpenShift

The bucket must be provisioned on OpenShift with an ObjectBucketClaim. Do not use the OpenShift console's GUI wizard to create the bucket — it does not expose the required maxSize field, so you must apply the manifest directly.

  1. Log in to the OpenShift console. See Access Your OpenShift for the login and project navigation steps.

  2. Open the project (namespace) you want to hold the bucket.

  3. Create a persistent claim using the manifest below, adjusting metadata.name and metadata.namespace to match your project:

    apiVersion: objectbucket.io/v1alpha1
    kind: ObjectBucketClaim
    metadata:
      name: obc-smoke-test
      namespace: d01000-e26-4229-test-15657
    spec:
      generateBucketName: obc-smoke-test
      storageClassName: ocs-storagecluster-ceph-rgw
      additionalConfig:
        maxSize: 10Gi

# Field notes

Field Description
metadata.name A name for the bucket claim (for example obc-smoke-test, backups, uploads).
metadata.namespace The OpenShift project the bucket is provisioned into.
spec.generateBucketName The name generated for the underlying bucket, for example obc-smoke-test.
spec.storageClassName Must be set to ocs-storagecluster-ceph-rgw.
spec.additionalConfig.maxSize Required. The maximum size (capacity cap) for the bucket, for example 10Gi. This field is mandatory and is why the GUI wizard cannot be used.

Apply the manifest with oc apply -f <file>.yaml or paste it into the OpenShift console's + Add → Import YAML.


# Step 3: Connect & use

Once the ObjectBucketClaim is provisioned, OpenShift creates an S3 access Secret in the same namespace containing your access key and secret key. These credentials are required to use the bucket.

  1. Retrieve the Secret in your project (OpenShift console Workloads → Secrets, or oc get secret).

  2. Point any S3-compatible client (AWS CLI, mc, or an application library) at the public Ceph RGW S3 endpoint and authenticate with those keys:

    https://ocs-storagecluster-cephobjectstore-secure-openshift-storage.apps.basel.kvant.cloud/
  3. Create and use your buckets through the client.


# Troubleshooting

Issue Likely cause Fix
Bucket claim stays pending maxSize missing or invalid Ensure spec.additionalConfig.maxSize is set (for example 10Gi).
Bucket does not appear Wrong storage class Confirm spec.storageClassName is ocs-storagecluster-ceph-rgw.
Cannot connect / access denied Missing or wrong credentials Retrieve the correct access key and secret from the Secret created in your namespace.
Bucket not in the resource group Signup / billing mismatch Confirm the S3 subscription was added to the intended resource group at checkout.