diff --git a/charts/consul/templates/connect-inject-deployment.yaml b/charts/consul/templates/connect-inject-deployment.yaml index 9cd4714600..b8982507ed 100644 --- a/charts/consul/templates/connect-inject-deployment.yaml +++ b/charts/consul/templates/connect-inject-deployment.yaml @@ -152,6 +152,11 @@ spec: {{- end }} {{- end }} {{- end }} + {{- if (eq .Values.global.peering.tokenGeneration.serverAddresses.source "static") }} + {{- range $addr := .Values.global.peering.tokenGeneration.serverAddresses.static }} + -server-address="{{ $addr }}" \ + {{- end }} + {{- end }} {{- end }} {{- if .Values.global.openshift.enabled }} -enable-openshift \ diff --git a/charts/consul/test/unit/connect-inject-deployment.bats b/charts/consul/test/unit/connect-inject-deployment.bats index cc45a26b9a..63a221224a 100755 --- a/charts/consul/test/unit/connect-inject-deployment.bats +++ b/charts/consul/test/unit/connect-inject-deployment.bats @@ -1941,6 +1941,48 @@ EOF [ "${actual}" = "true" ] } +@test "connectInject/Deployment: when peering token generation source is static passes in -server-address flags with static addresses" { + cd `chart_dir` + local command=$(helm template \ + -s templates/connect-inject-deployment.yaml \ + --set 'global.peering.tokenGeneration.serverAddresses.source=static' \ + --set 'global.peering.tokenGeneration.serverAddresses.static[0]=1.2.3.4:1234' \ + --set 'global.peering.tokenGeneration.serverAddresses.static[1]=2.2.3.4:2234' \ + --set 'connectInject.enabled=true' \ + --set 'global.peering.enabled=true' \ + . | tee /dev/stderr | + yq '.spec.template.spec.containers[0].command') + + local actual=$(echo $command | jq -r ' . | any(contains("-server-address=\"1.2.3.4:1234\""))' | tee /dev/stderr) + [ "${actual}" = "true" ] + + local actual=$(echo $command | jq -r ' . | any(contains("-server-address=\"2.2.3.4:2234\""))' | tee /dev/stderr) + [ "${actual}" = "true" ] +} + +@test "connectInject/Deployment: when peering token generation source is static and externalHosts are set, passes in -server-address flags with static addresses, not externalServers.hosts" { + cd `chart_dir` + local command=$(helm template \ + -s templates/connect-inject-deployment.yaml \ + --set 'server.enabled=false' \ + --set 'global.peering.tokenGeneration.serverAddresses.source=static' \ + --set 'global.peering.tokenGeneration.serverAddresses.static[0]=1.2.3.4:1234' \ + --set 'global.peering.tokenGeneration.serverAddresses.static[1]=2.2.3.4:2234' \ + --set 'externalServers.enabled=true' \ + --set 'externalServers.hosts[0]=1.1.1.1' \ + --set 'externalServers.hosts[1]=2.2.2.2' \ + --set 'connectInject.enabled=true' \ + --set 'global.peering.enabled=true' \ + . | tee /dev/stderr | + yq '.spec.template.spec.containers[0].command') + + local actual=$(echo $command | jq -r ' . | any(contains("-server-address=\"1.2.3.4:1234\""))' | tee /dev/stderr) + [ "${actual}" = "true" ] + + local actual=$(echo $command | jq -r ' . | any(contains("-server-address=\"2.2.3.4:2234\""))' | tee /dev/stderr) + [ "${actual}" = "true" ] +} + #-------------------------------------------------------------------- # openshift diff --git a/charts/consul/values.yaml b/charts/consul/values.yaml index 1ebe3c886d..9ea2d2407a 100644 --- a/charts/consul/values.yaml +++ b/charts/consul/values.yaml @@ -36,13 +36,18 @@ global: enabled: false tokenGeneration: serverAddresses: - # Source can be set to "" or "consul". + # Source can be set to "","consul" or "static". # - # "" is the default source. If servers are enabled, it will check if server.exposeService is enabled, and read + # "" is the default source. If servers are enabled, it will check if `server.exposeService` is enabled, and read # the addresses from that service to use as the peering token server addresses. # # "consul" will use the Consul advertise addresses in the peering token. + # + # "static" will use the addresses specified in `global.peering.tokenGeneration.serverAddresses.static`. source: "" + # Static addresses must be formatted "hostname|ip:port". + # @type: array + static: [] # [Enterprise Only] Enabling `adminPartitions` allows creation of Admin Partitions in Kubernetes clusters. # It additionally indicates that you are running Consul Enterprise v1.11+ with a valid Consul Enterprise