Skip to content

Commit 5a62a70

Browse files
authored
Add project documentation for the developer-quickstart (#10)
Introduce Hugo-compatible docs covering installation, prerequisites, architecture, accessing services, overlays, metrics, troubleshooting and uninstall. * Add docs folder for content pages and overlays subsection * Add docs/preview.sh script for local Hugo preview and static builds * Add local preview instructions to README.md * Move repository structure section from README into docs * Update .gitignore to exclude .docs-preview/ directory * Refactor readme so detailed installation instructions point to docs Signed-off-by: Thomas Cooper <code@tomcooper.dev>
1 parent 64c256c commit 5a62a70

13 files changed

Lines changed: 954 additions & 228 deletions

.gitignore

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,7 @@
66
*.iml
77

88
### Mac OS ###
9-
**.DS_Store
9+
**.DS_Store
10+
11+
# Hugo local preview site (generated by docs/preview.sh)
12+
.docs-preview/

README.md

Lines changed: 39 additions & 227 deletions
Original file line numberDiff line numberDiff line change
@@ -6,22 +6,17 @@ A Kustomize-based repository for deploying the StreamsHub event-streaming stack
66
77
## What Gets Deployed
88

9-
| Component | Namespace | Description |
10-
|-----------|-----------|-------------|
11-
| Strimzi Kafka Operator | `strimzi` | Manages Kafka clusters via CRDs |
12-
| Kafka cluster (`dev-cluster`) | `kafka` | Single-node Kafka for development |
13-
| Apicurio Registry Operator | `apicurio-registry` | Manages schema registry instances |
14-
| Apicurio Registry instance | `apicurio-registry` | In-memory schema registry |
15-
| StreamsHub Console Operator | `streamshub-console` | Manages console instances |
16-
| StreamsHub Console instance | `streamshub-console` | Web UI for Kafka management |
9+
The stack deploys Strimzi Kafka, Apicurio Registry, and StreamsHub Console operators along with their operand instances.
10+
Optional [overlays](docs/overlays/_index.md) add components such as Prometheus metrics.
1711

18-
> **Optional:** The [metrics overlay](#install-with-metrics) adds Prometheus Operator, a Prometheus instance, and Kafka metrics collection via PodMonitors.
12+
See [What Gets Deployed](docs/_index.md#what-gets-deployed) for the full component breakdown.
1913

2014
## Prerequisites
2115

22-
- `kubectl` v1.27 or later (for Kustomize v5.0 `labels` transformer support)
23-
- A running Kubernetes cluster (minikube, KIND, etc.)
24-
- An Ingress controller for StreamsHub Console access (e.g. `minikube addons enable ingress`)
16+
- `kubectl` v1.27 or later
17+
- A running Kubernetes cluster (minikube, KIND, etc.) with an ingress controller
18+
19+
See [Prerequisites](docs/prerequisites.md) for full requirements and cluster setup instructions.
2520

2621
## Quick-Start Install
2722

@@ -33,232 +28,75 @@ curl -sL https://raw.githubusercontent.com/streamshub/developer-quickstart/main/
3328

3429
This script installs operators, waits for them to become ready, then deploys the operands.
3530

36-
### Configuration
37-
38-
The install script accepts the following environment variables:
39-
40-
| Variable | Default | Description |
41-
|----------|---------|-------------|
42-
| `REPO` | `streamshub/developer-quickstart` | GitHub repository path |
43-
| `REF` | `main` | Git ref, branch, or tag |
44-
| `OVERLAY` | *(empty)* | Overlay to apply (e.g. `metrics`) |
45-
| `TIMEOUT` | `120s` | `kubectl wait` timeout |
46-
47-
Example with a pinned version:
48-
49-
```shell
50-
curl -sL https://raw.githubusercontent.com/streamshub/developer-quickstart/main/install.sh | REF=v1.0.0 bash
51-
```
52-
53-
### Install with Metrics
54-
55-
Deploy the stack with Prometheus metrics collection:
31+
To install with an overlay (e.g. metrics):
5632

5733
```shell
5834
curl -sL https://raw.githubusercontent.com/streamshub/developer-quickstart/main/install.sh | OVERLAY=metrics bash
5935
```
6036

61-
This adds the Prometheus Operator and a Prometheus instance (namespace: `monitoring`), enables Kafka metrics via [Strimzi Metrics Reporter](https://strimzi.io/docs/operators/latest/deploying#proc-metrics-kafka-str), and wires Console to display metrics.
62-
63-
## Manual Install
64-
65-
If you prefer to control each step, the stack is installed in two phases:
66-
67-
### Phase 1 — Operators and CRDs
68-
69-
```shell
70-
kubectl apply -k 'https://github.com/streamshub/developer-quickstart//overlays/core/base?ref=main'
71-
```
72-
73-
Wait for the operators to become ready:
74-
75-
```shell
76-
kubectl wait --for=condition=Available deployment/strimzi-cluster-operator -n strimzi --timeout=120s
77-
kubectl wait --for=condition=Available deployment/apicurio-registry-operator -n apicurio-registry --timeout=120s
78-
kubectl wait --for=condition=Available deployment/streamshub-console-operator -n streamshub-console --timeout=120s
79-
```
80-
81-
### Phase 2 — Operands
37+
See [Installation](docs/installation.md) for configuration options, manual install steps, and installing from a local checkout.
8238

83-
```shell
84-
kubectl apply -k 'https://github.com/streamshub/developer-quickstart//overlays/core/stack?ref=main'
85-
```
39+
## Accessing Services
8640

87-
### Manual Install with Metrics
88-
89-
To include the metrics overlay, use the `overlays/metrics` paths instead of `overlays/core`.
41+
After installation, use port-forwarding to access the Console:
9042

9143
```shell
92-
# Phase 1
93-
kubectl create -k 'https://github.com/streamshub/developer-quickstart//overlays/metrics/base?ref=main'
94-
kubectl wait --for=condition=Available deployment/prometheus-operator -n monitoring --timeout=120s
95-
kubectl wait --for=condition=Available deployment/strimzi-cluster-operator -n strimzi --timeout=120s
96-
kubectl wait --for=condition=Available deployment/apicurio-registry-operator -n apicurio-registry --timeout=120s
97-
kubectl wait --for=condition=Available deployment/streamshub-console-operator -n streamshub-console --timeout=120s
98-
99-
# Phase 2
100-
kubectl apply -k 'https://github.com/streamshub/developer-quickstart//overlays/metrics/stack?ref=main'
44+
kubectl port-forward -n streamshub-console svc/streamshub-console-console-service 8090:80
10145
```
10246

103-
## Accessing the Console
104-
105-
### Minikube
47+
Open [http://localhost:8090](http://localhost:8090) in your browser.
10648

107-
When using minikube, (if you didn't enable it when you created the minikube cluster) enable the ingress addon and run `minikube tunnel`:
108-
109-
```bash
110-
minikube addons enable ingress
111-
minikube tunnel
112-
```
113-
114-
Then use port-forwarding to access the console:
115-
116-
```bash
117-
kubectl port-forward -n streamshub-console svc/streamshub-console-console-service 8080:80
118-
```
119-
120-
Open [http://localhost:8080](http://localhost:8080) in your browser.
121-
122-
### Kind
123-
124-
When using Kind, create the cluster with ingress-ready port mappings:
125-
126-
```bash
127-
cat <<EOF | kind create cluster --config=-
128-
kind: Cluster
129-
apiVersion: kind.x-k8s.io/v1alpha4
130-
nodes:
131-
- role: control-plane
132-
kubeadmConfigPatches:
133-
- |
134-
kind: InitConfiguration
135-
nodeRegistration:
136-
kubeletExtraArgs:
137-
node-labels: "ingress-ready=true"
138-
extraPortMappings:
139-
- containerPort: 80
140-
hostPort: 80
141-
protocol: TCP
142-
- containerPort: 443
143-
hostPort: 443
144-
protocol: TCP
145-
EOF
146-
```
147-
148-
Then deploy an ingress controller (e.g. ingress-nginx):
149-
150-
```bash
151-
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.12.1/deploy/static/provider/kind/deploy.yaml
152-
kubectl wait --namespace ingress-nginx \
153-
--for=condition=Ready pod \
154-
--selector=app.kubernetes.io/component=controller \
155-
--timeout=120s
156-
```
157-
158-
Use port-forwarding to access the console:
159-
160-
```bash
161-
kubectl port-forward -n streamshub-console svc/streamshub-console-console-service 8080:80
162-
```
163-
164-
Open [http://localhost:8080](http://localhost:8080) in your browser.
49+
See [Accessing Services](docs/accessing-services.md) for Kafka, Apicurio Registry access, and platform-specific instructions.
16550

16651
## Teardown
16752

168-
### Using the Uninstall Script
169-
170-
The uninstall script handles safe teardown with shared-cluster safety checks:
53+
Remove the quick-start stack:
17154

17255
```shell
17356
curl -sL https://raw.githubusercontent.com/streamshub/developer-quickstart/main/uninstall.sh | bash
174-
175-
# If installed with the metrics overlay:
176-
curl -sL https://raw.githubusercontent.com/streamshub/developer-quickstart/main/uninstall.sh | OVERLAY=metrics bash
17757
```
17858

179-
The script:
180-
1. Deletes operand custom resources and waits for finalizers to complete
181-
2. Checks each operator group for non-quick-start CRs on the cluster
182-
3. Fully removes operator groups with no shared CRDs
183-
4. For shared operator groups, removes only the operator deployment (retaining CRDs)
184-
5. Reports any retained groups and remaining resources
185-
186-
### Manual Teardown
187-
188-
**Phase 1 — Delete operands:**
189-
190-
```shell
191-
kubectl delete -k 'https://github.com/streamshub/developer-quickstart//overlays/core/stack?ref=main'
192-
```
193-
194-
Wait for all custom resources to be fully removed before proceeding.
195-
196-
**Phase 2 — Delete operators and CRDs:**
197-
198-
> **Warning:** On shared clusters, deleting CRDs will cascade-delete ALL custom resources of that type cluster-wide. Check for non-quick-start resources first:
199-
> ```shell
200-
> kubectl get kafkas -A --selector='!app.kubernetes.io/part-of=streamshub-developer-quickstart'
201-
> ```
202-
203-
```shell
204-
kubectl delete -k 'https://github.com/streamshub/developer-quickstart//overlays/core/base?ref=main'
205-
```
59+
See [Uninstallation](docs/uninstallation.md) for metrics overlay uninstall, manual teardown, and shared-cluster safety details.
20660

207-
For the metrics overlay, use `overlays/metrics/base` and `overlays/metrics/stack` instead.
61+
## Documentation
20862

209-
### Finding Quick-Start Resources
63+
Full documentation is available in the [`docs/`](docs/) directory:
21064

211-
All resources carry the label `app.kubernetes.io/part-of=streamshub-developer-quickstart`:
212-
213-
```shell
214-
kubectl get all -A -l app.kubernetes.io/part-of=streamshub-developer-quickstart
215-
kubectl get crds,clusterroles,clusterrolebindings -l app.kubernetes.io/part-of=streamshub-developer-quickstart
216-
```
65+
- [Prerequisites](docs/prerequisites.md) — requirements and cluster setup
66+
- [Installation](docs/installation.md) — all install methods, configuration, and local development
67+
- [Accessing Services](docs/accessing-services.md) — Console, Kafka, and Registry access
68+
- [Architecture](docs/architecture.md) — deployment model, Kustomize structure, versioning
69+
- [Overlays](docs/overlays/_index.md) — optional extensions (metrics, etc.)
70+
- [Uninstallation](docs/uninstallation.md) — safe teardown on any cluster
71+
- [Troubleshooting](docs/troubleshooting.md) — common issues and diagnostics
21772

21873
## Development
21974

220-
### Updating Component Versions
221-
222-
Use the `update-version.sh` script to update component versions:
75+
For development workflows including updating component versions and testing scripts locally, see:
76+
- [Updating Component Versions](docs/architecture.md#updating-component-versions)
77+
- [Install from a Local Checkout](docs/installation.md#install-from-a-local-checkout)
22378

224-
```shell
225-
# List available versions
226-
./update-version.sh --list strimzi
227-
228-
# Preview changes
229-
./update-version.sh --dry-run strimzi 0.52.0
79+
### Previewing Documentation Locally
23080

231-
# Check if a release exists
232-
./update-version.sh --check apicurio-registry 3.2.0
81+
The `docs/` directory contains the project documentation. To preview it locally with Hugo:
23382

234-
# Update a component
235-
./update-version.sh strimzi 0.52.0
83+
```shell
84+
./docs/preview.sh
23685
```
23786

238-
Supported components: `strimzi`, `apicurio-registry`, `streamshub-console`, `prometheus-operator`
239-
240-
### Testing scripts locally
87+
This starts a local server at [http://localhost:1313/docs/](http://localhost:1313/docs/) with live-reload.
88+
Press `Ctrl+C` to stop.
24189

242-
When developing changes to the kustomization files, use the `LOCAL_DIR` environment
243-
variable to point the install and uninstall scripts at your local checkout instead
244-
of the remote GitHub repository:
90+
To generate static HTML instead:
24591

24692
```shell
247-
# Install from local repo
248-
LOCAL_DIR=. ./install.sh
249-
250-
# Uninstall from local repo
251-
LOCAL_DIR=. ./uninstall.sh
93+
./docs/preview.sh build
25294
```
25395

254-
When `LOCAL_DIR` is set, `REPO` and `REF` are ignored — the scripts resolve
255-
kustomization paths relative to the given directory.
256-
257-
You can also provide an absolute path:
96+
The output is written to `.docs-preview/public/`.
25897

259-
```shell
260-
LOCAL_DIR=/home/user/repos/developer-quickstart ./install.sh
261-
```
98+
**Requirements:** `hugo`, `git`, and `go` must be installed.
99+
The script handles theme fetching and site configuration automatically.
262100

263101
## Testing
264102

@@ -327,29 +165,3 @@ The scripts accept configuration via environment variables:
327165
| `CONDITION_OVERRIDES` | VerifyInstall | *(empty)* | Space-separated `apiGroup=Condition` pairs |
328166
| `PLATFORMS` | ComputeTestMatrix | `minikube kind` | Space-separated list of target platforms |
329167
| `LOG_TAIL_LINES` | Debug | `30` | Number of log lines to tail per pod |
330-
331-
## Repository Structure
332-
333-
```
334-
components/ # Reusable Kustomize components
335-
├── core/ # Core stack component
336-
│ ├── base/ # Operators & CRDs
337-
│ │ ├── strimzi-operator/ # Strimzi Kafka Operator
338-
│ │ ├── apicurio-registry-operator/ # Apicurio Registry Operator
339-
│ │ └── streamshub-console-operator/ # StreamsHub Console Operator
340-
│ └── stack/ # Operands (Custom Resources)
341-
│ ├── kafka/ # Single-node Kafka cluster
342-
│ ├── apicurio-registry/ # In-memory registry instance
343-
│ └── streamshub-console/ # Console instance
344-
└── metrics/ # Prometheus metrics component
345-
├── base/ # Prometheus Operator
346-
└── stack/ # Prometheus instance, PodMonitors, patches
347-
348-
overlays/ # Deployable configurations
349-
├── core/ # Default install (core only)
350-
│ ├── base/ # Phase 1: Operators & CRDs
351-
│ └── stack/ # Phase 2: Operands
352-
└── metrics/ # Core + Prometheus metrics
353-
├── base/ # Phase 1: Operators & CRDs + Prometheus Operator
354-
└── stack/ # Phase 2: Operands + Prometheus instance & monitors
355-
```

docs/_index.md

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
+++
2+
title = 'Developer Quick-Start'
3+
linkTitle = 'Developer Quick-Start'
4+
weight = 0
5+
[[cascade]]
6+
type = 'docs'
7+
+++
8+
9+
# Developer Quick-Start
10+
11+
Please make sure you have all the [prerequisites](prerequisites.md) covered first.
12+
Then you can deploy a complete, open-source, event-streaming stack on your local Kubernetes cluster (e.g. MiniKube, KIND) with a single command:
13+
14+
```shell
15+
curl -sL https://raw.githubusercontent.com/streamshub/developer-quickstart/main/install.sh | bash
16+
```
17+
18+
The script installs operators, waits for readiness, then deploys all services.
19+
The full stack is typically ready in under five minutes.
20+
21+
> **Note:** This is a **development-only** configuration. Resource limits, security settings, and storage are not suitable for production use.
22+
23+
## What Gets Deployed
24+
25+
| Component | Namespace | Description |
26+
|-------------------------------|----------------------|-----------------------------------|
27+
| Strimzi Kafka Operator | `strimzi` | Manages Kafka clusters via CRDs |
28+
| Kafka cluster (`dev-cluster`) | `kafka` | Single-node Kafka for development |
29+
| Apicurio Registry Operator | `apicurio-registry` | Manages schema registry instances |
30+
| Apicurio Registry | `apicurio-registry` | In-memory schema registry |
31+
| StreamsHub Console Operator | `streamshub-console` | Manages console instances |
32+
| StreamsHub Console | `streamshub-console` | Web UI for Kafka management |
33+
34+
Optional [overlays](overlays/_index.md) can extend the core stack with additional components such as Prometheus metrics. Install with an overlay by setting the `OVERLAY` variable:
35+
36+
```shell
37+
curl -sL https://raw.githubusercontent.com/streamshub/developer-quickstart/main/install.sh | OVERLAY=<name> bash
38+
```
39+
40+
## Next Steps
41+
42+
- [Prerequisites](prerequisites.md) — what you need before installing.
43+
- [Installation](installation.md) — all installation methods and options.
44+
- [Accessing Services](accessing-services.md) — open the Console, connect to Kafka.
45+
- [Overlays](overlays/) - look at the what additional components and features can be added with the provided overlays.
46+
- [Uninstallation](uninstallation.md) — safe teardown on any cluster.
47+
- [Troubleshooting](troubleshooting.md) - help with common issues.

0 commit comments

Comments
 (0)