Zum Hauptinhalt springen
Version: Weekly Build

Object Storage

Object Storage stellt eine S3-kompatible API für Dateien, Backups, Assets und andere unstrukturierte Daten bereit. Es ist für Workloads gedacht, die bucket-basierten Objektspeicher benötigen, anstatt eines Dateisystems oder einer relationalen Datenbank.

EigenschaftWertHinweise
Provider-Names3Wird in Landscape-Provider-Definitionen verwendet.
Versionv1Aktuelle, vom Provider bereitgestellte Schema-Version.
KategorieStorageWird im Managed-Services-Katalog angezeigt.
GeltungsbereichglobalSteht auf Team-Ebene zur Verfügung, statt an eine einzelne Workspace-Runtime gebunden zu sein.
Team-SingletonfalseTeams können mehrere Object-Storage-Service-Instanzen erstellen.
Pause-UnterstützungfalseDieser Provider unterstützt das Pausieren nicht.

Preview-Feature

Dieser Provider ist derzeit ein Preview-Feature. Es ist standardmäßig nicht aktiviert und muss von deinem Operator aktiviert werden. Als Preview befindet sich der Provider noch in der Weiterentwicklung – Schema, Pläne und Verhalten können sich in Zukunft ändern.

Funktionsumfang

Der Service ist hochverfügbar: Der zugrunde liegende Ceph-Speicher ist redundant aufgesetzt und wird auf Storage-Ebene repliziert.

Noch keine Backups

Automatisierte Backups der gespeicherten Daten sind für diesen Provider noch nicht verfügbar. Bis dahin bist du selbst dafür verantwortlich, wichtige Daten zu sichern.

Schema

Config

FeldTypErforderlich bei ErstellungHinweise
accessKeystringJaClusterweit eindeutiger Access Key. Muss genau 20 Großbuchstaben oder Ziffern umfassen.
userDisplayNamestringNeinStandard: My S3 User. Freundliche Bezeichnung für den erzeugten Benutzer.
initialBucketNamestringJaClusterweit eindeutiger Name des initialen Buckets. Ist er bereits vergeben, wird der Bucket nicht erstellt.

Secrets

FeldTypErforderlich bei ErstellungHinweise
secretKeystringJaGeheimer Access Key. Muss genau 40 alphanumerische Zeichen umfassen.

Details / Output

FeldTypVerfügbarkeitHinweise
urlstringNach der Bereitstellung verfügbarS3-kompatible Endpunkt-URL. Bei von Codesphere verwaltetem S3 ist dies immer http://rgw-load-balancer.rook-ceph.svc.cluster.local.
userIdstringNach der Bereitstellung verfügbarInterne Kennung des erzeugten Object-Storage-Benutzers.

Plan

Der Provider stellt einen Plan bereit, Generic (id: 0), bei dem alle Quotenparameter angepasst werden können. Beispielplan: Generic (id: 0).

ParameterTypStandardMinimumMaximumStatischHinweise
maxBucketsinteger5011000NeinMaximale Anzahl an Buckets.
maxObjectsinteger100000110000000NeinMaximale Anzahl an Objekten.
maxSizeKbinteger10000000110000000000NeinGesamtgrößenlimit in KB.
maxReadOpsPerSinteger1000110000NeinMaximale Leseoperationen pro Sekunde.
maxWriteOpsPerSinteger1000110000NeinMaximale Schreiboperationen pro Sekunde.
maxReadBytesPerSinteger100000000110000000000NeinMaximaler Lesedurchsatz in Byte pro Sekunde.
maxWriteBytesPerSinteger100000000110000000000NeinMaximaler Schreibdurchsatz in Byte pro Sekunde.

Beispiel in einer Landscape

schemaVersion: v0.2

run:
uploads:
provider:
name: s3
version: v1
plan:
id: 0
parameters:
maxBuckets: 50
maxObjects: 100000
maxSizeKb: 10000000
maxReadOpsPerS: 1000
maxWriteOpsPerS: 1000
maxReadBytesPerS: 100000000
maxWriteBytesPerS: 100000000
config:
accessKey: "${{ workspace.env.S3_ACCESS_KEY }}"
userDisplayName: "Landscape Upload User"
initialBucketName: "${{ workspace.env.S3_BUCKET }}"
secrets:
secretKey: "${{ vault.s3SecretKey }}"

Konfiguriere innerhalb anderer Runtimes deinen S3-Client mit der zurückgegebenen url, dem konfigurierten accessKey und dem gespeicherten secretKey. Bei von Codesphere verwaltetem S3 ist der Endpunkt immer http://rgw-load-balancer.rook-ceph.svc.cluster.local. Derselbe S3-kompatible Endpunkt steht auch von anderen Codesphere-Runtimes aus zur Verfügung, einschließlich Reactives, Managed Containers und Workloads innerhalb eines Virtual Clusters.

Verbindung zu einem Object Store herstellen

Voraussetzungen

Sobald dein Object Store bereitgestellt ist, kannst du dich von deinen Codesphere Workspaces aus damit verbinden. Jeder Service listet nicht-sensible Verbindungsdetails auf der jeweiligen Einstellungsseite im Overview-Tab (bzw. im Attribut details im Public-API-Payload).

info

Stelle vor dem Verbinden sicher, dass der Service synchronisiert ist.

Verbindung über das Terminal (mc)

Der MinIO Client (mc) ist ein robustes Tool für die Interaktion mit S3-kompatiblen APIs.

# mc installieren
nix-env -iA nixpkgs.minio-client

# Alias konfigurieren
mc alias set my-storage http://rgw-load-balancer.rook-ceph.svc.cluster.local "$ACCESS_KEY" "$SECRET_KEY"

# Buckets auflisten
mc ls my-storage

# Datei kopieren
mc cp myfile.txt my-storage/my-bucket/

Verbindung über Node.js

Mit dem AWS SDK für JavaScript v3 (@aws-sdk/client-s3):

const { S3 } = require("@aws-sdk/client-s3");

const s3 = new S3({
endpoint: "http://rgw-load-balancer.rook-ceph.svc.cluster.local",
region: "us-east-1",
credentials: {
accessKeyId: "YOUR_ACCESS_KEY",
secretAccessKey: "YOUR_SECRET_KEY"
},
forcePathStyle: true,
tls: false
});

const { Buckets } = await s3.listBuckets({});
console.log(Buckets);