From cc27bc113cfe2d295a59336236ea4d69ca4c38f3 Mon Sep 17 00:00:00 2001 From: Staffan Olsson Date: Mon, 8 Jan 2018 16:15:45 +0100 Subject: Sets all labels at the end of the init script, to speed up a bit and reduce the risk that it interferes with actual config. Also if the init script goes crash looping you won't get warnings about labels already being set. --- kafka/10broker-config.yml | 13 ++++++++----- rbac-namespace-default/pod-labler.yml | 1 - 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/kafka/10broker-config.yml b/kafka/10broker-config.yml index 55a0c3b..2846232 100644 --- a/kafka/10broker-config.yml +++ b/kafka/10broker-config.yml @@ -11,6 +11,8 @@ data: KAFKA_BROKER_ID=${HOSTNAME##*-} sed -i "s/#init#broker.id=#init#/broker.id=$KAFKA_BROKER_ID/" /etc/kafka/server.properties + LABELS="kafka-broker-id=$KAFKA_BROKER_ID" + hash kubectl 2>/dev/null || { sed -i "s/#init#broker.rack=#init#/#init#broker.rack=# kubectl not found in path/" /etc/kafka/server.properties } && { @@ -21,19 +23,20 @@ data: 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 - kubectl -n $POD_NAMESPACE label pod $POD_NAME kafka-broker-rack=$ZONE + LABELS="$LABELS kafka-broker-rack=$ZONE" fi - kubectl -n $POD_NAMESPACE label pod $POD_NAME kafka-broker-id=$KAFKA_BROKER_ID - OUTSIDE_HOST=$(kubectl get node "$NODE_NAME" -o jsonpath='{.status.addresses[?(@.type=="InternalIP")].address}') if [ $? -ne 0 ]; then echo "Outside (i.e. cluster-external access) host lookup command failed" else OUTSIDE_PORT=3240${KAFKA_BROKER_ID} sed -i "s|#init#advertised.listeners=OUTSIDE://#init#|advertised.listeners=OUTSIDE://${OUTSIDE_HOST}:${OUTSIDE_PORT}|" /etc/kafka/server.properties - kubectl -n $POD_NAMESPACE label pod $POD_NAME kafka-listener-outside-host=$OUTSIDE_HOST - kubectl -n $POD_NAMESPACE label pod $POD_NAME kafka-listener-outside-port=$OUTSIDE_PORT + LABELS="$LABELS kafka-listener-outside-host=$OUTSIDE_HOST kafka-listener-outside-port=$OUTSIDE_PORT" + fi + + if [ ! -z "$LABELS" ]; then + kubectl -n $POD_NAMESPACE label pod $POD_NAME $LABELS || echo "Failed to label $POD_NAMESPACE.$POD_NAME - RBAC issue?" fi } diff --git a/rbac-namespace-default/pod-labler.yml b/rbac-namespace-default/pod-labler.yml index 92745af..bd488b0 100644 --- a/rbac-namespace-default/pod-labler.yml +++ b/rbac-namespace-default/pod-labler.yml @@ -2,7 +2,6 @@ # # $ kubectl -n kafka logs kafka-2 -c init-config # ... -# + kubectl -n kafka label pod kafka-2 kafka-broker-id=2 # Error from server (Forbidden): pods "kafka-2" is forbidden: User "system:serviceaccount:kafka:default" cannot get pods in the namespace "kafka": Unknown user "system:serviceaccount:kafka:default" # --- -- cgit v1.2.3