You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/installation/deployment-guide/installing-the-os/automated-os-installation.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -39,7 +39,7 @@ The operator reads `Cluster` (and related) resources in the `superphenix-system`
39
39
2. Register physical servers (BMC credentials, MAC addresses, desired role) with the talos-operator.
40
40
3. Define `Cluster` resources that describe topology, geography, and connection mode.
41
41
4. Let the operator provision Talos on the servers, bootstrap Kubernetes, and install the Superphenix stack.
42
-
5. Connect decoupled storage and workload clusters as needed. See [Add storage classes to a cluster](../../../operations/add-storage-pools-to-a-cluster.md#adding-a-storage-class).
42
+
5. Connect decoupled storage and workload clusters as needed. See [Add storage classes to a cluster](../../../operations/add-storage-pools-to-a-cluster.md#adding-a-block-storage-class).
Copy file name to clipboardExpand all lines: docs/operations/add-storage-pools-to-a-cluster.md
+105-7Lines changed: 105 additions & 7 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -9,7 +9,7 @@ On each cluster, you define storage classes and expose them to users. The steps
9
9
10
10
In both cases, every storage class is backed by a **storage pool**. The pool defines the physical media and data protection; one pool can serve several classes with different QoS or encryption settings. For example, an NVMe pool with 3-way replication could back two classes. One could be capped at 100 MB/s and another be configured with encryption, while the data lands on the same underlying pool.
11
11
12
-
The sections below cover creating **storage pools**, then exposing them through **storage classes**.
12
+
The sections below cover creating **storage pools**, then exposing them through **storage classes**, whether for block storage, filesystem or object storage purposes.
13
13
14
14
## Adding a storage pool
15
15
@@ -63,7 +63,7 @@ Add the pool under `systemConfiguration` on the `Cluster` resource (or via the `
63
63
deviceClass: hdd
64
64
# Where replicas are placed. "host" spreads data across servers so
65
65
# you can lose a machine. "osd" spreads across disks and may place
66
-
# all copies on one server—losing that server can mean permanent
66
+
# all copies on one server. Losing that server can mean permanent
67
67
# data loss. With size 3 and failureDomain "host", you can lose
68
68
# two hosts and still recover.
69
69
failureDomain: "host"
@@ -130,17 +130,19 @@ Add the pool under `systemConfiguration` on the `Cluster` resource (or via the `
130
130
131
131
For advanced pool options, see the [rook-ceph-cluster](https://artifacthub.io/packages/helm/rook/rook-ceph-cluster) Helm chart values.
132
132
133
-
## Adding a storage class
133
+
## Adding a block storage class
134
134
135
-
A **storage class** is the user-facing catalog entry for storage. It points at a pool and adds policies such as QoS and encryption so tenants can pick the right offering when they create disks or buckets.
135
+
This section covers adding a **storage class for block storage**. They're used by end users pick when they create disks and other block volumes.
136
+
137
+
A **block storage class** is the user-facing catalog entry for block storage. It points at a pool and adds policies such as QoS and encryption so tenants can pick the right offering when they create disks.
136
138
137
139
### Prerequisites
138
140
139
-
- At least one **storage pool** already exists on the cluster that hosts the storage. See [Adding a new storage pool](#adding-a-new-storage-pool).
141
+
- At least one **storage pool** already exists on the cluster that hosts the storage. See [Adding a storage pool](#adding-a-storage-pool).
140
142
141
143
### Configuration
142
144
143
-
Add the storage class under `systemConfiguration` on the `Cluster` resource (or via the `superphenix-operator` Helm chart), using the **`rook-connection`** chart. Choose the example that matches your AZ layout.
145
+
Add the block storage class under `systemConfiguration` on the `Cluster` resource (or via the `superphenix-operator` Helm chart), using the **`rook-connection`** chart. Choose the example that matches your AZ layout.
144
146
145
147
!!! info "Where to apply this configuration"
146
148
Configure the storage class on the cluster that **consumes** the storage:
@@ -150,7 +152,7 @@ Add the storage class under `systemConfiguration` on the `Cluster` resource (or
150
152
151
153
=== "Hyperconverged"
152
154
153
-
On a hyperconverged cluster, storage and workloads share the same Kubernetes cluster. You only need to reference the local pool and define storage classes—no remote Ceph connection fields.
155
+
On a hyperconverged cluster, storage and workloads share the same Superphenix cluster. You only need to reference the local pool and define storage classes. No remote Ceph connection fields are necessary.
154
156
155
157
```yaml
156
158
systemConfiguration:
@@ -239,3 +241,99 @@ Add the storage class under `systemConfiguration` on the `Cluster` resource (or
239
241
# Encryption passphrase, can be a random string of characters.
240
242
passphrase: ""
241
243
```
244
+
245
+
For advanced storage class and connection options, see the [spx-rook-connection](https://github.com/super-phenix/superphenix/tree/main/components/dependencies/spx-rook-connection) chart values.
246
+
247
+
## Adding an object storage class
248
+
249
+
This section covers adding a **storage class for object (S3) storage**. They're used by end users when they create buckets and consume S3-compatible storage.
250
+
251
+
An **object storage class** is the user-facing catalog entry for S3 object storage. It exposes an object store so tenants can create and use buckets with the media, protection, and policies you define.
252
+
253
+
### Prerequisites
254
+
255
+
- At least one **object store** already exists on the cluster that hosts the storage. See [Add an object store](add-an-object-store.md).
256
+
257
+
### Configuration
258
+
259
+
Add the object storage class under `systemConfiguration` on the `Cluster` resource (or via the `superphenix-operator` Helm chart), using the **`rook-connection`** chart. Choose the example that matches your AZ layout.
260
+
261
+
!!! info "Where to apply this configuration"
262
+
Configure the storage class on the cluster that **consumes** the storage:
263
+
264
+
- **Hyperconverged**: the same cluster that hosts the object store.
265
+
- **Decoupled**: the **workload** cluster. Remote connection fields point at the storage cluster.
266
+
267
+
=== "Hyperconverged"
268
+
269
+
On a hyperconverged cluster, storage and workloads share the same Superphenix cluster. You only need to reference the local object store and define the object storage class. No remote RGW endpoint or Ceph connection fields are necessary.
270
+
271
+
```yaml
272
+
systemConfiguration:
273
+
rook-connection:
274
+
helm:
275
+
values:
276
+
clusters:
277
+
- name: "[cluster-name]" # Can be the name of your hyperconverged cluster
278
+
objectStores:
279
+
- name: "[object-store-name]" # CephObjectStore CR name
280
+
storageClasses:
281
+
- name: "[storage-class-name]"
282
+
# StorageClass name will be "<cluster>.<name>" unless fullName is set.
283
+
# Name must be unique across every storage class in the cluster.
284
+
# fullName: ""
285
+
```
286
+
287
+
=== "Decoupled"
288
+
289
+
On a decoupled AZ, create the object storage class on the **workload** cluster and connect it to an object store on the **storage** cluster. That requires Ceph connection details, the remote RGW endpoints, and the object store storage class definitions.
290
+
291
+
```yaml
292
+
systemConfiguration:
293
+
rook-connection:
294
+
helm:
295
+
values:
296
+
clusters:
297
+
- name: "[storage-cluster-name]" # The name of the remote storage cluster
298
+
# Ceph cluster ID (FSID), e.g. e2a62ea1-6428-496e-a5bf-366936a8c833
299
+
clusterID: ""
300
+
username: "[csi-user]"
301
+
token: ""
302
+
# Initial MON used to retrieve the full MON list
303
+
bootstrapMon:
304
+
# MON ID (must be a single letter)
305
+
id: ""
306
+
# IP of the MON
307
+
ip: ""
308
+
# Port of the MON
309
+
port: "6789"
310
+
# Protocol of the IP (IPv4 or IPv6)
311
+
protocol: IPv6
312
+
# Used by Rook to check remote cluster health and refresh the MON list
313
+
healthCheck:
314
+
username: "client.csi-health"
315
+
token: ""
316
+
objectStores:
317
+
- name: "[object-store-name]" # CephObjectStore CR name (also used to derive the TLS secret name)
318
+
# External RGW endpoints. Each entry accepts either `ip` or `hostname`.
319
+
endpoints:
320
+
- ip: ""
321
+
# hostname: ""
322
+
# Gateway HTTP port
323
+
port: 80
324
+
# Gateway HTTPS port (only set when TLS is enabled)
325
+
# securePort: 443
326
+
# TLS configuration for the remote RGW
327
+
# tls:
328
+
# enabled: false
329
+
# # PEM-encoded certificate the operator will trust when talking to the RGW
330
+
# cert: ""
331
+
storageClasses:
332
+
- name: "[storage-class-name]"
333
+
# StorageClass name will be "<cluster>.<name>" unless fullName is set.
334
+
# Name must be unique across every storage class in the cluster.
335
+
# fullName: ""
336
+
reclaimPolicy: Delete
337
+
```
338
+
339
+
For advanced storage class and connection options, see the [spx-rook-connection](https://github.com/super-phenix/superphenix/tree/main/components/dependencies/spx-rook-connection) chart values.
0 commit comments