|
15 | 15 | {{- $clientPort := int (default $root.Values.kafka.ports.client.containerPort (dig "ports" "client" "containerPort" nil $cluster)) -}} |
16 | 16 | {{- $clientServicePort := int (default $root.Values.kafka.ports.client.servicePort (dig "ports" "client" "servicePort" nil $cluster)) -}} |
17 | 17 | {{- $clientProtocol := default $root.Values.kafka.ports.client.protocol (dig "ports" "client" "protocol" nil $cluster) -}} |
| 18 | +{{- $externalServicesEnabled := default $root.Values.kafka.externalBrokerServices.enabled (dig "externalBrokerServices" "enabled" nil $cluster) -}} |
| 19 | +{{- $externalServiceType := default $root.Values.kafka.externalBrokerServices.type (dig "externalBrokerServices" "type" nil $cluster) -}} |
| 20 | +{{- $externalListenerName := default $root.Values.kafka.externalBrokerServices.listenerName (dig "externalBrokerServices" "listenerName" nil $cluster) -}} |
| 21 | +{{- $externalContainerPort := int (default $root.Values.kafka.externalBrokerServices.containerPort (dig "externalBrokerServices" "containerPort" nil $cluster)) -}} |
| 22 | +{{- $externalServicePort := int (default $root.Values.kafka.externalBrokerServices.servicePort (dig "externalBrokerServices" "servicePort" nil $cluster)) -}} |
| 23 | +{{- $externalProtocol := default $root.Values.kafka.externalBrokerServices.protocol (dig "externalBrokerServices" "protocol" nil $cluster) -}} |
| 24 | +{{- $externalAnnotations := default $root.Values.kafka.externalBrokerServices.annotations (dig "externalBrokerServices" "annotations" nil $cluster) -}} |
| 25 | +{{- $externalTrafficPolicy := default $root.Values.kafka.externalBrokerServices.externalTrafficPolicy (dig "externalBrokerServices" "externalTrafficPolicy" nil $cluster) -}} |
| 26 | +{{- $externalSourceRanges := default $root.Values.kafka.externalBrokerServices.loadBalancerSourceRanges (dig "externalBrokerServices" "loadBalancerSourceRanges" nil $cluster) -}} |
| 27 | +{{- $externalLBIPs := default $root.Values.kafka.externalBrokerServices.loadBalancerIPs (dig "externalBrokerServices" "loadBalancerIPs" nil $cluster) -}} |
| 28 | +{{- $externalAdvertisedHosts := default $root.Values.kafka.externalBrokerServices.advertisedHosts (dig "externalBrokerServices" "advertisedHosts" nil $cluster) -}} |
18 | 29 | {{- $controllerName := default $root.Values.kafka.ports.controller.name (dig "ports" "controller" "name" nil $cluster) -}} |
19 | 30 | {{- $controllerPort := int (default $root.Values.kafka.ports.controller.containerPort (dig "ports" "controller" "containerPort" nil $cluster)) -}} |
20 | 31 | {{- $controllerServicePort := int (default $root.Values.kafka.ports.controller.servicePort (dig "ports" "controller" "servicePort" nil $cluster)) -}} |
|
80 | 91 | port: {{ $jmxServicePort }} |
81 | 92 | targetPort: {{ $jmxName }} |
82 | 93 | protocol: {{ $jmxProtocol }} |
| 94 | +{{- if $externalServicesEnabled }} |
| 95 | +{{- range $i := until $replicas }} |
| 96 | +--- |
| 97 | +apiVersion: v1 |
| 98 | +kind: Service |
| 99 | +metadata: |
| 100 | + name: {{ printf "%s-%d-external" $clusterName $i | trunc 63 | trimSuffix "-" }} |
| 101 | + labels: |
| 102 | + {{- include "kafka.labels" $root | nindent 4 }} |
| 103 | + app.kubernetes.io/component: broker |
| 104 | + app.kubernetes.io/part-of: {{ $clusterLabel }} |
| 105 | + statefulset.kubernetes.io/pod-name: {{ printf "%s-%d" $clusterName $i }} |
| 106 | + {{- with $externalAnnotations }} |
| 107 | + annotations: |
| 108 | + {{- toYaml . | nindent 4 }} |
| 109 | + {{- end }} |
| 110 | +spec: |
| 111 | + type: {{ $externalServiceType }} |
| 112 | + {{- with $externalTrafficPolicy }} |
| 113 | + externalTrafficPolicy: {{ . }} |
| 114 | + {{- end }} |
| 115 | + {{- with $externalSourceRanges }} |
| 116 | + loadBalancerSourceRanges: |
| 117 | + {{- toYaml . | nindent 4 }} |
| 118 | + {{- end }} |
| 119 | + {{- if lt $i (len $externalLBIPs) }} |
| 120 | + loadBalancerIP: {{ index $externalLBIPs $i | quote }} |
| 121 | + {{- end }} |
| 122 | + selector: |
| 123 | + {{- include "kafka.selectorLabels" $root | nindent 4 }} |
| 124 | + app.kubernetes.io/component: broker |
| 125 | + app.kubernetes.io/part-of: {{ $clusterLabel }} |
| 126 | + statefulset.kubernetes.io/pod-name: {{ printf "%s-%d" $clusterName $i }} |
| 127 | + ports: |
| 128 | + - name: {{ lower $externalListenerName | trunc 15 | trimSuffix "-" }} |
| 129 | + port: {{ $externalServicePort }} |
| 130 | + targetPort: {{ lower $externalListenerName | trunc 15 | trimSuffix "-" }} |
| 131 | + protocol: {{ $externalProtocol }} |
| 132 | +{{- end }} |
| 133 | +{{- end }} |
83 | 134 | --- |
84 | 135 | apiVersion: apps/v1 |
85 | 136 | kind: StatefulSet |
@@ -141,9 +192,17 @@ spec: |
141 | 192 | export KAFKA_PROCESS_ROLES="{{ default $root.Values.kafka.processRoles $cluster.processRoles }}" |
142 | 193 | export KAFKA_CONTROLLER_QUORUM_VOTERS="{{ include "kafka.cluster.controllerQuorum" $ctx }}" |
143 | 194 | export KAFKA_CONTROLLER_LISTENER_NAMES="CONTROLLER" |
144 | | - export KAFKA_LISTENER_SECURITY_PROTOCOL_MAP="{{ default $root.Values.kafka.listenerSecurityProtocolMap $cluster.listenerSecurityProtocolMap }}" |
145 | | - export KAFKA_LISTENERS="SASL_PLAINTEXT://0.0.0.0:{{ $clientPort }},CONTROLLER://${POD_FQDN}:{{ $controllerPort }}" |
146 | | - export KAFKA_ADVERTISED_LISTENERS="SASL_PLAINTEXT://${POD_FQDN}:{{ $clientPort }}" |
| 195 | + export KAFKA_LISTENER_SECURITY_PROTOCOL_MAP="{{ default $root.Values.kafka.listenerSecurityProtocolMap $cluster.listenerSecurityProtocolMap }}{{- if $externalServicesEnabled }},{{ $externalListenerName }}:SASL_PLAINTEXT{{- end }}" |
| 196 | + {{- if $externalServicesEnabled }} |
| 197 | + EXTERNAL_ADVERTISED_HOSTS="{{ join "," $externalAdvertisedHosts }}" |
| 198 | + EXTERNAL_HOST="$(echo "${EXTERNAL_ADVERTISED_HOSTS}" | cut -d, -f$((ORDINAL + 1)))" |
| 199 | + if [ -z "${EXTERNAL_HOST}" ]; then |
| 200 | + echo "Missing kafka.externalBrokerServices.advertisedHosts entry for ${HOSTNAME}" >&2 |
| 201 | + exit 1 |
| 202 | + fi |
| 203 | + {{- end }} |
| 204 | + export KAFKA_LISTENERS="SASL_PLAINTEXT://0.0.0.0:{{ $clientPort }}{{- if $externalServicesEnabled }},{{ $externalListenerName }}://0.0.0.0:{{ $externalContainerPort }}{{- end }},CONTROLLER://${POD_FQDN}:{{ $controllerPort }}" |
| 205 | + export KAFKA_ADVERTISED_LISTENERS="SASL_PLAINTEXT://${POD_FQDN}:{{ $clientPort }}{{- if $externalServicesEnabled }},{{ $externalListenerName }}://${EXTERNAL_HOST}:{{ $externalServicePort }}{{- end }}" |
147 | 206 | export KAFKA_INTER_BROKER_LISTENER_NAME="{{ default $root.Values.kafka.interBrokerListenerName $cluster.interBrokerListenerName }}" |
148 | 207 | export KAFKA_SASL_ENABLED_MECHANISMS="{{ default $root.Values.kafka.saslEnabledMechanisms $cluster.saslEnabledMechanisms }}" |
149 | 208 | export KAFKA_SASL_MECHANISM_INTER_BROKER_PROTOCOL="{{ default $root.Values.kafka.saslMechanismInterBrokerProtocol $cluster.saslMechanismInterBrokerProtocol }}" |
@@ -190,6 +249,11 @@ spec: |
190 | 249 | - name: {{ $jmxName }} |
191 | 250 | containerPort: {{ $jmxPort }} |
192 | 251 | protocol: {{ $jmxProtocol }} |
| 252 | + {{- if $externalServicesEnabled }} |
| 253 | + - name: {{ lower $externalListenerName | trunc 15 | trimSuffix "-" }} |
| 254 | + containerPort: {{ $externalContainerPort }} |
| 255 | + protocol: {{ $externalProtocol }} |
| 256 | + {{- end }} |
193 | 257 | env: |
194 | 258 | - name: KAFKA_SUPER_USERS |
195 | 259 | value: {{ join ";" (default $root.Values.kafka.superUsers $cluster.superUsers) | quote }} |
|
0 commit comments