This is an automated email from the ASF dual-hosted git repository.
remm pushed a commit to branch 9.0.x
in repository https://gitbox.apache.org/repos/asf/tomcat.git
The following commit(s) were added to refs/heads/9.0.x by this push:
new 65e6925 Improve Kubernetes environment lookups
65e6925 is described below
commit 65e6925fabc8e707c2b6a91667e35721a8d4501d
Author: remm <[email protected]>
AuthorDate: Mon Feb 10 13:26:26 2020 +0100
Improve Kubernetes environment lookups
Fix lookup order by looking for specific names first, then the standard
Kubernetes ones, otherwise overriding will most likely not work.
Also add a dedicated name for the DNS service, that will default to
getNamespace() if not present.
Submitted by Bernd Bohmann.
---
.../tribes/membership/cloud/CloudMembershipProvider.java | 2 +-
.../tribes/membership/cloud/DNSMembershipProvider.java | 15 +++++++++------
.../membership/cloud/KubernetesMembershipProvider.java | 16 ++++++++--------
webapps/docs/changelog.xml | 9 +++++++++
4 files changed, 27 insertions(+), 15 deletions(-)
diff --git
a/java/org/apache/catalina/tribes/membership/cloud/CloudMembershipProvider.java
b/java/org/apache/catalina/tribes/membership/cloud/CloudMembershipProvider.java
index f33aed6..22f9a95 100644
---
a/java/org/apache/catalina/tribes/membership/cloud/CloudMembershipProvider.java
+++
b/java/org/apache/catalina/tribes/membership/cloud/CloudMembershipProvider.java
@@ -88,7 +88,7 @@ public abstract class CloudMembershipProvider extends
MembershipProviderBase imp
* @return the namespace
*/
protected String getNamespace() {
- String namespace = getEnv("KUBERNETES_NAMESPACE", CUSTOM_ENV_PREFIX +
"NAMESPACE");
+ String namespace = getEnv(CUSTOM_ENV_PREFIX + "NAMESPACE",
"KUBERNETES_NAMESPACE");
if (namespace == null || namespace.length() == 0) {
log.warn(sm.getString("kubernetesMembershipProvider.noNamespace"));
namespace = "tomcat";
diff --git
a/java/org/apache/catalina/tribes/membership/cloud/DNSMembershipProvider.java
b/java/org/apache/catalina/tribes/membership/cloud/DNSMembershipProvider.java
index 25fcff1..7b57d97 100644
---
a/java/org/apache/catalina/tribes/membership/cloud/DNSMembershipProvider.java
+++
b/java/org/apache/catalina/tribes/membership/cloud/DNSMembershipProvider.java
@@ -33,7 +33,7 @@ import org.apache.juli.logging.LogFactory;
public class DNSMembershipProvider extends CloudMembershipProvider {
private static final Log log =
LogFactory.getLog(DNSMembershipProvider.class);
- private String namespace;
+ private String dnsServiceName;
@Override
public void start(int level) throws Exception {
@@ -44,12 +44,15 @@ public class DNSMembershipProvider extends
CloudMembershipProvider {
super.start(level);
// Set up Kubernetes API parameters
- namespace = getNamespace();
+ dnsServiceName = getEnv("DNS_MEMBERSHIP_SERVICE_NAME");
+ if (dnsServiceName == null) {
+ dnsServiceName = getNamespace();
+ }
if (log.isDebugEnabled()) {
- log.debug(String.format("Namespace [%s] set; clustering enabled",
namespace));
+ log.debug(String.format("Namespace [%s] set; clustering enabled",
dnsServiceName));
}
- namespace = URLEncoder.encode(namespace, "UTF-8");
+ dnsServiceName = URLEncoder.encode(dnsServiceName, "UTF-8");
// Fetch initial members
heartbeat();
@@ -66,9 +69,9 @@ public class DNSMembershipProvider extends
CloudMembershipProvider {
InetAddress[] inetAddresses = null;
try {
- inetAddresses = InetAddress.getAllByName(namespace);
+ inetAddresses = InetAddress.getAllByName(dnsServiceName);
} catch (UnknownHostException exception) {
- log.warn(sm.getString("dnsMembershipProvider.dnsError",
namespace), exception);
+ log.warn(sm.getString("dnsMembershipProvider.dnsError",
dnsServiceName), exception);
}
if (inetAddresses != null) {
diff --git
a/java/org/apache/catalina/tribes/membership/cloud/KubernetesMembershipProvider.java
b/java/org/apache/catalina/tribes/membership/cloud/KubernetesMembershipProvider.java
index 2950f5a..ce2b1b1 100644
---
a/java/org/apache/catalina/tribes/membership/cloud/KubernetesMembershipProvider.java
+++
b/java/org/apache/catalina/tribes/membership/cloud/KubernetesMembershipProvider.java
@@ -57,12 +57,12 @@ public class KubernetesMembershipProvider extends
CloudMembershipProvider {
log.debug(String.format("Namespace [%s] set; clustering enabled",
namespace));
}
- String protocol = getEnv("KUBERNETES_MASTER_PROTOCOL",
CUSTOM_ENV_PREFIX + "MASTER_PROTOCOL");
- String masterHost = getEnv("KUBERNETES_SERVICE_HOST",
CUSTOM_ENV_PREFIX + "MASTER_HOST");
- String masterPort = getEnv("KUBERNETES_SERVICE_PORT",
CUSTOM_ENV_PREFIX + "MASTER_PORT");
+ String protocol = getEnv(CUSTOM_ENV_PREFIX + "MASTER_PROTOCOL",
"KUBERNETES_MASTER_PROTOCOL");
+ String masterHost = getEnv(CUSTOM_ENV_PREFIX + "MASTER_HOST",
"KUBERNETES_SERVICE_HOST");
+ String masterPort = getEnv(CUSTOM_ENV_PREFIX + "MASTER_PORT",
"KUBERNETES_SERVICE_PORT");
- String clientCertificateFile =
getEnv("KUBERNETES_CLIENT_CERTIFICATE_FILE", CUSTOM_ENV_PREFIX +
"CLIENT_CERT_FILE");
- String caCertFile = getEnv("KUBERNETES_CA_CERTIFICATE_FILE",
CUSTOM_ENV_PREFIX + "CA_CERT_FILE");
+ String clientCertificateFile = getEnv(CUSTOM_ENV_PREFIX +
"CLIENT_CERT_FILE", "KUBERNETES_CLIENT_CERTIFICATE_FILE");
+ String caCertFile = getEnv(CUSTOM_ENV_PREFIX + "CA_CERT_FILE",
"KUBERNETES_CA_CERTIFICATE_FILE");
if (caCertFile == null) {
caCertFile =
"/var/run/secrets/kubernetes.io/serviceaccount/ca.crt";
}
@@ -71,7 +71,7 @@ public class KubernetesMembershipProvider extends
CloudMembershipProvider {
if (protocol == null) {
protocol = "https";
}
- String saTokenFile = getEnv("SA_TOKEN_FILE", CUSTOM_ENV_PREFIX +
"SA_TOKEN_FILE");
+ String saTokenFile = getEnv(CUSTOM_ENV_PREFIX + "SA_TOKEN_FILE",
"SA_TOKEN_FILE");
if (saTokenFile == null) {
saTokenFile =
"/var/run/secrets/kubernetes.io/serviceaccount/token";
}
@@ -94,11 +94,11 @@ public class KubernetesMembershipProvider extends
CloudMembershipProvider {
streamProvider = new
CertificateStreamProvider(clientCertificateFile, clientKeyFile,
clientKeyPassword, clientKeyAlgo, caCertFile);
}
- String ver = getEnv("KUBERNETES_API_VERSION", CUSTOM_ENV_PREFIX +
"API_VERSION");
+ String ver = getEnv(CUSTOM_ENV_PREFIX + "API_VERSION",
"KUBERNETES_API_VERSION");
if (ver == null)
ver = "v1";
- String labels = getEnv("KUBERNETES_LABELS", CUSTOM_ENV_PREFIX +
"LABELS");
+ String labels = getEnv(CUSTOM_ENV_PREFIX + "LABELS",
"KUBERNETES_LABELS");
namespace = URLEncoder.encode(namespace, "UTF-8");
labels = labels == null ? null : URLEncoder.encode(labels, "UTF-8");
diff --git a/webapps/docs/changelog.xml b/webapps/docs/changelog.xml
index 2041539..82c6ea9 100644
--- a/webapps/docs/changelog.xml
+++ b/webapps/docs/changelog.xml
@@ -66,6 +66,15 @@
</scode>
</changelog>
</subsection>
+ <subsection name="Cluster">
+ <changelog>
+ <fix>
+ Fix cloud environment lookup order and add a dedicated
+ <code>DNS_MEMBERSHIP_SERVICE_NAME</code> environment for use with the
+ DNS membership provider. Submitted by Bernd Bohmann. (remm)
+ </fix>
+ </changelog>
+ </subsection>
<subsection name="Other">
<changelog>
<add>
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]