@@ -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
3429This 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
5834curl -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
17356curl -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- ```
0 commit comments