You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by re...@apache.org on 2020/02/10 12:43:20 UTC
[tomcat] branch 9.0.x updated: Improve Kubernetes environment
lookups
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 <re...@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-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org