Skip to content
Open
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
3 changes: 3 additions & 0 deletions 07-deployment-von-apache-kafka-in-kubernetes/helm/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
charts/
kafdrop/
Ablauf.md
168 changes: 168 additions & 0 deletions 07-deployment-von-apache-kafka-in-kubernetes/helm/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,168 @@
# Deployment von Apache Kafka in Kubernetes
Information about deployment possibilities for apache Kafka in kubernetes.

## Requirements
The following is required:
- a kubernetes cluster
- [kubectl](https://kubernetes.io/docs/tasks/tools/)
- [helm](https://helm.sh/docs/intro/install/)
- [kafkactl](https://github.com/deviceinsight/kafkactl)
- [kafkadrop](https://github.com/obsidiandynamics/kafdrop)

### kafkactl configuration
Create kafkactl config at `~/.config/kafkactl/config.yaml` (Ubuntu):
```yaml
contexts:
minikube:
brokers:
- minikube:30000
default:
brokers:
- localhost:9092
current-context: minikube
```
### hosts
If you want to use the example snippets of this Repository you must add an entry to `etc/hosts` in which you specify the minikube ip as follows:

```ini
<minikube_IP> minikube
```

>**Note:** To get `<minikube_IP>`run: `minikube ip` in termninal


## Kubernetes

Check if a cluster is available:

```bash
kubectl get nodes
```

## Install kafka bitnami helm chart
helm charts können auf drei Arten installiert werden:

### 1. Via chart repository
Add repo for bitnami charts:
```bash
helm repo add bitnami https://charts.bitnami.com/bitnami
```

Update repo:
```bash
helm repo update
```

Create namespace:
```bash
kubectl create namespace kafka
```

Install chart:
```bash
helm install -n kafka kafka bitnami/kafka
```
Check deployment:
```bash
kubectl -n kafka get all
```

### 2. Via unpacked chart directory / Source Code
Get the code of the chart:
```bash
git clone https://github.com/bitnami/charts.git
```

Create namespace:
```bash
kubectl create namespace kafka
```

Build dependencies:
```bash
helm dependency build charts/bitnami/kafka
```

Configure `my-values.yaml`:
```yaml
externalAccess:
enabled: true
service:
type: "NodePort"
domain: "minikube"
nodePorts: [ "30000" ]
autoDiscovery:
enabled: true
serviceAccount:
create: true
rbac:
create: true
deleteTopicEnable: true
```
Install helm chart:
```bash
helm -n kafka install kafka charts/bitnatmi/kafka -f my-values
```

### 3. Via local chart archive
Get the code of the chart:
```bash
git clone https://github.com/bitnami/charts.git
```

Create namespace:
```bash
kubectl create namespace kafka
```

Build dependencies:
```bash
helm dependency build charts/bitnami/kafka
```

Package chart:
```bash
helm package charts/bitnami/kafka
```

Install chart:
```bash
helm -n kafka install kafka kafka-12.19.2.tgz -f my-values.yaml
```


## Kafka
Verify connection:
```bash
kafkactl get topics
```

Create Topic:
```bash
kafkactl create topic deeptalk
```

Produce Message:
```bash
kafkactl produce deeptalk -v "Hello Deeptalk"
```

Consume Message:
```bash
kafkactl consume deeptalk --from-beginning --exit
```
## Kafdrop
Clone Repo:
```bash
git clone https://github.com/obsidiandynamics/kafdrop.git
```

Installiere helm chart:
```bash
helm upgrade -i kafdrop kafdrop/chart --set kafka.brokerConnect=minikube:30000
```

Öffne im Browser:
```bash
http://minikube:30900/
```
14 changes: 14 additions & 0 deletions 07-deployment-von-apache-kafka-in-kubernetes/helm/my-values.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
externalAccess:
enabled: true
service:
type: "NodePort"
domain: "minikube"
nodePorts: [ "30000" ]
autoDiscovery:
enabled: true
serviceAccount:
create: true
rbac:
create: true

deleteTopicEnable: true