|
| 1 | +# fabrikate-kafka-sample |
| 2 | + |
| 3 | +This goal of this Fabrikate defintion is to provide an end to end example of running a secure stateful workload with backed by virtual storage on a single Kubernetes cluster. |
| 4 | + |
| 5 | +## Overview |
| 6 | + |
| 7 | + |
| 8 | +The following components are deployed on to your AKS cluster: |
| 9 | +* Strimzi Kafka Operator (including Kafka Connect) |
| 10 | +* Confluent Schema Registry |
| 11 | +* Prometheus |
| 12 | +* Grafana |
| 13 | +* Stork & Portworx (Disabled by Default) |
| 14 | + |
| 15 | + |
| 16 | +## Installation Instructions |
| 17 | +1. Follow [instructions](/portworx-manual/README.md#setting-up-portworx-manually) to install Portworx manually on your Kubernetes cluster |
| 18 | +2. Use [Fabrikate](https://github.com/Microsoft/fabrikate) to install and generate this _high level definition_ to produce manifest yaml |
| 19 | +3. Install [Grafana dashboards](#setting-up-grafana-dashboards) to build your "pane of glass" to enable observability. |
| 20 | +4. Run [tests](/test/README.md) to validate your installation |
| 21 | + |
| 22 | +## Validations |
| 23 | + |
| 24 | +The repository provides multiple tests to help prove the end to end goal. We have tests that execute from within the cluster and from outside the cluster. Additionally load tests targeted at the virtual storage layer and end to end layer using TLS mutual authentication. |
| 25 | + |
| 26 | +## Caveats |
| 27 | + |
| 28 | +Currently Portworx must be installed manually due to the lack of a Helm chart. Please refer to [instructions](#installation-instructions) on how to successfuly install this sample. |
| 29 | + |
| 30 | +## Future Work |
| 31 | + |
| 32 | +- [ ] Work with Portworx on Helm Chart |
| 33 | +- [ ] Use a secret store type target of Key Vault for Portworx Volume Secret |
| 34 | +- [ ] Confifgure TLS & SSL with PX-Secure for Portworx Pods |
| 35 | +- [ ] User authentication for accessing Portworx volumes |
| 36 | +- [ ] Get past possible VNET issues in Terraform template |
| 37 | + |
| 38 | +## Additional Notes |
| 39 | + |
| 40 | +This sample also sets up a default scalable Kafka Cluster configuration (see [manifests/kafka-cluster.yaml](./manifests/kafka-cluster.yaml)) with persistent volumes, three replicas and TLS mutual authentication. |
| 41 | + |
| 42 | +It also includes Kubernetes network policies to restrict traffic to the Kafka cluster (see [manifests/kafka-networkpolicy.yaml](./manifests/kafka-networkpolicies.yaml)). Only TLS traffic is permitted to the Kafka cluster. Plaintext is only permitted for the Confluent Schema Registry app. |
| 43 | + |
| 44 | +## Setting Up Grafana Dashboards |
| 45 | + |
| 46 | +The sample configuration provided does not expose grafana and prometheus metrics through an externally accessible IP. You may choose to create an external IP. Alternatively, you can connect to your cluster and port forward the grafana dashboard. |
| 47 | + |
| 48 | +`kubectl port-forward [POD NAME HERE grafana] -n grafana 3000` |
| 49 | + |
| 50 | +Browse to `localhost:3000/dashboard/import`. |
| 51 | + |
| 52 | +There are six dashboards [Kafka, Kafka Connect, Zookeeper Metrics, Portworx Node, Portworx Volume, and Portworx Cluster] included in the `dashboards/` folder. You can either copy paste the content of the json files or use the "Upload .json File". |
0 commit comments