Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 1 addition & 16 deletions content/de/developer/integration/big-data/iceberg.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,14 +33,12 @@ Create a working directory:
mkdir rustfs-iceberg
cd rustfs-iceberg
```

Create an environment file and replace both credential placeholders:

```ini title=".env"
RUSTFS_ACCESS_KEY=<your-access-key>
RUSTFS_SECRET_KEY=<your-secret-key>
```

Use dedicated credentials for the warehouse bucket. Do not commit `.env` to source control.

Create the Spark catalog configuration:
Expand All @@ -57,7 +55,6 @@ spark.sql.catalog.demo.s3.path-style-access true
spark.sql.defaultCatalog demo
spark.sql.catalogImplementation in-memory
```

Path-style access is required for this container-network endpoint. The hostname `rustfs` is resolvable only inside the Compose network; clients running on the host use `http://localhost:9000` instead.

Create the Compose file:
Expand All @@ -74,7 +71,7 @@ services:
RUSTFS_CONSOLE_ADDRESS: ":9001"
RUSTFS_CONSOLE_ENABLE: "true"
RUSTFS_OBS_LOGGER_LEVEL: error
RUSTFS_OBS_LOG_DIRECTORY: /var/log/rustfs/
RUSTFS_OBS_LOG_DIRECTORY: /logs
volumes:
- rustfs-data:/data
ports:
Expand Down Expand Up @@ -145,7 +142,6 @@ networks:
volumes:
rustfs-data:
```

The [`rc` image](https://github.com/rustfs/cli) provides the official RustFS command-line client. The initializer checks for `my-bucket` before creating it, so repeated starts do not delete existing warehouse data. The RustFS volume preserves warehouse objects across container recreation.

:::warning[Image versions]
Expand All @@ -161,20 +157,17 @@ Resolve the Compose file before starting containers:
```bash
docker compose config
```

Start the services and wait for the bucket initializer to finish:

```bash
docker compose up -d
docker compose ps -a
```

The `create-bucket` service should show an exit code of `0`. Check its logs if it does not complete:

```bash
docker compose logs create-bucket
```

Open the RustFS Console at `http://localhost:9001`. The REST catalog is available at `http://localhost:8181`, and the Spark notebook server is available at `http://localhost:8888`.

## 3. Create and query an Iceberg table
Expand All @@ -184,7 +177,6 @@ Start Spark SQL:
```bash
docker compose exec spark-iceberg spark-sql
```

Create a namespace and a partitioned table:

```sql
Expand All @@ -200,7 +192,6 @@ CREATE TABLE demo.nyc.taxis
)
PARTITIONED BY (vendor_id);
```

Insert and query sample rows:

```sql
Expand All @@ -213,7 +204,6 @@ VALUES

SELECT * FROM demo.nyc.taxis ORDER BY trip_id;
```

The query should return four rows:

```text
Expand All @@ -222,7 +212,6 @@ The query should return four rows:
2 1000373 0.9 9.01 N
1 1000374 8.4 42.13 Y
```

## 4. Verify objects in RustFS

List the warehouse from the bucket-initializer image:
Expand All @@ -231,7 +220,6 @@ List the warehouse from the bucket-initializer image:
docker compose run --rm --entrypoint /bin/sh create-bucket -c \
'/usr/bin/rc alias set rustfs http://rustfs:9000 "$RUSTFS_ACCESS_KEY" "$RUSTFS_SECRET_KEY" >/dev/null && /usr/bin/rc find rustfs/my-bucket/warehouse'
```

The output should include Iceberg metadata and data objects below the `warehouse/nyc/taxis` prefix. You can also inspect the `my-bucket` bucket in the RustFS Console.

## 5. Stop or reset the stack
Expand All @@ -241,13 +229,11 @@ Stop the containers while keeping the RustFS data volume:
```bash
docker compose down
```

To delete the local warehouse and start from an empty RustFS volume, explicitly include `--volumes`:

```bash
docker compose down --volumes
```

## Troubleshooting

### Spark cannot reach RustFS
Expand All @@ -263,7 +249,6 @@ Check that the credentials in `.env` match the RustFS credentials and that the `
```bash
docker compose logs create-bucket rest
```

The REST catalog property uses doubled underscores in `CATALOG_IO__IMPL` and `CATALOG_S3_PATH__STYLE__ACCESS`; the fixture converts them to the dotted and hyphenated Iceberg property names.

## Next steps
Expand Down
18 changes: 1 addition & 17 deletions content/de/developer/integration/big-data/milvus.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,14 +34,12 @@ Create a working directory:
mkdir rustfs-milvus
cd rustfs-milvus
```

Create an environment file and replace both credential placeholders:

```ini title=".env"
RUSTFS_ACCESS_KEY=<your-access-key>
RUSTFS_SECRET_KEY=<your-secret-key>
```

Use dedicated credentials for the Milvus bucket. Do not commit `.env` to source control.

Create the Milvus storage override:
Expand All @@ -61,7 +59,6 @@ minio:
region: us-east-1
useVirtualHost: false
```

`useVirtualHost: false` selects path-style S3 requests. The hostname `rustfs` resolves inside the Compose network; clients on the host use `http://localhost:9000`.

Create the Compose file:
Expand Down Expand Up @@ -100,7 +97,7 @@ services:
RUSTFS_CONSOLE_ADDRESS: ":9001"
RUSTFS_CONSOLE_ENABLE: "true"
RUSTFS_OBS_LOGGER_LEVEL: error
RUSTFS_OBS_LOG_DIRECTORY: /var/log/rustfs/
RUSTFS_OBS_LOG_DIRECTORY: /logs
volumes:
- rustfs-data:/data
ports:
Expand Down Expand Up @@ -185,7 +182,6 @@ volumes:
rustfs-data:
milvus-data:
```

The `create-bucket` service uses the official [`rc`](https://github.com/rustfs/cli) image and exits after ensuring that `my-bucket` exists. Named volumes preserve etcd metadata, RustFS objects, and Milvus local data when containers are recreated.

:::warning[Protect local service ports]
Expand All @@ -201,20 +197,17 @@ Resolve the Compose file before starting containers:
```bash
docker compose config
```

Start the services:

```bash
docker compose up -d
docker compose ps -a
```

The `create-bucket` service should exit with code `0`, and `etcd`, `rustfs`, and `standalone` should become healthy. Inspect logs if a service does not reach its expected state:

```bash
docker compose logs create-bucket rustfs standalone
```

Open these local interfaces:

- RustFS Console: `http://localhost:9001`
Expand All @@ -232,7 +225,6 @@ python3 -m venv .venv
source .venv/bin/activate
python -m pip install "pymilvus==2.6.0"
```

Create a test script:

```python title="verify_milvus.py"
Expand Down Expand Up @@ -269,13 +261,11 @@ results = client.search(
print(results)
client.close()
```

Run the script:

```bash
python verify_milvus.py
```

The result should rank the row with ID `1` first. Open Attu and confirm that the `rustfs_demo` collection contains three entities.

## 4. Verify Milvus objects in RustFS
Expand All @@ -286,7 +276,6 @@ Use the bucket-initializer image to list objects below the configured `milvus` r
docker compose run --rm --entrypoint /bin/sh create-bucket -c \
'/usr/bin/rc alias set rustfs http://rustfs:9000 "$RUSTFS_ACCESS_KEY" "$RUSTFS_SECRET_KEY" --region us-east-1 --bucket-lookup path >/dev/null && /usr/bin/rc find rustfs/my-bucket/milvus'
```

The output should contain objects created by Milvus below the `milvus/` prefix. You can also open `my-bucket` in the RustFS Console.

Milvus may buffer or compact data before every expected object appears. The successful insert, flush, query, and RustFS object listing together validate the integration path.
Expand All @@ -298,13 +287,11 @@ Stop the containers while retaining all named volumes:
```bash
docker compose down
```

To delete the local test data, including the Milvus bucket contents and etcd metadata, explicitly remove the volumes:

```bash
docker compose down --volumes
```

:::warning[Reset removes the test data]

The `--volumes` option permanently deletes the named volumes used by this Compose project. Do not run it against data you need to retain.
Expand All @@ -322,7 +309,6 @@ Confirm that `useVirtualHost` remains `false` and that the credential values pas
```bash
docker compose logs standalone rustfs
```

### The bucket initializer fails

Check RustFS readiness and the initializer logs:
Expand All @@ -331,7 +317,6 @@ Check RustFS readiness and the initializer logs:
curl -fsS http://localhost:9000/health/ready
docker compose logs create-bucket
```

Verify that `.env` contains non-empty credentials and that `docker compose config` resolves both variables.

### Milvus starts without existing data
Expand All @@ -346,7 +331,6 @@ The Attu container must use `standalone:19530`. A browser or host-side client us
curl -fsS http://localhost:9091/healthz
docker compose logs attu standalone
```

## Next steps

- Review [S3 compatibility notes](/administration/protocols/s3) before enabling additional Milvus storage features.
Expand Down
11 changes: 1 addition & 10 deletions content/de/developer/integration/reverse-proxy/caddy.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,6 @@ Create a directory for the deployment:
mkdir rustfs-caddy
cd rustfs-caddy
```

## 2. Set deployment variables

Create an environment file and replace each value:
Expand All @@ -38,7 +37,6 @@ ACME_EMAIL=admin@example.com
RUSTFS_ACCESS_KEY=<your-access-key>
RUSTFS_SECRET_KEY=<your-secret-key>
```

Use an email address that receives certificate notices. Do not commit `.env` to source control.

## 3. Configure Caddy
Expand Down Expand Up @@ -72,7 +70,6 @@ Create a Caddyfile with one site block for each RustFS endpoint:
}
}
```

Caddy preserves the incoming `Host` header, HTTP method, and request URI by default. It also forwards client information through `X-Forwarded-*` headers and handles Console WebSocket upgrades without additional header rules.

## 4. Create the Compose file
Expand Down Expand Up @@ -112,7 +109,7 @@ services:
RUSTFS_ADDRESS: ":9000"
RUSTFS_CONSOLE_ADDRESS: ":9001"
RUSTFS_OBS_LOGGER_LEVEL: error
RUSTFS_OBS_LOG_DIRECTORY: /var/log/rustfs/
RUSTFS_OBS_LOG_DIRECTORY: /logs
expose:
- "9000"
- "9001"
Expand All @@ -135,7 +132,6 @@ volumes:
networks:
rustfs:
```

The persistent `caddy-data` volume stores certificates, private keys, and ACME account state. Back up this volume and do not share its contents. Only Caddy publishes host ports; RustFS remains reachable inside the Compose network.

## 5. Validate and start the deployment
Expand All @@ -146,21 +142,18 @@ Render the Compose configuration and start RustFS:
docker compose config
docker compose up -d rustfs
```

Validate the Caddyfile with the same image used by the deployment:

```bash
docker compose run --rm --no-deps caddy caddy validate --config /etc/caddy/Caddyfile
```

Start Caddy and check both services:

```bash
docker compose up -d caddy
docker compose ps
docker compose logs --follow caddy
```

Caddy obtains certificates in the background and redirects HTTP requests to HTTPS. If issuance fails, confirm that both DNS records resolve to this host, ports `80` and `443` are reachable, and the `caddy-data` volume is writable.

## 6. Verify both endpoints
Expand All @@ -171,7 +164,6 @@ Verify the API and Console through their public HTTPS hostnames:
curl --fail https://s3.example.com/health/ready
curl --fail https://console.example.com/rustfs/console/health
```

Configure S3 clients with `https://s3.example.com` as the endpoint and enable path-style addressing. Open `https://console.example.com` to sign in to the Console.

## Multi-node upstreams
Expand Down Expand Up @@ -199,7 +191,6 @@ For a distributed RustFS deployment, list every node in the corresponding site b
}
}
```

Replace `<your-cookie-secret>` with a random secret shared by all Caddy instances. Console affinity keeps an in-progress OpenID Connect login on the RustFS node that created its `state`. Keep port `9000` open directly between RustFS nodes because internal node RPC uses the same listener.

## Next steps
Expand Down
Loading
Loading