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 <r...@apache.org> 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: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org