Skip to content

Instantly share code, notes, and snippets.

@d-t-w
Last active January 26, 2022 07:19
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save d-t-w/75bac0456e80e1d5e94e90679849a6fc to your computer and use it in GitHub Desktop.
Save d-t-w/75bac0456e80e1d5e94e90679849a6fc to your computer and use it in GitHub Desktop.

Run kPow in Local Kubernetes with Helm

Docker for Mac Local Kubernetes

I found this guide useful for setup.

Single Node Kafka in Local Kube

Clone: https://github.com/Yolean/kubernetes-kafka

Follow these commands from within that repo root directory to start (and later stop) a single ZK, single Broker Cluster with the following bootstrap:

bootstrap.kafka.svc.cluster.local:9092
# starting up

# create pods (1 zk, 1 broker)

$ kubectl create namespace kafka && kubectl apply -k variants/scale-1-ephemeral

namespace/kafka created
role.rbac.authorization.k8s.io/pod-labler created
clusterrole.rbac.authorization.k8s.io/node-reader unchanged
rolebinding.rbac.authorization.k8s.io/kafka-pod-labler created
clusterrolebinding.rbac.authorization.k8s.io/kafka-node-reader unchanged
configmap/broker-config created
configmap/zookeeper-config created
service/bootstrap created
service/kafka created
service/pzoo created
service/zookeeper created
service/zoo created
statefulset.apps/kafka created
statefulset.apps/pzoo created
statefulset.apps/zoo created

# confirm running pods

$ kubectl get all -n kafka -o wide

NAME          READY   STATUS    RESTARTS   AGE   IP          NODE             NOMINATED NODE   READINESS GATES
pod/kafka-0   1/1     Running   0          38s   10.1.0.82   docker-desktop   <none>           <none>
pod/zoo-0     1/1     Running   0          38s   10.1.0.83   docker-desktop   <none>           <none>

NAME                TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)             AGE   SELECTOR
service/bootstrap   ClusterIP   10.110.168.53   <none>        9092/TCP            39s   app=kafka
service/kafka       ClusterIP   None            <none>        9092/TCP            39s   app=kafka
service/pzoo        ClusterIP   None            <none>        2888/TCP,3888/TCP   39s   app=zookeeper,storage=persistent
service/zoo         ClusterIP   None            <none>        2888/TCP,3888/TCP   38s   app=zookeeper,storage=persistent-regional
service/zookeeper   ClusterIP   10.107.155.37   <none>        2181/TCP            38s   app=zookeeper

NAME                     READY   AGE   CONTAINERS   IMAGES
statefulset.apps/kafka   1/1     38s   broker       solsson/kafka:2.5.1-kafka-server-start@sha256:e4d34530e500eb9724e7778595f4cb244df228336090bb7ed5f7dd7433d4d41d
statefulset.apps/pzoo    0/0     38s   zookeeper    solsson/kafka:native-zookeeper-server-start@sha256:ba3a0632240b8906a3b5bb6441e98ad9d9de73cb716b156ca68f1b435c819e8b
statefulset.apps/zoo     1/1     38s   zookeeper    solsson/kafka:native-zookeeper-server-start@sha256:ba3a0632240b8906a3b5bb6441e98ad9d9de73cb716b156ca68f1b435c819e8b

## single broker bootstrap is now available at: bootstrap.kafka.svc.cluster.local:9092 (see helm-install.sh)

## shutting down

# delete pods

$ kubectl delete --all pods --namespace=kafka

pod "kafka-0" deleted
pod "zoo-0" deleted

# delete ns

$ kubectl delete ns kafka

namespace "kafka" deleted

# confirm

$ kubectl get all -n kafka -o wide

No resources found in kafka namespace. 

Start and Stop kPow in Kube with AWS Marketplace Helm

Subscribe to the AWS kPow LM Product, follow the directions to create a secret/token, then:

./helm install kpow-1-0-23 \                                                                                                 
    --namespace operatr-io ./awsmp-chart/* \
    --set serviceAccount.create=false \
    --set serviceAccount.name=kpow \
    --set aws.licenseConfigSecretName=awsmp-license-token-secret \
    --set env.REPLICATION_FACTOR="'1'" \
    --set env.BOOTSTRAP="bootstrap.kafka.svc.cluster.local:9092" \

NAME: kpow-1-0-22
LAST DEPLOYED: Wed Nov 24 16:19:02 2021
NAMESPACE: operatr-io
STATUS: deployed
REVISION: 1
NOTES:
1. Get the application URL by running these commands:
  export POD_NAME=$(kubectl get pods --namespace operatr-io -l "app.kubernetes.io/name=kpow,app.kubernetes.io/instance=kpow-1-0-22" -o jsonpath="{.items[0].metadata.name}")
  echo "Visit http://127.0.0.1:3000 to use your application"
  kubectl --namespace operatr-io port-forward $POD_NAME 3000:3000

## ^ run those export / echo / kubectl commands to access kPow on localhost:3000

# view logs

$ kubectl logs --namespace operatr-io $POD_NAME

# delete kpow

$ helm delete --namespace operatr-io kpow-1-0-22
release "kpow-1-0-22" uninstalled
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment