aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStaffan Olsson <staffan@repos.se>2017-08-03 06:28:41 +0200
committerStaffan Olsson <staffan@repos.se>2017-08-05 07:03:07 +0200
commit8fe76ff94e7452bd183df3d63af262822a695d71 (patch)
tree8c081f85fc9d5a8521c34c9ad441c982e6d20efe
parentc0645eefd5dc75b9e9b002b5dd5b009d39b6fd42 (diff)
downloadkubernetes-kafka-8fe76ff94e7452bd183df3d63af262822a695d71.tar.gz
kubernetes-kafka-8fe76ff94e7452bd183df3d63af262822a695d71.tar.bz2
kubernetes-kafka-8fe76ff94e7452bd183df3d63af262822a695d71.zip
Looks up zone if kubectl is found, tries to not break config otherwise
-rw-r--r--10broker-config.yml24
-rw-r--r--50kafka.yml5
2 files changed, 17 insertions, 12 deletions
diff --git a/10broker-config.yml b/10broker-config.yml
index 93bc8f0..8f9d9d5 100644
--- a/10broker-config.yml
+++ b/10broker-config.yml
@@ -11,17 +11,17 @@ data:
export KAFKA_BROKER_ID=${HOSTNAME##*-}
sed -i "s/\${KAFKA_BROKER_ID}/$KAFKA_BROKER_ID/" /etc/kafka/server.properties
- PODNAME=$HOSTNAME
- NAMESPACE=$(cat /var/run/secrets/kubernetes.io/serviceaccount/namespace)
-
- # todo add curl to kafka image, switch to a curl image for init or write the whole lookup in java
- hash curl 2>/dev/null || { apt-get update; DEBIAN_FRONTEND=noninteractive apt-get install curl -y --no-install-recommends; }
-
- API=https://$KUBERNETES_SERVICE_HOST:$KUBERNETES_SERVICE_PORT/api
- AUTH="--cacert /run/secrets/kubernetes.io/serviceaccount/ca.crt --header \"Authorization: Bearer $(cat /run/secrets/kubernetes.io/serviceaccount/token)\""
-
- curl -s $AUTH $API/namespaces/kafka/pods/$PODNAME -I --fail-early || {
- echo "Access problems. Could be RBAC."
+ hash kubectl 2>/dev/null || {
+ sed -i "s/#init#broker.rack=#init#/#init#broker.rack=# kubectl not found in path/" /etc/kafka/server.properties
+ } && {
+ ZONE=$(kubectl get node "$NODE_NAME" -o=go-template='{{index .metadata.labels "failure-domain.beta.kubernetes.io/zone"}}')
+ if [ $? -ne 0 ]; then
+ sed -i "s/#init#broker.rack=#init#/#init#broker.rack=# zone lookup failed, see -c init-config logs/" /etc/kafka/server.properties
+ elif [ "x$ZONE" == "x<no value>" ]; then
+ sed -i "s/#init#broker.rack=#init#/#init#broker.rack=# zone label not found for node $NODE_NAME/" /etc/kafka/server.properties
+ else
+ sed -i "s/#init#broker.rack=#init#/broker.rack=$ZONE/" /etc/kafka/server.properties
+ fi
}
server.properties: |-
@@ -47,7 +47,7 @@ data:
# The id of the broker. This must be set to a unique integer for each broker.
broker.id=${KAFKA_BROKER_ID}
- #broker.rack=${KAFKA_BROKER_RACK}
+ #init#broker.rack=#init#
# Switch to enable topic deletion or not, default value is false
delete.topic.enable=true
diff --git a/50kafka.yml b/50kafka.yml
index 4404a6b..1280590 100644
--- a/50kafka.yml
+++ b/50kafka.yml
@@ -16,6 +16,11 @@ spec:
initContainers:
- name: init-config
image: solsson/kafka:0.11.0.0@sha256:b27560de08d30ebf96d12e74f80afcaca503ad4ca3103e63b1fd43a2e4c976ce
+ env:
+ - name: NODE_NAME
+ valueFrom:
+ fieldRef:
+ fieldPath: spec.nodeName
command: ['/bin/bash', '/etc/kafka/init.sh']
volumeMounts:
- name: config