Skip to content

Commit c9c5015

Browse files
authored
Merge pull request #167 from Yolean/sidecar-for-dynamic-config
Switch from init container to sidecar, with Kafka 1.1.0
2 parents f281f9c + a131a62 commit c9c5015

File tree

3 files changed

+14
-12
lines changed

3 files changed

+14
-12
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ If you begin to rely on this kafka setup we recommend you fork, for example to e
2828

2929
| tag | k8s ≥ | highlights |
3030
| ----- | ------ | ---------- |
31+
| 4.x | 1.9+ | Kafka 1.1 dynamic config |
3132
| v3.2 | 1.9.4, 1.8.9, 1.7.14 | Required for read-only ConfigMaps [#162](https://github.com/Yolean/kubernetes-kafka/issues/162) [#163](https://github.com/Yolean/kubernetes-kafka/pull/163) [k8s #58720](https://github.com/kubernetes/kubernetes/pull/58720) |
3233
| v3.1 | 1.8 | The painstaking path to `min.insync.replicas`=2 |
3334
| v3.0 | 1.8 | [Outside access](#78), [modern manifests](#84), [bootstrap.kafka](#52) |

kafka/10broker-config.yml

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,24 +7,23 @@ data:
77
init.sh: |-
88
#!/bin/bash
99
set -x
10+
cp /etc/kafka-configmap/log4j.properties /etc/kafka/
1011
1112
KAFKA_BROKER_ID=${HOSTNAME##*-}
12-
cp -Lur /etc/kafka-configmap/* /etc/kafka/
13-
sed -i "s/#init#broker.id=#init#/broker.id=$KAFKA_BROKER_ID/" /etc/kafka/server.properties
14-
13+
SEDS=("s/#init#broker.id=#init#/broker.id=$KAFKA_BROKER_ID/")
1514
LABELS="kafka-broker-id=$KAFKA_BROKER_ID"
1615
ANNOTATIONS=""
1716
1817
hash kubectl 2>/dev/null || {
19-
sed -i "s/#init#broker.rack=#init#/#init#broker.rack=# kubectl not found in path/" /etc/kafka/server.properties
18+
SEDS+=("s/#init#broker.rack=#init#/#init#broker.rack=# kubectl not found in path/")
2019
} && {
2120
ZONE=$(kubectl get node "$NODE_NAME" -o=go-template='{{index .metadata.labels "failure-domain.beta.kubernetes.io/zone"}}')
2221
if [ $? -ne 0 ]; then
23-
sed -i "s/#init#broker.rack=#init#/#init#broker.rack=# zone lookup failed, see -c init-config logs/" /etc/kafka/server.properties
22+
SEDS+=("s/#init#broker.rack=#init#/#init#broker.rack=# zone lookup failed, see -c init-config logs/")
2423
elif [ "x$ZONE" == "x<no value>" ]; then
25-
sed -i "s/#init#broker.rack=#init#/#init#broker.rack=# zone label not found for node $NODE_NAME/" /etc/kafka/server.properties
24+
SEDS+=("s/#init#broker.rack=#init#/#init#broker.rack=# zone label not found for node $NODE_NAME/")
2625
else
27-
sed -i "s/#init#broker.rack=#init#/broker.rack=$ZONE/" /etc/kafka/server.properties
26+
SEDS+=("s/#init#broker.rack=#init#/broker.rack=$ZONE/")
2827
LABELS="$LABELS kafka-broker-rack=$ZONE"
2928
fi
3029
@@ -33,7 +32,7 @@ data:
3332
echo "Outside (i.e. cluster-external access) host lookup command failed"
3433
else
3534
OUTSIDE_PORT=3240${KAFKA_BROKER_ID}
36-
sed -i "s|#init#advertised.listeners=OUTSIDE://#init#|advertised.listeners=OUTSIDE://${OUTSIDE_HOST}:${OUTSIDE_PORT}|" /etc/kafka/server.properties
35+
SEDS+=("s|#init#advertised.listeners=OUTSIDE://#init#|advertised.listeners=OUTSIDE://${OUTSIDE_HOST}:${OUTSIDE_PORT}|")
3736
ANNOTATIONS="$ANNOTATIONS kafka-listener-outside-host=$OUTSIDE_HOST kafka-listener-outside-port=$OUTSIDE_PORT"
3837
fi
3938
@@ -44,6 +43,9 @@ data:
4443
kubectl -n $POD_NAMESPACE annotate pod $POD_NAME $ANNOTATIONS || echo "Failed to annotate $POD_NAMESPACE.$POD_NAME - RBAC issue?"
4544
fi
4645
}
46+
printf '%s\n' "${SEDS[@]}" | sed -f - /etc/kafka-configmap/server.properties > /etc/kafka/server.properties.tmp
47+
[ $? -eq 0 ] && mv /etc/kafka/server.properties.tmp /etc/kafka/server.properties
48+
[ -f /etc/kafka/server.properties ] && echo "Ready for Kafka start" && tail -f /dev/null
4749
4850
server.properties: |-
4951
############################# Log Basics #############################

kafka/50kafka.yml

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,8 @@ spec:
1818
annotations:
1919
spec:
2020
terminationGracePeriodSeconds: 30
21-
initContainers:
22-
- name: init-config
21+
containers:
22+
- name: config
2323
image: solsson/kafka-initutils@sha256:18bf01c2c756b550103a99b3c14f741acccea106072cd37155c6d24be4edd6e2
2424
env:
2525
- name: NODE_NAME
@@ -40,9 +40,8 @@ spec:
4040
mountPath: /etc/kafka-configmap
4141
- name: config
4242
mountPath: /etc/kafka
43-
containers:
4443
- name: broker
45-
image: solsson/kafka:1.0.1@sha256:1a4689d49d6274ac59b9b740f51b0408e1c90a9b66d16ad114ee9f7193bab111
44+
image: solsson/kafka:1.1@sha256:ba863ca7dc28563930584e37f93d57c2cbf3f46b1c1fa104fe8af7bcc0c31df4
4645
env:
4746
- name: KAFKA_LOG4J_OPTS
4847
value: -Dlog4j.configuration=file:/etc/kafka/log4j.properties

0 commit comments

Comments
 (0)