container-superposition 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +843 -0
- package/dist/scripts/init.d.ts +3 -0
- package/dist/scripts/init.d.ts.map +1 -0
- package/dist/scripts/init.js +1190 -0
- package/dist/scripts/init.js.map +1 -0
- package/dist/scripts/migrate-to-manifests.d.ts +12 -0
- package/dist/scripts/migrate-to-manifests.d.ts.map +1 -0
- package/dist/scripts/migrate-to-manifests.js +230 -0
- package/dist/scripts/migrate-to-manifests.js.map +1 -0
- package/dist/tool/questionnaire/composer.d.ts +6 -0
- package/dist/tool/questionnaire/composer.d.ts.map +1 -0
- package/dist/tool/questionnaire/composer.js +1232 -0
- package/dist/tool/questionnaire/composer.js.map +1 -0
- package/dist/tool/readme/markdown-parser.d.ts +30 -0
- package/dist/tool/readme/markdown-parser.d.ts.map +1 -0
- package/dist/tool/readme/markdown-parser.js +139 -0
- package/dist/tool/readme/markdown-parser.js.map +1 -0
- package/dist/tool/readme/readme-generator.d.ts +9 -0
- package/dist/tool/readme/readme-generator.d.ts.map +1 -0
- package/dist/tool/readme/readme-generator.js +422 -0
- package/dist/tool/readme/readme-generator.js.map +1 -0
- package/dist/tool/schema/custom-loader.d.ts +17 -0
- package/dist/tool/schema/custom-loader.d.ts.map +1 -0
- package/dist/tool/schema/custom-loader.js +149 -0
- package/dist/tool/schema/custom-loader.js.map +1 -0
- package/dist/tool/schema/overlay-loader.d.ts +47 -0
- package/dist/tool/schema/overlay-loader.d.ts.map +1 -0
- package/dist/tool/schema/overlay-loader.js +252 -0
- package/dist/tool/schema/overlay-loader.js.map +1 -0
- package/dist/tool/schema/types.d.ts +212 -0
- package/dist/tool/schema/types.d.ts.map +1 -0
- package/dist/tool/schema/types.js +5 -0
- package/dist/tool/schema/types.js.map +1 -0
- package/docs/README.md +308 -0
- package/docs/architecture.md +233 -0
- package/docs/creating-overlays.md +549 -0
- package/docs/custom-patches.md +540 -0
- package/docs/dependencies.md +279 -0
- package/docs/examples/custom-patches-example.md +85 -0
- package/docs/examples.md +576 -0
- package/docs/messaging-comparison.md +265 -0
- package/docs/messaging-quick-start.md +385 -0
- package/docs/observability-workflow.md +537 -0
- package/docs/overlay-manifest-refactoring.md +214 -0
- package/docs/overlay-metadata-archive.md +54 -0
- package/docs/overlays.md +523 -0
- package/docs/presets-architecture.md +498 -0
- package/docs/presets.md +366 -0
- package/docs/publishing.md +476 -0
- package/docs/quick-reference.md +326 -0
- package/docs/ux.md +170 -0
- package/features/README.md +85 -0
- package/features/cross-distro-packages/README.md +146 -0
- package/features/cross-distro-packages/devcontainer-feature.json +20 -0
- package/features/cross-distro-packages/install.sh +58 -0
- package/features/local-secrets-manager/devcontainer-feature.json +18 -0
- package/features/local-secrets-manager/install.sh +127 -0
- package/features/project-scaffolder/devcontainer-feature.json +24 -0
- package/features/project-scaffolder/install.sh +100 -0
- package/features/team-conventions/devcontainer-feature.json +24 -0
- package/features/team-conventions/install.sh +93 -0
- package/overlays/.registry/README.md +14 -0
- package/overlays/.registry/base-images.yml +26 -0
- package/overlays/.registry/base-templates.yml +7 -0
- package/overlays/README.md +155 -0
- package/overlays/alertmanager/.env.example +5 -0
- package/overlays/alertmanager/README.md +465 -0
- package/overlays/alertmanager/alert-rules.yml +56 -0
- package/overlays/alertmanager/alertmanager.yml +42 -0
- package/overlays/alertmanager/devcontainer.patch.json +12 -0
- package/overlays/alertmanager/docker-compose.yml +20 -0
- package/overlays/alertmanager/overlay.yml +17 -0
- package/overlays/alertmanager/setup.sh +53 -0
- package/overlays/alertmanager/verify.sh +31 -0
- package/overlays/aws-cli/README.md +473 -0
- package/overlays/aws-cli/devcontainer.patch.json +13 -0
- package/overlays/aws-cli/overlay.yml +13 -0
- package/overlays/azure-cli/README.md +551 -0
- package/overlays/azure-cli/devcontainer.patch.json +8 -0
- package/overlays/azure-cli/overlay.yml +13 -0
- package/overlays/bun/README.md +312 -0
- package/overlays/bun/devcontainer.patch.json +41 -0
- package/overlays/bun/overlay.yml +16 -0
- package/overlays/bun/setup.sh +79 -0
- package/overlays/bun/verify.sh +30 -0
- package/overlays/codex/README.md +128 -0
- package/overlays/codex/devcontainer.patch.json +3 -0
- package/overlays/codex/overlay.yml +14 -0
- package/overlays/codex/setup.sh +24 -0
- package/overlays/codex/verify.sh +30 -0
- package/overlays/commitlint/README.md +333 -0
- package/overlays/commitlint/devcontainer.patch.json +8 -0
- package/overlays/commitlint/overlay.yml +16 -0
- package/overlays/commitlint/setup.sh +234 -0
- package/overlays/direnv/README.md +504 -0
- package/overlays/direnv/devcontainer.patch.json +6 -0
- package/overlays/direnv/overlay.yml +13 -0
- package/overlays/direnv/setup.sh +139 -0
- package/overlays/docker-in-docker/README.md +534 -0
- package/overlays/docker-in-docker/devcontainer.patch.json +10 -0
- package/overlays/docker-in-docker/overlay.yml +13 -0
- package/overlays/docker-sock/README.md +256 -0
- package/overlays/docker-sock/devcontainer.patch.json +9 -0
- package/overlays/docker-sock/docker-compose.yml +8 -0
- package/overlays/docker-sock/overlay.yml +13 -0
- package/overlays/dotnet/README.md +147 -0
- package/overlays/dotnet/devcontainer.patch.json +51 -0
- package/overlays/dotnet/global-tools.txt +24 -0
- package/overlays/dotnet/overlay.yml +13 -0
- package/overlays/dotnet/setup.sh +51 -0
- package/overlays/dotnet/verify.sh +26 -0
- package/overlays/gcloud/README.md +269 -0
- package/overlays/gcloud/devcontainer.patch.json +14 -0
- package/overlays/gcloud/overlay.yml +14 -0
- package/overlays/gcloud/verify.sh +52 -0
- package/overlays/git-helpers/README.md +168 -0
- package/overlays/git-helpers/devcontainer.patch.json +33 -0
- package/overlays/git-helpers/overlay.yml +15 -0
- package/overlays/git-helpers/setup.sh +91 -0
- package/overlays/go/README.md +293 -0
- package/overlays/go/devcontainer.patch.json +43 -0
- package/overlays/go/overlay.yml +15 -0
- package/overlays/go/setup.sh +33 -0
- package/overlays/go/verify.sh +40 -0
- package/overlays/grafana/.env.example +9 -0
- package/overlays/grafana/README.md +462 -0
- package/overlays/grafana/dashboard-provider.yml +11 -0
- package/overlays/grafana/dashboards/observability-overview.json +263 -0
- package/overlays/grafana/devcontainer.patch.json +12 -0
- package/overlays/grafana/docker-compose.yml +27 -0
- package/overlays/grafana/grafana-datasources.yml +57 -0
- package/overlays/grafana/overlay.yml +21 -0
- package/overlays/grafana/verify.sh +34 -0
- package/overlays/jaeger/.env.example +7 -0
- package/overlays/jaeger/README.md +867 -0
- package/overlays/jaeger/devcontainer.patch.json +12 -0
- package/overlays/jaeger/docker-compose.yml +17 -0
- package/overlays/jaeger/overlay.yml +19 -0
- package/overlays/java/README.md +267 -0
- package/overlays/java/devcontainer.patch.json +44 -0
- package/overlays/java/overlay.yml +16 -0
- package/overlays/java/setup.sh +41 -0
- package/overlays/java/verify.sh +42 -0
- package/overlays/just/README.md +443 -0
- package/overlays/just/devcontainer.patch.json +3 -0
- package/overlays/just/overlay.yml +13 -0
- package/overlays/just/setup.sh +182 -0
- package/overlays/kubectl-helm/README.md +660 -0
- package/overlays/kubectl-helm/devcontainer.patch.json +10 -0
- package/overlays/kubectl-helm/overlay.yml +13 -0
- package/overlays/loki/.env.example +5 -0
- package/overlays/loki/README.md +1156 -0
- package/overlays/loki/devcontainer.patch.json +12 -0
- package/overlays/loki/docker-compose.yml +18 -0
- package/overlays/loki/loki-config.yaml +45 -0
- package/overlays/loki/overlay.yml +17 -0
- package/overlays/minio/.env.example +9 -0
- package/overlays/minio/README.md +639 -0
- package/overlays/minio/devcontainer.patch.json +30 -0
- package/overlays/minio/docker-compose.yml +28 -0
- package/overlays/minio/overlay.yml +18 -0
- package/overlays/minio/setup.sh +61 -0
- package/overlays/minio/verify.sh +64 -0
- package/overlays/mkdocs/README.md +309 -0
- package/overlays/mkdocs/devcontainer.patch.json +24 -0
- package/overlays/mkdocs/overlay.yml +15 -0
- package/overlays/modern-cli-tools/README.md +556 -0
- package/overlays/modern-cli-tools/devcontainer.patch.json +3 -0
- package/overlays/modern-cli-tools/overlay.yml +13 -0
- package/overlays/modern-cli-tools/setup.sh +153 -0
- package/overlays/mongodb/.env.example +9 -0
- package/overlays/mongodb/README.md +481 -0
- package/overlays/mongodb/devcontainer.patch.json +32 -0
- package/overlays/mongodb/docker-compose.yml +44 -0
- package/overlays/mongodb/overlay.yml +17 -0
- package/overlays/mongodb/verify.sh +48 -0
- package/overlays/mysql/.env.example +11 -0
- package/overlays/mysql/README.md +542 -0
- package/overlays/mysql/devcontainer.patch.json +34 -0
- package/overlays/mysql/docker-compose.yml +55 -0
- package/overlays/mysql/overlay.yml +16 -0
- package/overlays/mysql/verify.sh +48 -0
- package/overlays/nats/.env.example +5 -0
- package/overlays/nats/README.md +762 -0
- package/overlays/nats/devcontainer.patch.json +24 -0
- package/overlays/nats/docker-compose.yml +31 -0
- package/overlays/nats/overlay.yml +18 -0
- package/overlays/nats/verify.sh +50 -0
- package/overlays/ngrok/README.md +503 -0
- package/overlays/ngrok/devcontainer.patch.json +3 -0
- package/overlays/ngrok/overlay.yml +14 -0
- package/overlays/ngrok/setup.sh +125 -0
- package/overlays/nodejs/README.md +192 -0
- package/overlays/nodejs/devcontainer.patch.json +49 -0
- package/overlays/nodejs/global-packages.txt +16 -0
- package/overlays/nodejs/overlay.yml +14 -0
- package/overlays/nodejs/setup.sh +46 -0
- package/overlays/nodejs/verify.sh +32 -0
- package/overlays/otel-collector/.env.example +9 -0
- package/overlays/otel-collector/README.md +1257 -0
- package/overlays/otel-collector/devcontainer.patch.json +28 -0
- package/overlays/otel-collector/docker-compose.yml +22 -0
- package/overlays/otel-collector/otel-collector-config.yaml +68 -0
- package/overlays/otel-collector/overlay.yml +21 -0
- package/overlays/otel-collector/setup.sh +49 -0
- package/overlays/otel-demo-nodejs/.env.example +2 -0
- package/overlays/otel-demo-nodejs/Dockerfile-otel-demo-nodejs +17 -0
- package/overlays/otel-demo-nodejs/README.md +409 -0
- package/overlays/otel-demo-nodejs/devcontainer.patch.json +12 -0
- package/overlays/otel-demo-nodejs/docker-compose.yml +19 -0
- package/overlays/otel-demo-nodejs/overlay.yml +23 -0
- package/overlays/otel-demo-nodejs/package-otel-demo-nodejs.json +20 -0
- package/overlays/otel-demo-nodejs/server-otel-demo-nodejs.js +259 -0
- package/overlays/otel-demo-nodejs/tracing-otel-demo-nodejs.js +57 -0
- package/overlays/otel-demo-nodejs/verify.sh +31 -0
- package/overlays/otel-demo-python/.env.example +2 -0
- package/overlays/otel-demo-python/Dockerfile-otel-demo-python +16 -0
- package/overlays/otel-demo-python/README.md +82 -0
- package/overlays/otel-demo-python/app-otel-demo-python.py +208 -0
- package/overlays/otel-demo-python/devcontainer.patch.json +12 -0
- package/overlays/otel-demo-python/docker-compose.yml +19 -0
- package/overlays/otel-demo-python/overlay.yml +23 -0
- package/overlays/otel-demo-python/requirements-otel-demo-python.txt +4 -0
- package/overlays/otel-demo-python/verify.sh +31 -0
- package/overlays/playwright/README.md +629 -0
- package/overlays/playwright/devcontainer.patch.json +9 -0
- package/overlays/playwright/overlay.yml +13 -0
- package/overlays/postgres/.env.example +6 -0
- package/overlays/postgres/README.md +602 -0
- package/overlays/postgres/devcontainer.patch.json +21 -0
- package/overlays/postgres/docker-compose.yml +22 -0
- package/overlays/postgres/overlay.yml +15 -0
- package/overlays/postgres/verify.sh +45 -0
- package/overlays/powershell/README.md +314 -0
- package/overlays/powershell/devcontainer.patch.json +22 -0
- package/overlays/powershell/overlay.yml +13 -0
- package/overlays/powershell/setup.sh +29 -0
- package/overlays/powershell/verify.sh +38 -0
- package/overlays/pre-commit/README.md +263 -0
- package/overlays/pre-commit/devcontainer.patch.json +9 -0
- package/overlays/pre-commit/overlay.yml +16 -0
- package/overlays/pre-commit/setup.sh +129 -0
- package/overlays/presets/docs-site.yml +118 -0
- package/overlays/presets/fullstack.yml +181 -0
- package/overlays/presets/microservice.yml +118 -0
- package/overlays/presets/web-api.yml +109 -0
- package/overlays/prometheus/.env.example +5 -0
- package/overlays/prometheus/README.md +1246 -0
- package/overlays/prometheus/devcontainer.patch.json +12 -0
- package/overlays/prometheus/docker-compose.yml +22 -0
- package/overlays/prometheus/overlay.yml +17 -0
- package/overlays/prometheus/prometheus.yml +12 -0
- package/overlays/prometheus/verify.sh +34 -0
- package/overlays/promtail/.env.example +2 -0
- package/overlays/promtail/README.md +357 -0
- package/overlays/promtail/devcontainer.patch.json +5 -0
- package/overlays/promtail/docker-compose.yml +16 -0
- package/overlays/promtail/overlay.yml +17 -0
- package/overlays/promtail/promtail-config.yaml +60 -0
- package/overlays/promtail/verify.sh +31 -0
- package/overlays/pulumi/README.md +472 -0
- package/overlays/pulumi/devcontainer.patch.json +13 -0
- package/overlays/pulumi/overlay.yml +14 -0
- package/overlays/pulumi/verify.sh +31 -0
- package/overlays/python/README.md +919 -0
- package/overlays/python/devcontainer.patch.json +41 -0
- package/overlays/python/overlay.yml +12 -0
- package/overlays/python/requirements-overlay.txt +13 -0
- package/overlays/python/setup.sh +47 -0
- package/overlays/python/verify.sh +32 -0
- package/overlays/rabbitmq/.env.example +7 -0
- package/overlays/rabbitmq/README.md +680 -0
- package/overlays/rabbitmq/devcontainer.patch.json +28 -0
- package/overlays/rabbitmq/docker-compose.yml +30 -0
- package/overlays/rabbitmq/overlay.yml +18 -0
- package/overlays/rabbitmq/verify.sh +41 -0
- package/overlays/redis/.env.example +4 -0
- package/overlays/redis/README.md +776 -0
- package/overlays/redis/devcontainer.patch.json +21 -0
- package/overlays/redis/docker-compose.yml +21 -0
- package/overlays/redis/overlay.yml +15 -0
- package/overlays/redis/verify.sh +41 -0
- package/overlays/redpanda/.env.example +10 -0
- package/overlays/redpanda/README.md +703 -0
- package/overlays/redpanda/devcontainer.patch.json +37 -0
- package/overlays/redpanda/docker-compose.yml +67 -0
- package/overlays/redpanda/overlay.yml +21 -0
- package/overlays/redpanda/verify.sh +48 -0
- package/overlays/rust/README.md +299 -0
- package/overlays/rust/devcontainer.patch.json +39 -0
- package/overlays/rust/overlay.yml +15 -0
- package/overlays/rust/setup.sh +36 -0
- package/overlays/rust/verify.sh +51 -0
- package/overlays/sqlite/README.md +584 -0
- package/overlays/sqlite/devcontainer.patch.json +14 -0
- package/overlays/sqlite/overlay.yml +15 -0
- package/overlays/sqlite/setup.sh +27 -0
- package/overlays/sqlite/verify.sh +43 -0
- package/overlays/sqlserver/.env.example +6 -0
- package/overlays/sqlserver/README.md +592 -0
- package/overlays/sqlserver/devcontainer.patch.json +22 -0
- package/overlays/sqlserver/docker-compose.yml +32 -0
- package/overlays/sqlserver/overlay.yml +17 -0
- package/overlays/sqlserver/verify.sh +30 -0
- package/overlays/tempo/.env.example +5 -0
- package/overlays/tempo/README.md +273 -0
- package/overlays/tempo/devcontainer.patch.json +12 -0
- package/overlays/tempo/docker-compose.yml +20 -0
- package/overlays/tempo/overlay.yml +20 -0
- package/overlays/tempo/tempo-config.yaml +32 -0
- package/overlays/tempo/verify.sh +31 -0
- package/overlays/terraform/README.md +389 -0
- package/overlays/terraform/devcontainer.patch.json +15 -0
- package/overlays/terraform/overlay.yml +14 -0
- package/overlays/terraform/verify.sh +63 -0
- package/package.json +74 -0
- package/templates/README.md +285 -0
- package/templates/compose/.devcontainer/devcontainer.json +46 -0
- package/templates/compose/.devcontainer/docker-compose.yml +12 -0
- package/templates/compose/README.md +20 -0
- package/templates/plain/.devcontainer/devcontainer.json +35 -0
- package/templates/plain/README.md +21 -0
- package/tool/README.md +281 -0
- package/tool/schema/base-images.schema.json +43 -0
- package/tool/schema/base-templates.schema.json +34 -0
- package/tool/schema/config.schema.json +71 -0
- package/tool/schema/overlay-manifest.schema.json +86 -0
|
@@ -0,0 +1,703 @@
|
|
|
1
|
+
# Redpanda Overlay
|
|
2
|
+
|
|
3
|
+
Kafka-compatible event streaming platform optimized for local development - lightweight, fast, and no Zookeeper required.
|
|
4
|
+
|
|
5
|
+
## Features
|
|
6
|
+
|
|
7
|
+
- **Redpanda** - Kafka-compatible streaming platform (lighter and faster than Apache Kafka)
|
|
8
|
+
- **No Zookeeper** - Simpler architecture, easier local development
|
|
9
|
+
- **Redpanda Console** - Modern web UI for managing topics, messages, and consumers
|
|
10
|
+
- **Kafka API** - 100% compatible with Kafka clients and tools (port 9092)
|
|
11
|
+
- **Schema Registry** - Built-in schema management (port 8081)
|
|
12
|
+
- **HTTP Proxy** - REST API for producing and consuming (port 8082)
|
|
13
|
+
- **Admin API** - Management and monitoring (port 9644)
|
|
14
|
+
- **Docker Compose service** - Runs as separate container
|
|
15
|
+
- **Environment configuration** - Customizable via `.env` file
|
|
16
|
+
|
|
17
|
+
## How It Works
|
|
18
|
+
|
|
19
|
+
This overlay adds Redpanda as a Docker Compose service that provides Kafka-compatible event streaming. Redpanda is designed to be a drop-in replacement for Kafka but optimized for local development with lower resource requirements.
|
|
20
|
+
|
|
21
|
+
**Architecture:**
|
|
22
|
+
|
|
23
|
+
```mermaid
|
|
24
|
+
graph TD
|
|
25
|
+
A[Development Container<br/>Your application code<br/>Kafka client libraries<br/>Connects to redpanda:9092] -->|Docker network devnet| B[Redpanda Container<br/>Kafka API 9092<br/>Schema Registry 8081<br/>HTTP Proxy 8082<br/>Admin API 9644<br/>Event/message persistence]
|
|
26
|
+
B --> C[Redpanda Console<br/>Web UI 8080<br/>Topic management<br/>Message browsing]
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## Configuration
|
|
30
|
+
|
|
31
|
+
### Environment Variables
|
|
32
|
+
|
|
33
|
+
The overlay includes a `.env.example` file. Copy it to `.env` and customize:
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
cd .devcontainer
|
|
37
|
+
cp .env.example .env
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
**Default values (.env.example):**
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
# Redpanda Configuration
|
|
44
|
+
REDPANDA_VERSION=latest
|
|
45
|
+
REDPANDA_KAFKA_PORT=9092
|
|
46
|
+
REDPANDA_SCHEMA_REGISTRY_PORT=8081
|
|
47
|
+
REDPANDA_PROXY_PORT=8082
|
|
48
|
+
REDPANDA_ADMIN_PORT=9644
|
|
49
|
+
|
|
50
|
+
# Redpanda Console Configuration
|
|
51
|
+
REDPANDA_CONSOLE_VERSION=latest
|
|
52
|
+
REDPANDA_CONSOLE_PORT=8080
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
### Port Configuration
|
|
56
|
+
|
|
57
|
+
Default ports can be changed via the `--port-offset` option:
|
|
58
|
+
|
|
59
|
+
```bash
|
|
60
|
+
# Offset all ports by 100
|
|
61
|
+
container-superposition --port-offset 100
|
|
62
|
+
|
|
63
|
+
# Redpanda will be on:
|
|
64
|
+
# - Kafka API: 9192 (instead of 9092)
|
|
65
|
+
# - Console UI: 8180 (instead of 8080)
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
## Connection Information
|
|
69
|
+
|
|
70
|
+
### From Development Container
|
|
71
|
+
|
|
72
|
+
**Kafka API:**
|
|
73
|
+
|
|
74
|
+
```bash
|
|
75
|
+
# Hostname: redpanda (Docker Compose service name)
|
|
76
|
+
# Port: 9092
|
|
77
|
+
# Protocol: Kafka wire protocol
|
|
78
|
+
|
|
79
|
+
# Bootstrap servers
|
|
80
|
+
redpanda:9092
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
**Schema Registry:**
|
|
84
|
+
|
|
85
|
+
```
|
|
86
|
+
http://redpanda:8081
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
**HTTP Proxy:**
|
|
90
|
+
|
|
91
|
+
```
|
|
92
|
+
http://redpanda:8082
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
**Console UI:**
|
|
96
|
+
|
|
97
|
+
```
|
|
98
|
+
http://redpanda-console:8080
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
### From Host Machine
|
|
102
|
+
|
|
103
|
+
**Kafka API:**
|
|
104
|
+
|
|
105
|
+
```bash
|
|
106
|
+
# Hostname: localhost
|
|
107
|
+
# Port: 9092 (or 9092 + port-offset)
|
|
108
|
+
|
|
109
|
+
# Bootstrap servers
|
|
110
|
+
localhost:9092
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
**Console UI:**
|
|
114
|
+
|
|
115
|
+
```
|
|
116
|
+
http://localhost:8080
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
## Common Commands
|
|
120
|
+
|
|
121
|
+
### Using Redpanda Console UI
|
|
122
|
+
|
|
123
|
+
The Redpanda Console provides:
|
|
124
|
+
|
|
125
|
+
- Topic creation and management
|
|
126
|
+
- Message browsing and publishing
|
|
127
|
+
- Consumer group monitoring
|
|
128
|
+
- Schema registry management
|
|
129
|
+
- Cluster health monitoring
|
|
130
|
+
|
|
131
|
+
Access it at: `http://localhost:8080`
|
|
132
|
+
|
|
133
|
+
### Using rpk CLI (via docker exec)
|
|
134
|
+
|
|
135
|
+
```bash
|
|
136
|
+
# Cluster info
|
|
137
|
+
docker exec redpanda rpk cluster info
|
|
138
|
+
|
|
139
|
+
# Cluster health
|
|
140
|
+
docker exec redpanda rpk cluster health
|
|
141
|
+
|
|
142
|
+
# List topics
|
|
143
|
+
docker exec redpanda rpk topic list
|
|
144
|
+
|
|
145
|
+
# Create a topic
|
|
146
|
+
docker exec redpanda rpk topic create my-topic --partitions 3 --replicas 1
|
|
147
|
+
|
|
148
|
+
# Describe topic
|
|
149
|
+
docker exec redpanda rpk topic describe my-topic
|
|
150
|
+
|
|
151
|
+
# Produce messages
|
|
152
|
+
docker exec -it redpanda rpk topic produce my-topic
|
|
153
|
+
# Type messages and press Ctrl+D to finish
|
|
154
|
+
|
|
155
|
+
# Consume messages
|
|
156
|
+
docker exec redpanda rpk topic consume my-topic --offset start
|
|
157
|
+
|
|
158
|
+
# Delete topic
|
|
159
|
+
docker exec redpanda rpk topic delete my-topic
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
### Managing Consumer Groups
|
|
163
|
+
|
|
164
|
+
```bash
|
|
165
|
+
# List consumer groups
|
|
166
|
+
docker exec redpanda rpk group list
|
|
167
|
+
|
|
168
|
+
# Describe consumer group
|
|
169
|
+
docker exec redpanda rpk group describe my-group
|
|
170
|
+
|
|
171
|
+
# Delete consumer group
|
|
172
|
+
docker exec redpanda rpk group delete my-group
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
### Schema Registry
|
|
176
|
+
|
|
177
|
+
```bash
|
|
178
|
+
# List schemas
|
|
179
|
+
curl http://localhost:8081/subjects
|
|
180
|
+
|
|
181
|
+
# Get schema versions
|
|
182
|
+
curl http://localhost:8081/subjects/my-topic-value/versions
|
|
183
|
+
|
|
184
|
+
# Register schema
|
|
185
|
+
curl -X POST http://localhost:8081/subjects/my-topic-value/versions \
|
|
186
|
+
-H 'Content-Type: application/vnd.schemaregistry.v1+json' \
|
|
187
|
+
-d '{"schema": "{\"type\":\"record\",\"name\":\"User\",\"fields\":[{\"name\":\"name\",\"type\":\"string\"}]}"}'
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
## Application Integration
|
|
191
|
+
|
|
192
|
+
### Node.js Example
|
|
193
|
+
|
|
194
|
+
Install KafkaJS (Kafka client):
|
|
195
|
+
|
|
196
|
+
```bash
|
|
197
|
+
npm install kafkajs
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
**Producer (producer.js):**
|
|
201
|
+
|
|
202
|
+
```javascript
|
|
203
|
+
const { Kafka } = require('kafkajs');
|
|
204
|
+
|
|
205
|
+
const kafka = new Kafka({
|
|
206
|
+
clientId: 'my-app',
|
|
207
|
+
brokers: ['redpanda:9092'],
|
|
208
|
+
});
|
|
209
|
+
|
|
210
|
+
const producer = kafka.producer();
|
|
211
|
+
|
|
212
|
+
async function run() {
|
|
213
|
+
await producer.connect();
|
|
214
|
+
|
|
215
|
+
await producer.send({
|
|
216
|
+
topic: 'my-topic',
|
|
217
|
+
messages: [
|
|
218
|
+
{ key: 'key1', value: 'Hello Redpanda!' },
|
|
219
|
+
{ key: 'key2', value: 'Event streaming is awesome' },
|
|
220
|
+
],
|
|
221
|
+
});
|
|
222
|
+
|
|
223
|
+
console.log('Messages sent successfully');
|
|
224
|
+
await producer.disconnect();
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
run().catch(console.error);
|
|
228
|
+
```
|
|
229
|
+
|
|
230
|
+
**Consumer (consumer.js):**
|
|
231
|
+
|
|
232
|
+
```javascript
|
|
233
|
+
const { Kafka } = require('kafkajs');
|
|
234
|
+
|
|
235
|
+
const kafka = new Kafka({
|
|
236
|
+
clientId: 'my-app',
|
|
237
|
+
brokers: ['redpanda:9092'],
|
|
238
|
+
});
|
|
239
|
+
|
|
240
|
+
const consumer = kafka.consumer({ groupId: 'my-group' });
|
|
241
|
+
|
|
242
|
+
async function run() {
|
|
243
|
+
await consumer.connect();
|
|
244
|
+
await consumer.subscribe({ topic: 'my-topic', fromBeginning: true });
|
|
245
|
+
|
|
246
|
+
await consumer.run({
|
|
247
|
+
eachMessage: async ({ topic, partition, message }) => {
|
|
248
|
+
console.log({
|
|
249
|
+
topic,
|
|
250
|
+
partition,
|
|
251
|
+
offset: message.offset,
|
|
252
|
+
key: message.key?.toString(),
|
|
253
|
+
value: message.value?.toString(),
|
|
254
|
+
});
|
|
255
|
+
},
|
|
256
|
+
});
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
run().catch(console.error);
|
|
260
|
+
```
|
|
261
|
+
|
|
262
|
+
### Python Example
|
|
263
|
+
|
|
264
|
+
Install confluent-kafka (Kafka client):
|
|
265
|
+
|
|
266
|
+
```bash
|
|
267
|
+
pip install confluent-kafka
|
|
268
|
+
```
|
|
269
|
+
|
|
270
|
+
**Producer (producer.py):**
|
|
271
|
+
|
|
272
|
+
```python
|
|
273
|
+
from confluent_kafka import Producer
|
|
274
|
+
|
|
275
|
+
conf = {
|
|
276
|
+
'bootstrap.servers': 'redpanda:9092',
|
|
277
|
+
'client.id': 'my-app'
|
|
278
|
+
}
|
|
279
|
+
|
|
280
|
+
producer = Producer(conf)
|
|
281
|
+
|
|
282
|
+
def delivery_report(err, msg):
|
|
283
|
+
if err is not None:
|
|
284
|
+
print(f'Message delivery failed: {err}')
|
|
285
|
+
else:
|
|
286
|
+
print(f'Message delivered to {msg.topic()} [{msg.partition()}]')
|
|
287
|
+
|
|
288
|
+
# Produce messages
|
|
289
|
+
producer.produce('my-topic', key='key1', value='Hello Redpanda!', callback=delivery_report)
|
|
290
|
+
producer.produce('my-topic', key='key2', value='Event streaming is awesome', callback=delivery_report)
|
|
291
|
+
|
|
292
|
+
# Wait for messages to be delivered
|
|
293
|
+
producer.flush()
|
|
294
|
+
```
|
|
295
|
+
|
|
296
|
+
**Consumer (consumer.py):**
|
|
297
|
+
|
|
298
|
+
```python
|
|
299
|
+
from confluent_kafka import Consumer
|
|
300
|
+
|
|
301
|
+
conf = {
|
|
302
|
+
'bootstrap.servers': 'redpanda:9092',
|
|
303
|
+
'group.id': 'my-group',
|
|
304
|
+
'auto.offset.reset': 'earliest'
|
|
305
|
+
}
|
|
306
|
+
|
|
307
|
+
consumer = Consumer(conf)
|
|
308
|
+
consumer.subscribe(['my-topic'])
|
|
309
|
+
|
|
310
|
+
try:
|
|
311
|
+
while True:
|
|
312
|
+
msg = consumer.poll(1.0)
|
|
313
|
+
|
|
314
|
+
if msg is None:
|
|
315
|
+
continue
|
|
316
|
+
if msg.error():
|
|
317
|
+
print(f'Consumer error: {msg.error()}')
|
|
318
|
+
continue
|
|
319
|
+
|
|
320
|
+
print(f'Received message: {msg.value().decode("utf-8")}')
|
|
321
|
+
|
|
322
|
+
except KeyboardInterrupt:
|
|
323
|
+
pass
|
|
324
|
+
finally:
|
|
325
|
+
consumer.close()
|
|
326
|
+
```
|
|
327
|
+
|
|
328
|
+
### Go Example
|
|
329
|
+
|
|
330
|
+
Install sarama (Kafka client):
|
|
331
|
+
|
|
332
|
+
```bash
|
|
333
|
+
go get github.com/IBM/sarama
|
|
334
|
+
```
|
|
335
|
+
|
|
336
|
+
**Producer (producer.go):**
|
|
337
|
+
|
|
338
|
+
```go
|
|
339
|
+
package main
|
|
340
|
+
|
|
341
|
+
import (
|
|
342
|
+
"fmt"
|
|
343
|
+
"log"
|
|
344
|
+
|
|
345
|
+
"github.com/IBM/sarama"
|
|
346
|
+
)
|
|
347
|
+
|
|
348
|
+
func main() {
|
|
349
|
+
config := sarama.NewConfig()
|
|
350
|
+
config.Producer.Return.Successes = true
|
|
351
|
+
|
|
352
|
+
producer, err := sarama.NewSyncProducer([]string{"redpanda:9092"}, config)
|
|
353
|
+
if err != nil {
|
|
354
|
+
log.Fatal(err)
|
|
355
|
+
}
|
|
356
|
+
defer producer.Close()
|
|
357
|
+
|
|
358
|
+
message := &sarama.ProducerMessage{
|
|
359
|
+
Topic: "my-topic",
|
|
360
|
+
Key: sarama.StringEncoder("key1"),
|
|
361
|
+
Value: sarama.StringEncoder("Hello Redpanda!"),
|
|
362
|
+
}
|
|
363
|
+
|
|
364
|
+
partition, offset, err := producer.SendMessage(message)
|
|
365
|
+
if err != nil {
|
|
366
|
+
log.Fatal(err)
|
|
367
|
+
}
|
|
368
|
+
|
|
369
|
+
fmt.Printf("Message sent to partition %d at offset %d\n", partition, offset)
|
|
370
|
+
}
|
|
371
|
+
```
|
|
372
|
+
|
|
373
|
+
**Consumer (consumer.go):**
|
|
374
|
+
|
|
375
|
+
```go
|
|
376
|
+
package main
|
|
377
|
+
|
|
378
|
+
import (
|
|
379
|
+
"context"
|
|
380
|
+
"fmt"
|
|
381
|
+
"log"
|
|
382
|
+
|
|
383
|
+
"github.com/IBM/sarama"
|
|
384
|
+
)
|
|
385
|
+
|
|
386
|
+
func main() {
|
|
387
|
+
config := sarama.NewConfig()
|
|
388
|
+
config.Consumer.Return.Errors = true
|
|
389
|
+
|
|
390
|
+
consumer, err := sarama.NewConsumerGroup([]string{"redpanda:9092"}, "my-group", config)
|
|
391
|
+
if err != nil {
|
|
392
|
+
log.Fatal(err)
|
|
393
|
+
}
|
|
394
|
+
defer consumer.Close()
|
|
395
|
+
|
|
396
|
+
handler := ConsumerGroupHandler{}
|
|
397
|
+
|
|
398
|
+
ctx := context.Background()
|
|
399
|
+
for {
|
|
400
|
+
if err := consumer.Consume(ctx, []string{"my-topic"}, &handler); err != nil {
|
|
401
|
+
log.Fatal(err)
|
|
402
|
+
}
|
|
403
|
+
}
|
|
404
|
+
}
|
|
405
|
+
|
|
406
|
+
type ConsumerGroupHandler struct{}
|
|
407
|
+
|
|
408
|
+
func (h ConsumerGroupHandler) Setup(_ sarama.ConsumerGroupSession) error { return nil }
|
|
409
|
+
func (h ConsumerGroupHandler) Cleanup(_ sarama.ConsumerGroupSession) error { return nil }
|
|
410
|
+
|
|
411
|
+
func (h ConsumerGroupHandler) ConsumeClaim(session sarama.ConsumerGroupSession, claim sarama.ConsumerGroupClaim) error {
|
|
412
|
+
for message := range claim.Messages() {
|
|
413
|
+
fmt.Printf("Message: topic=%s partition=%d offset=%d key=%s value=%s\n",
|
|
414
|
+
message.Topic, message.Partition, message.Offset,
|
|
415
|
+
string(message.Key), string(message.Value))
|
|
416
|
+
session.MarkMessage(message, "")
|
|
417
|
+
}
|
|
418
|
+
return nil
|
|
419
|
+
}
|
|
420
|
+
```
|
|
421
|
+
|
|
422
|
+
### .NET Example
|
|
423
|
+
|
|
424
|
+
Install Confluent.Kafka:
|
|
425
|
+
|
|
426
|
+
```bash
|
|
427
|
+
dotnet add package Confluent.Kafka
|
|
428
|
+
```
|
|
429
|
+
|
|
430
|
+
**Producer (Producer.cs):**
|
|
431
|
+
|
|
432
|
+
```csharp
|
|
433
|
+
using Confluent.Kafka;
|
|
434
|
+
|
|
435
|
+
var config = new ProducerConfig
|
|
436
|
+
{
|
|
437
|
+
BootstrapServers = "redpanda:9092",
|
|
438
|
+
ClientId = "my-app"
|
|
439
|
+
};
|
|
440
|
+
|
|
441
|
+
using var producer = new ProducerBuilder<string, string>(config).Build();
|
|
442
|
+
|
|
443
|
+
var message = new Message<string, string>
|
|
444
|
+
{
|
|
445
|
+
Key = "key1",
|
|
446
|
+
Value = "Hello Redpanda!"
|
|
447
|
+
};
|
|
448
|
+
|
|
449
|
+
var result = await producer.ProduceAsync("my-topic", message);
|
|
450
|
+
Console.WriteLine($"Message delivered to {result.TopicPartitionOffset}");
|
|
451
|
+
```
|
|
452
|
+
|
|
453
|
+
**Consumer (Consumer.cs):**
|
|
454
|
+
|
|
455
|
+
```csharp
|
|
456
|
+
using Confluent.Kafka;
|
|
457
|
+
|
|
458
|
+
var config = new ConsumerConfig
|
|
459
|
+
{
|
|
460
|
+
BootstrapServers = "redpanda:9092",
|
|
461
|
+
GroupId = "my-group",
|
|
462
|
+
AutoOffsetReset = AutoOffsetReset.Earliest
|
|
463
|
+
};
|
|
464
|
+
|
|
465
|
+
using var consumer = new ConsumerBuilder<string, string>(config).Build();
|
|
466
|
+
consumer.Subscribe("my-topic");
|
|
467
|
+
|
|
468
|
+
var cts = new CancellationTokenSource();
|
|
469
|
+
Console.CancelKeyPress += (_, e) => {
|
|
470
|
+
e.Cancel = true;
|
|
471
|
+
cts.Cancel();
|
|
472
|
+
};
|
|
473
|
+
|
|
474
|
+
try
|
|
475
|
+
{
|
|
476
|
+
while (true)
|
|
477
|
+
{
|
|
478
|
+
var result = consumer.Consume(cts.Token);
|
|
479
|
+
Console.WriteLine($"Received: {result.Message.Value}");
|
|
480
|
+
}
|
|
481
|
+
}
|
|
482
|
+
catch (OperationCanceledException)
|
|
483
|
+
{
|
|
484
|
+
consumer.Close();
|
|
485
|
+
}
|
|
486
|
+
```
|
|
487
|
+
|
|
488
|
+
## Use Cases
|
|
489
|
+
|
|
490
|
+
- **Event Streaming** - Real-time event processing and stream processing
|
|
491
|
+
- **Log Aggregation** - Centralized logging from multiple services
|
|
492
|
+
- **Data Pipelines** - Move data between systems with exactly-once semantics
|
|
493
|
+
- **Metrics Collection** - High-throughput metrics streaming
|
|
494
|
+
- **Change Data Capture** - Stream database changes to other systems
|
|
495
|
+
- **Event Sourcing** - Store and replay application events
|
|
496
|
+
- **Message Queuing** - Kafka-compatible messaging (alternative to RabbitMQ)
|
|
497
|
+
- **Real-Time Analytics** - Process streaming data in real-time
|
|
498
|
+
|
|
499
|
+
**Integrates well with:**
|
|
500
|
+
|
|
501
|
+
- Language overlays (Node.js, Python, Go, .NET, Java) with Kafka clients
|
|
502
|
+
- Observability stack (OTEL Collector, Prometheus) for metrics and monitoring
|
|
503
|
+
- Microservice architectures requiring event streaming
|
|
504
|
+
|
|
505
|
+
## Redpanda vs Kafka
|
|
506
|
+
|
|
507
|
+
| Feature | Redpanda | Apache Kafka |
|
|
508
|
+
| --------------------- | -------------------------- | ----------------------------- |
|
|
509
|
+
| **Zookeeper** | ❌ Not required | ✅ Required (adds complexity) |
|
|
510
|
+
| **Resource Usage** | ✅ Lower (1-2 GB RAM) | ⚠️ Higher (4+ GB RAM) |
|
|
511
|
+
| **Startup Time** | ✅ Fast (~5 seconds) | ⚠️ Slower (~30 seconds) |
|
|
512
|
+
| **API Compatibility** | ✅ 100% Kafka compatible | ✅ Native |
|
|
513
|
+
| **Management UI** | ✅ Modern Redpanda Console | ⚠️ Requires separate tools |
|
|
514
|
+
| **Schema Registry** | ✅ Built-in | ⚠️ Separate service |
|
|
515
|
+
| **Production Ready** | ✅ Yes | ✅ Yes |
|
|
516
|
+
| **Local Development** | ✅ Optimized | ⚠️ Resource heavy |
|
|
517
|
+
|
|
518
|
+
**Recommendation:** Use Redpanda for local development, testing, and smaller deployments. It's faster, lighter, and easier to operate than Kafka while maintaining full compatibility.
|
|
519
|
+
|
|
520
|
+
## Messaging Patterns
|
|
521
|
+
|
|
522
|
+
### Event Streaming
|
|
523
|
+
|
|
524
|
+
```
|
|
525
|
+
Producer1 → Topic (partitioned) → Consumer Group 1
|
|
526
|
+
Producer2 → → Consumer Group 2
|
|
527
|
+
Producer3 → → Consumer Group 3
|
|
528
|
+
```
|
|
529
|
+
|
|
530
|
+
Multiple consumers process events independently with ordering guarantees per partition.
|
|
531
|
+
|
|
532
|
+
### Event Sourcing
|
|
533
|
+
|
|
534
|
+
```
|
|
535
|
+
Commands → Event Store Topic → Event Handlers
|
|
536
|
+
→ Projections
|
|
537
|
+
→ Snapshots
|
|
538
|
+
```
|
|
539
|
+
|
|
540
|
+
Store all state changes as events for replay and audit trail.
|
|
541
|
+
|
|
542
|
+
### Change Data Capture
|
|
543
|
+
|
|
544
|
+
```
|
|
545
|
+
Database → CDC Connector → Kafka Topic → Downstream Systems
|
|
546
|
+
```
|
|
547
|
+
|
|
548
|
+
Stream database changes in real-time.
|
|
549
|
+
|
|
550
|
+
### Stream Processing
|
|
551
|
+
|
|
552
|
+
```
|
|
553
|
+
Input Topic → Stream Processor → Output Topic
|
|
554
|
+
(filter, map,
|
|
555
|
+
aggregate,
|
|
556
|
+
join)
|
|
557
|
+
```
|
|
558
|
+
|
|
559
|
+
Transform and enrich events in real-time.
|
|
560
|
+
|
|
561
|
+
## Troubleshooting
|
|
562
|
+
|
|
563
|
+
### Service Not Starting
|
|
564
|
+
|
|
565
|
+
**Check logs:**
|
|
566
|
+
|
|
567
|
+
```bash
|
|
568
|
+
docker logs redpanda
|
|
569
|
+
docker logs redpanda-console
|
|
570
|
+
```
|
|
571
|
+
|
|
572
|
+
**Common issues:**
|
|
573
|
+
|
|
574
|
+
- Port conflicts (9092, 8080, or other ports in use)
|
|
575
|
+
- Insufficient memory (Redpanda needs at least 1 GB)
|
|
576
|
+
- Volume permission issues
|
|
577
|
+
|
|
578
|
+
### Cannot Connect to Redpanda
|
|
579
|
+
|
|
580
|
+
**Verify service is running:**
|
|
581
|
+
|
|
582
|
+
```bash
|
|
583
|
+
docker ps | grep redpanda
|
|
584
|
+
```
|
|
585
|
+
|
|
586
|
+
**Check health:**
|
|
587
|
+
|
|
588
|
+
```bash
|
|
589
|
+
docker exec redpanda rpk cluster health
|
|
590
|
+
```
|
|
591
|
+
|
|
592
|
+
**Test connectivity:**
|
|
593
|
+
|
|
594
|
+
```bash
|
|
595
|
+
# From dev container
|
|
596
|
+
curl http://redpanda:9644/v1/cluster/health_overview
|
|
597
|
+
```
|
|
598
|
+
|
|
599
|
+
### Console UI Not Loading
|
|
600
|
+
|
|
601
|
+
**Check console logs:**
|
|
602
|
+
|
|
603
|
+
```bash
|
|
604
|
+
docker logs redpanda-console
|
|
605
|
+
```
|
|
606
|
+
|
|
607
|
+
**Verify Redpanda is healthy:**
|
|
608
|
+
The console depends on Redpanda being fully started.
|
|
609
|
+
|
|
610
|
+
**Check port forwarding:**
|
|
611
|
+
Ensure port 8080 is forwarded in devcontainer configuration.
|
|
612
|
+
|
|
613
|
+
### Messages Not Being Consumed
|
|
614
|
+
|
|
615
|
+
**Check consumer group status:**
|
|
616
|
+
|
|
617
|
+
```bash
|
|
618
|
+
docker exec redpanda rpk group describe my-group
|
|
619
|
+
```
|
|
620
|
+
|
|
621
|
+
**Verify topic exists:**
|
|
622
|
+
|
|
623
|
+
```bash
|
|
624
|
+
docker exec redpanda rpk topic list
|
|
625
|
+
```
|
|
626
|
+
|
|
627
|
+
**Check topic configuration:**
|
|
628
|
+
|
|
629
|
+
```bash
|
|
630
|
+
docker exec redpanda rpk topic describe my-topic
|
|
631
|
+
```
|
|
632
|
+
|
|
633
|
+
### Performance Issues
|
|
634
|
+
|
|
635
|
+
**Monitor cluster health:**
|
|
636
|
+
|
|
637
|
+
```bash
|
|
638
|
+
docker exec redpanda rpk cluster health
|
|
639
|
+
```
|
|
640
|
+
|
|
641
|
+
**Increase memory allocation:**
|
|
642
|
+
Edit `docker-compose.yml` and increase `--memory` flag.
|
|
643
|
+
|
|
644
|
+
**Check partition distribution:**
|
|
645
|
+
|
|
646
|
+
```bash
|
|
647
|
+
docker exec redpanda rpk topic describe my-topic
|
|
648
|
+
```
|
|
649
|
+
|
|
650
|
+
## Security Considerations
|
|
651
|
+
|
|
652
|
+
⚠️ **Development Configuration:**
|
|
653
|
+
|
|
654
|
+
- No authentication enabled by default
|
|
655
|
+
- Suitable for local development only
|
|
656
|
+
- Do not expose ports publicly
|
|
657
|
+
|
|
658
|
+
**Production Recommendations:**
|
|
659
|
+
|
|
660
|
+
- Enable SASL authentication
|
|
661
|
+
- Use TLS for encryption
|
|
662
|
+
- Configure ACLs for authorization
|
|
663
|
+
- Enable audit logging
|
|
664
|
+
- Regularly update Redpanda version
|
|
665
|
+
- Monitor security advisories
|
|
666
|
+
|
|
667
|
+
**Enabling Authentication (production):**
|
|
668
|
+
Redpanda supports SASL/SCRAM authentication. See [Redpanda Security Documentation](https://docs.redpanda.com/docs/manage/security/) for configuration details.
|
|
669
|
+
|
|
670
|
+
## Related Overlays
|
|
671
|
+
|
|
672
|
+
**Alternative Messaging Systems:**
|
|
673
|
+
|
|
674
|
+
- `rabbitmq` - AMQP message broker (better for task queues and RPC)
|
|
675
|
+
- `nats` - Lightweight pub/sub (faster but simpler than Kafka)
|
|
676
|
+
|
|
677
|
+
**Complementary Overlays:**
|
|
678
|
+
|
|
679
|
+
- Language overlays - Application development with Kafka clients
|
|
680
|
+
- `otel-collector` - Distributed tracing and metrics
|
|
681
|
+
- `prometheus` - Metrics collection from Redpanda
|
|
682
|
+
- `grafana` - Visualization of streaming metrics
|
|
683
|
+
|
|
684
|
+
## Additional Resources
|
|
685
|
+
|
|
686
|
+
- [Official Redpanda Documentation](https://docs.redpanda.com/)
|
|
687
|
+
- [Redpanda vs Kafka Comparison](https://redpanda.com/blog/redpanda-vs-apache-kafka)
|
|
688
|
+
- [Redpanda Console Documentation](https://docs.redpanda.com/docs/manage/console/)
|
|
689
|
+
- [rpk CLI Reference](https://docs.redpanda.com/docs/reference/rpk/)
|
|
690
|
+
- [Kafka Compatibility](https://docs.redpanda.com/docs/reference/kafka-api/)
|
|
691
|
+
|
|
692
|
+
## Notes
|
|
693
|
+
|
|
694
|
+
- Redpanda is 100% compatible with Kafka clients and tools
|
|
695
|
+
- No Zookeeper required - simpler architecture
|
|
696
|
+
- Optimized for low latency and high throughput
|
|
697
|
+
- Built-in Schema Registry compatible with Confluent Schema Registry
|
|
698
|
+
- Supports Kafka transactions and exactly-once semantics
|
|
699
|
+
- Default retention is 7 days (configurable per topic)
|
|
700
|
+
- Single-node mode suitable for development
|
|
701
|
+
- Console UI provides modern, intuitive interface
|
|
702
|
+
- Written in C++ for performance (vs Java for Kafka)
|
|
703
|
+
- Supports compacted topics for key-value stores
|