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.
| Eigenschaft | Wert | Hinweise |
|---|---|---|
| Provider-Name | s3 | Wird in Landscape-Provider-Definitionen verwendet. |
| Version | v1 | Aktuelle, vom Provider bereitgestellte Schema-Version. |
| Kategorie | Storage | Wird im Managed-Services-Katalog angezeigt. |
| Geltungsbereich | global | Steht auf Team-Ebene zur Verfügung, statt an eine einzelne Workspace-Runtime gebunden zu sein. |
| Team-Singleton | false | Teams können mehrere Object-Storage-Service-Instanzen erstellen. |
| Pause-Unterstützung | false | Dieser 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
| Feld | Typ | Erforderlich bei Erstellung | Hinweise |
|---|---|---|---|
accessKey | string | Ja | Clusterweit eindeutiger Access Key. Muss genau 20 Großbuchstaben oder Ziffern umfassen. |
userDisplayName | string | Nein | Standard: My S3 User. Freundliche Bezeichnung für den erzeugten Benutzer. |
initialBucketName | string | Ja | Clusterweit eindeutiger Name des initialen Buckets. Ist er bereits vergeben, wird der Bucket nicht erstellt. |
Secrets
| Feld | Typ | Erforderlich bei Erstellung | Hinweise |
|---|---|---|---|
secretKey | string | Ja | Geheimer Access Key. Muss genau 40 alphanumerische Zeichen umfassen. |
Details / Output
| Feld | Typ | Verfügbarkeit | Hinweise |
|---|---|---|---|
url | string | Nach der Bereitstellung verfügbar | S3-kompatible Endpunkt-URL. Bei von Codesphere verwaltetem S3 ist dies immer http://rgw-load-balancer.rook-ceph.svc.cluster.local. |
userId | string | Nach der Bereitstellung verfügbar | Interne 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).
| Parameter | Typ | Standard | Minimum | Maximum | Statisch | Hinweise |
|---|---|---|---|---|---|---|
maxBuckets | integer | 50 | 1 | 1000 | Nein | Maximale Anzahl an Buckets. |
maxObjects | integer | 100000 | 1 | 10000000 | Nein | Maximale Anzahl an Objekten. |
maxSizeKb | integer | 10000000 | 1 | 10000000000 | Nein | Gesamtgrößenlimit in KB. |
maxReadOpsPerS | integer | 1000 | 1 | 10000 | Nein | Maximale Leseoperationen pro Sekunde. |
maxWriteOpsPerS | integer | 1000 | 1 | 10000 | Nein | Maximale Schreiboperationen pro Sekunde. |
maxReadBytesPerS | integer | 100000000 | 1 | 10000000000 | Nein | Maximaler Lesedurchsatz in Byte pro Sekunde. |
maxWriteBytesPerS | integer | 100000000 | 1 | 10000000000 | Nein | Maximaler 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);