diff --git a/07-deployment-von-apache-kafka-in-kubernetes/helm/.gitignore b/07-deployment-von-apache-kafka-in-kubernetes/helm/.gitignore new file mode 100644 index 0000000..0f62c89 --- /dev/null +++ b/07-deployment-von-apache-kafka-in-kubernetes/helm/.gitignore @@ -0,0 +1,3 @@ +charts/ +kafdrop/ +Ablauf.md \ No newline at end of file diff --git a/07-deployment-von-apache-kafka-in-kubernetes/helm/README.md b/07-deployment-von-apache-kafka-in-kubernetes/helm/README.md new file mode 100644 index 0000000..85f5be6 --- /dev/null +++ b/07-deployment-von-apache-kafka-in-kubernetes/helm/README.md @@ -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 +``` + +>**Note:** To get ``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/ +``` diff --git a/07-deployment-von-apache-kafka-in-kubernetes/helm/my-values.yaml b/07-deployment-von-apache-kafka-in-kubernetes/helm/my-values.yaml new file mode 100644 index 0000000..b710aba --- /dev/null +++ b/07-deployment-von-apache-kafka-in-kubernetes/helm/my-values.yaml @@ -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