Skip to content

Instantly share code, notes, and snippets.

@jparrill
Created March 25, 2019 14:36
Show Gist options
  • Select an option

  • Save jparrill/f5b3e030298db8cb75f446fdcd3de796 to your computer and use it in GitHub Desktop.

Select an option

Save jparrill/f5b3e030298db8cb75f446fdcd3de796 to your computer and use it in GitHub Desktop.
Strimzi Kafka cluster deployment
#!/bin/bash
NAMESPACE=${1:-summit}
CLUSTERNAME=${2:-summit}
BASE_METALKUBE=`pwd`
function login {
if [[ -d "$BASE_METALKUBE/ocp/auth/" ]]; then
KUBEADMIN_PASS=`cat ${BASE_METALKUBE}/ocp/auth/kubeadmin-password`
export KUBECONFIG=`${BASE_METALKUBE}/ocp/auth/kubeconfig`
else
KUBEADMIN_PASS=`cat $HOME/OCP4/assets/auth/kubeadmin-password`
export KUBECONFIG="$HOME/OCP4/assets/auth/kubeconfig"
fi
}
function create_common_base {
rc=`oc whoami`
if [[ ${rc} != 0 ]]; then
login
fi
oc login -u kubeadmin -p ${KUBEADMIN_PASS}
oc new-project ${NAMESPACE}
}
function deploy_kafka {
cd $BASE_METALKUBE
mkdir kafka && cd kafka
git clone https://github.com/strimzi/strimzi-kafka-operator.git
cd strimzi-kafka-operator
# Apply RBAC
sed -i "s/namespace: .*/namespace: ${NAMESPACE}/" install/cluster-operator/*RoleBinding*.yaml
oc apply -f install/cluster-operator/020-RoleBinding-strimzi-cluster-operator.yaml -n ${NAMESPACE}
oc apply -f install/cluster-operator/031-RoleBinding-strimzi-cluster-operator-entity-operator-delegation.yaml -n ${NAMESPACE}
oc apply -f install/cluster-operator/032-RoleBinding-strimzi-cluster-operator-topic-operator-delegation.yaml -n ${NAMESPACE}
# Install Operator
oc apply -f install/cluster-operator -n ${NAMESPACE}
# Modify Kafka cluster & Deploy
sed -i "s/my-cluster/${CLUSTERNAME}/" metrics/examples/kafka/kafka-metrics.yaml
sed -i "s/my-cluster/${CLUSTERNAME}/" metrics/examples/kafka/kafka-connect-metrics.yaml
oc apply -f metrics/examples/kafka/kafka-metrics.yaml -n ${NAMESPACE}
oc apply -f metrics/examples/kafka/kafka-connect-metrics.yaml -n ${NAMESPACE}
# Modify Prometheus & Deploy
sed -i "s/myproject/${CLUSTERNAME}/" metrics/examples/prometheus/prometheus.yaml
oc apply -f metrics/examples/prometheus/prometheus.yaml -n ${NAMESPACE}
oc apply -f metrics/examples/prometheus/alerting-rules.yaml -n ${NAMESPACE}
oc apply -f metrics/examples/prometheus/alertmanager.yaml -n ${NAMESPACE}
# Deploy Grafana
oc apply -f metrics/examples/grafana/grafana.yaml -n ${NAMESPACE}
}
function deploy_kafka_traffic_generator {
TOPIC="${NAMESPACE}-topic"
TIMER="100" # 10 Msgs/Sec/Pod
cd $BASE_METALKUBE/kafka
git clone https://github.com/scholzj/kafka-test-apps.git
cd kafka-test-apps
sed -i "s/my-cluster-kafka-bootstrap:9092/${CLUSTERNAME}-kafka-bootstrap:9092/" kafka-producer.yaml
sed -i "s/my-cluster-kafka-bootstrap:9092/${CLUSTERNAME}-kafka-bootstrap:9092/" kafka-consumer.yaml
sed -i "s/my-topic/${TOPIC}/" kafka-producer.yaml
sed -i "s/my-topic/${TOPIC}/" kafka-consumer.yaml
sed -i "s/\"10000\"/\"${TIMER}\"/" kafka-producer.yaml
oc apply -f kafka-producer.yaml -n ${NAMESPACE}
oc apply -f kafka-consumer.yaml -n ${NAMESPACE}
}
create_common_base
deploy_kafka
deploy_kafka_traffic_generator
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment