Skip to content
This repository was archived by the owner on May 25, 2023. It is now read-only.

Commit a241754

Browse files
committed
specify contact-point-discovery.port-name
Fixes #177 This specifies the management endpoint name explicity to `-Dakka.management.cluster.bootstrap.contact-point-discovery.port-name`. By default the management endpoint name will fallback to `"akka-mgmt-http"` for backward compatibility. In the future, sbt-reactive-app can declare the management endpoint name using "management-endpoint" as a label on the Docker image. See lightbend/sbt-reactive-app#164. These changes combined together provides softlanding of the switch to `"management"` in akka/akka-management#274.
1 parent 7911ceb commit a241754

File tree

12 files changed

+411
-10
lines changed

12 files changed

+411
-10
lines changed

cli/shared/src/main/scala/com/lightbend/rp/reactivecli/annotations/Annotations.scala

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,8 @@ case class Annotations(
3636
memory: Option[Long],
3737
cpu: Option[Double],
3838
endpoints: Map[String, Endpoint],
39+
remotingEndpointName: Option[String],
40+
managementEndpointName: Option[String],
3941
secrets: Seq[Secret],
4042
annotations: Seq[Annotation] = Seq.empty,
4143
privileged: Boolean,
@@ -116,6 +118,8 @@ object Annotations extends LazyLogging {
116118
memory = args.memory.orElse(memory(labels)),
117119
cpu = args.cpu.orElse(cpu(labels)),
118120
endpoints = endpoints(selectArrayWithIndex(labels, ns("endpoints")), applicationVersion),
121+
remotingEndpointName = remotingEndpointName(labels),
122+
managementEndpointName = managementEndpointName(labels),
119123
secrets = secrets(selectArray(labels, ns("secrets"))),
120124
annotations = annotations(selectArray(labels, ns("annotations"))),
121125
privileged = privileged(labels),
@@ -211,6 +215,14 @@ object Annotations extends LazyLogging {
211215
value <- annotation.get("value")
212216
} yield Annotation(key, value)
213217

218+
private[annotations] def remotingEndpointName(labels: Map[String, String]): Option[String] =
219+
labels
220+
.get(ns("remoting-endpoint"))
221+
222+
private[annotations] def managementEndpointName(labels: Map[String, String]): Option[String] =
223+
labels
224+
.get(ns("management-endpoint"))
225+
214226
private[annotations] def endpoints(endpoints: Seq[(Int, Map[String, String])], version: Option[String]): Map[String, Endpoint] =
215227
endpoints.flatMap(v => endpoint(v._2, v._1, version)).toMap
216228

cli/shared/src/main/scala/com/lightbend/rp/reactivecli/annotations/package.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,5 +17,5 @@
1717
package com.lightbend.rp.reactivecli
1818

1919
package object annotations {
20-
val AkkaManagementPortName = "akka-mgmt-http"
20+
val legacyAkkaManagementPortName = "akka-mgmt-http"
2121
}

cli/shared/src/main/scala/com/lightbend/rp/reactivecli/runtime/kubernetes/PodTemplate.scala

Lines changed: 24 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,14 @@ object PodTemplate {
5858
appTypeEnvs(annotations.appType, annotations.modules),
5959
configEnvs(annotations.configResource),
6060
endpointEnvs(annotations.endpoints),
61-
akkaClusterEnvs(annotations.modules, annotations.namespace, serviceResourceName, noOfReplicas, annotations.akkaClusterBootstrapSystemName, akkaClusterJoinExisting),
61+
akkaClusterEnvs(
62+
annotations.modules,
63+
annotations.namespace,
64+
serviceResourceName,
65+
annotations.managementEndpointName.getOrElse(legacyAkkaManagementPortName),
66+
noOfReplicas,
67+
annotations.akkaClusterBootstrapSystemName,
68+
akkaClusterJoinExisting),
6269
externalServicesEnvs(annotations.modules, externalServices))
6370

6471
private[kubernetes] def appNameEnvs(appName: Option[String]): Map[String, EnvironmentVariable] =
@@ -71,14 +78,22 @@ object PodTemplate {
7178
if (modules.isEmpty) Seq.empty else Seq("RP_MODULES" -> LiteralEnvironmentVariable(modules.toVector.sorted.mkString(","))))
7279
}.toMap
7380

74-
private[kubernetes] def akkaClusterEnvs(modules: Set[String], namespace: Option[String], serviceResourceName: String, noOfReplicas: Int, akkaClusterBootstrapSystemName: Option[String], akkaClusterJoinExisting: Boolean): Map[String, EnvironmentVariable] =
81+
private[kubernetes] def akkaClusterEnvs(
82+
modules: Set[String],
83+
namespace: Option[String],
84+
serviceResourceName: String,
85+
managementEndpointName: String,
86+
noOfReplicas: Int,
87+
akkaClusterBootstrapSystemName: Option[String],
88+
akkaClusterJoinExisting: Boolean): Map[String, EnvironmentVariable] =
7589
if (!modules.contains(Module.AkkaClusterBootstrapping))
7690
Map.empty
7791
else
7892
Map(
7993
"RP_JAVA_OPTS" -> LiteralEnvironmentVariable(
8094
Seq(
8195
s"-Dakka.management.cluster.bootstrap.contact-point-discovery.discovery-method=kubernetes-api",
96+
s"-Dakka.management.cluster.bootstrap.contact-point-discovery.port-name=$managementEndpointName",
8297
s"-Dakka.management.cluster.bootstrap.contact-point-discovery.effective-name=$serviceResourceName",
8398
s"-Dakka.management.cluster.bootstrap.contact-point-discovery.required-contact-point-nr=$noOfReplicas",
8499
akkaClusterBootstrapSystemName.fold("-Dakka.discovery.kubernetes-api.pod-label-selector=appName=%s")(systemName => s"-Dakka.discovery.kubernetes-api.pod-label-selector=actorSystemName=$systemName"),
@@ -316,13 +331,18 @@ object PodTemplate {
316331
val enableChecks =
317332
annotations.modules.contains(Module.Status) && annotations.modules.contains(Module.AkkaManagement)
318333

334+
lazy val managementPortName =
335+
annotations
336+
.managementEndpointName
337+
.getOrElse(legacyAkkaManagementPortName)
338+
319339
val livenessProbe =
320340
if (enableChecks)
321341
Json("livenessProbe" ->
322342
Json(
323343
"httpGet" -> Json(
324344
"path" -> jString(HealthCheckUrl),
325-
"port" -> jString(AkkaManagementPortName)),
345+
"port" -> jString(managementPortName)),
326346
"periodSeconds" -> jNumber(StatusPeriodSeconds),
327347
"initialDelaySeconds" -> jNumber(LivenessInitialDelaySeconds)))
328348
else
@@ -334,7 +354,7 @@ object PodTemplate {
334354
Json(
335355
"httpGet" -> Json(
336356
"path" -> jString(ReadyCheckUrl),
337-
"port" -> jString(AkkaManagementPortName)),
357+
"port" -> jString(managementPortName)),
338358
"periodSeconds" -> jNumber(StatusPeriodSeconds)))
339359
else
340360
jEmptyObject

cli/shared/src/main/scala/com/lightbend/rp/reactivecli/runtime/marathon/RpEnvironmentVariables.scala

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ object RpEnvironmentVariables {
3838
appTypeEnvs(annotations.appType, annotations.modules),
3939
configEnvs(annotations.configResource),
4040
endpointEnvs(annotations.endpoints),
41-
akkaClusterEnvs(annotations.modules, annotations.namespace, serviceResourceName, noOfReplicas, annotations.akkaClusterBootstrapSystemName, akkaClusterJoinExisting),
41+
akkaClusterEnvs(annotations.modules, annotations.namespace, serviceResourceName, annotations.managementEndpointName.getOrElse(legacyAkkaManagementPortName), noOfReplicas, annotations.akkaClusterBootstrapSystemName, akkaClusterJoinExisting),
4242
externalServicesEnvs(annotations.modules, externalServices))
4343

4444
private def appNameEnvs(appName: Option[String]): Map[String, String] =
@@ -51,13 +51,21 @@ object RpEnvironmentVariables {
5151
if (modules.isEmpty) Seq.empty else Seq("RP_MODULES" -> modules.toVector.sorted.mkString(",")))
5252
}.toMap
5353

54-
private def akkaClusterEnvs(modules: Set[String], namespace: Option[String], serviceResourceName: String, noOfReplicas: Int, akkaClusterBootstrapSystemName: Option[String], akkaClusterJoinExisting: Boolean): Map[String, String] =
54+
private def akkaClusterEnvs(
55+
modules: Set[String],
56+
namespace: Option[String],
57+
serviceResourceName: String,
58+
managementEndpointName: String,
59+
noOfReplicas: Int,
60+
akkaClusterBootstrapSystemName: Option[String],
61+
akkaClusterJoinExisting: Boolean): Map[String, String] =
5562
if (!modules.contains(Module.AkkaClusterBootstrapping))
5663
Map.empty
5764
else
5865
Map(
5966
"RP_JAVA_OPTS" -> Seq(
6067
s"-Dakka.management.cluster.bootstrap.contact-point-discovery.discovery-method=marathon-api",
68+
s"-Dakka.management.cluster.bootstrap.contact-point-discovery.port-name=$managementEndpointName",
6169
s"-Dakka.management.cluster.bootstrap.contact-point-discovery.effective-name=$serviceResourceName",
6270
s"-Dakka.management.cluster.bootstrap.contact-point-discovery.required-contact-point-nr=$noOfReplicas",
6371
akkaClusterBootstrapSystemName.fold("-Dakka.discovery.marathon-api.app-label-query=APP_NAME==%s")(systemName => s"-Dakka.discovery.marathon-api.app-label-query=ACTOR_SYSTEM_NAME==$systemName"),

cli/shared/src/main/scala/com/lightbend/rp/reactivecli/runtime/marathon/package.scala

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -134,12 +134,17 @@ package object marathon {
134134
val enableChecks =
135135
annotations.modules.contains(Module.Status) && annotations.modules.contains(Module.AkkaManagement)
136136

137+
val managementPortName =
138+
annotations
139+
.managementEndpointName
140+
.getOrElse(legacyAkkaManagementPortName)
141+
137142
val checkPortName =
138-
portName(AkkaManagementPortName)
143+
portName(managementPortName)
139144

140145
val checkPortIndex =
141146
sortedEndpoints
142-
.find(_.name == AkkaManagementPortName)
147+
.find(_.name == managementPortName)
143148
.map(_.index)
144149
.getOrElse(0)
145150

cli/shared/src/test/scala/com/lightbend/rp/reactivecli/annotations/AnnotationsTest.scala

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,8 @@ object AnnotationsTest extends TestSuite {
120120
memory = None,
121121
cpu = None,
122122
endpoints = Map.empty,
123+
remotingEndpointName = None,
124+
managementEndpointName = None,
123125
secrets = Seq.empty,
124126
privileged = false,
125127
environmentVariables = Map.empty,
@@ -176,6 +178,8 @@ object AnnotationsTest extends TestSuite {
176178
"com.lightbend.rp.endpoints.2.name" -> "ep3",
177179
"com.lightbend.rp.endpoints.2.protocol" -> "udp",
178180
"com.lightbend.rp.endpoints.2.port" -> "1234",
181+
"com.lightbend.rp.remoting-endpoint" -> "remoting",
182+
"com.lightbend.rp.management-endpoint" -> "management",
179183
"com.lightbend.rp.annotations.0.key" -> "annotationKey0",
180184
"com.lightbend.rp.annotations.0.value" -> "annotationValue0",
181185
"com.lightbend.rp.annotations.1.key" -> "annotationKey1",
@@ -198,6 +202,8 @@ object AnnotationsTest extends TestSuite {
198202
"ep1" -> HttpEndpoint(0, "ep1", 0, Seq(HttpIngress(Seq(80, 443), Seq("hello.com"), Seq("^/.*")))),
199203
"ep2" -> TcpEndpoint(1, "ep2", 1234),
200204
"ep3" -> UdpEndpoint(2, "ep3", 1234)),
205+
remotingEndpointName = Some("remoting"),
206+
managementEndpointName = Some("management"),
201207
secrets = Seq.empty,
202208
annotations = Vector(
203209
Annotation("annotationKey0", "annotationValue0"),
@@ -240,6 +246,8 @@ object AnnotationsTest extends TestSuite {
240246
memory = Some(1024),
241247
cpu = Some(0.5),
242248
endpoints = Map.empty,
249+
remotingEndpointName = None,
250+
managementEndpointName = None,
243251
secrets = Seq.empty,
244252
privileged = false,
245253
environmentVariables = Map(
@@ -266,6 +274,8 @@ object AnnotationsTest extends TestSuite {
266274
memory = None,
267275
cpu = None,
268276
endpoints = Map.empty,
277+
remotingEndpointName = None,
278+
managementEndpointName = None,
269279
secrets = Seq.empty,
270280
privileged = false,
271281
environmentVariables = Map.empty,
@@ -288,6 +298,8 @@ object AnnotationsTest extends TestSuite {
288298
memory = None,
289299
cpu = None,
290300
endpoints = Map.empty,
301+
remotingEndpointName = None,
302+
managementEndpointName = None,
291303
secrets = Seq.empty,
292304
privileged = false,
293305
environmentVariables = Map.empty,
@@ -310,6 +322,8 @@ object AnnotationsTest extends TestSuite {
310322
memory = None,
311323
cpu = None,
312324
endpoints = Map.empty,
325+
remotingEndpointName = None,
326+
managementEndpointName = None,
313327
secrets = Seq.empty,
314328
privileged = false,
315329
environmentVariables = Map.empty,
@@ -338,6 +352,8 @@ object AnnotationsTest extends TestSuite {
338352
cpu = None,
339353
endpoints = Map(
340354
"ep2" -> TcpEndpoint(1, "ep2", 1234)),
355+
remotingEndpointName = None,
356+
managementEndpointName = None,
341357
secrets = Seq.empty,
342358
privileged = false,
343359
environmentVariables = Map.empty,
@@ -364,6 +380,8 @@ object AnnotationsTest extends TestSuite {
364380
cpu = None,
365381
endpoints = Map(
366382
"ep2" -> TcpEndpoint(1, "ep2", 1234)),
383+
remotingEndpointName = None,
384+
managementEndpointName = None,
367385
secrets = Seq.empty,
368386
privileged = false,
369387
environmentVariables = Map.empty,

0 commit comments

Comments
 (0)