Reconnect Watch For ConfigMaps And Secrets (#842)

* Add reconnect logic when watch is closed

* Fix version numbers in deployment files
This commit is contained in:
Ryan Baxter
2021-08-16 08:52:46 -04:00
committed by GitHub
parent aef26985c9
commit 888031daf7
9 changed files with 27 additions and 9 deletions

View File

@@ -60,7 +60,7 @@ items:
serviceAccount: spring-cloud-kubernetes-configuration-watcher
containers:
- name: spring-cloud-kubernetes-configuration-watcher
image: springcloud/spring-cloud-kubernetes-configuration-watcher:2.0.3-SNAPSHOT
image: springcloud/spring-cloud-kubernetes-configuration-watcher:2.0.4-SNAPSHOT
imagePullPolicy: IfNotPresent
readinessProbe:
httpGet:

View File

@@ -16,13 +16,16 @@
package org.springframework.cloud.kubernetes.fabric8.config.reload;
import java.net.HttpURLConnection;
import java.util.HashMap;
import java.util.Map;
import java.util.Optional;
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import io.fabric8.kubernetes.api.model.ConfigMap;
import io.fabric8.kubernetes.api.model.Status;
import io.fabric8.kubernetes.client.KubernetesClient;
import io.fabric8.kubernetes.client.KubernetesClientException;
import io.fabric8.kubernetes.client.Watch;
@@ -84,7 +87,13 @@ public class EventBasedConfigMapChangeDetector extends ConfigurationChangeDetect
}
@Override
public void onClose(KubernetesClientException e) {
public void onClose(KubernetesClientException exception) {
log.warn("ConfigMaps watch closed", exception);
Optional.ofNullable(exception).map(e -> {
log.debug("Exception received during watch", e);
return exception;
}).map(KubernetesClientException::getStatus).map(Status::getCode)
.filter(c -> c.equals(HttpURLConnection.HTTP_GONE)).ifPresent(c -> watch());
}
}));
activated = true;

View File

@@ -16,13 +16,16 @@
package org.springframework.cloud.kubernetes.fabric8.config.reload;
import java.net.HttpURLConnection;
import java.util.HashMap;
import java.util.Map;
import java.util.Optional;
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import io.fabric8.kubernetes.api.model.Secret;
import io.fabric8.kubernetes.api.model.Status;
import io.fabric8.kubernetes.client.KubernetesClient;
import io.fabric8.kubernetes.client.KubernetesClientException;
import io.fabric8.kubernetes.client.Watch;
@@ -85,7 +88,13 @@ public class EventBasedSecretsChangeDetector extends ConfigurationChangeDetector
}
@Override
public void onClose(KubernetesClientException e) {
public void onClose(KubernetesClientException exception) {
log.warn("Secrects watch closed", exception);
Optional.ofNullable(exception).map(e -> {
log.debug("Exception received during watch", e);
return exception;
}).map(KubernetesClientException::getStatus).map(Status::getCode)
.filter(c -> c.equals(HttpURLConnection.HTTP_GONE)).ifPresent(c -> watch());
}
}));
activated = true;

View File

@@ -19,7 +19,7 @@ spec:
spec:
serviceAccountName: spring-cloud-kubernetes-serviceaccount
containers:
- image: springcloud/spring-cloud-kubernetes-client-config-it:2.0.3-SNAPSHOT
- image: springcloud/spring-cloud-kubernetes-client-config-it:2.0.4-SNAPSHOT
imagePullPolicy: IfNotPresent
name: spring-cloud-kubernetes-client-config-it
resources: {}

View File

@@ -19,7 +19,7 @@ spec:
spec:
serviceAccountName: spring-cloud-kubernetes-serviceaccount
containers:
- image: springcloud/spring-cloud-kubernetes-client-config-it:2.0.3-SNAPSHOT
- image: springcloud/spring-cloud-kubernetes-client-config-it:2.0.4-SNAPSHOT
imagePullPolicy: IfNotPresent
name: spring-cloud-kubernetes-client-config-it
resources: {}

View File

@@ -19,7 +19,7 @@ spec:
spec:
serviceAccountName: spring-cloud-kubernetes-serviceaccount
containers:
- image: springcloud/spring-cloud-kubernetes-client-loadbalancer-it:2.0.3-SNAPSHOT
- image: springcloud/spring-cloud-kubernetes-client-loadbalancer-it:2.0.4-SNAPSHOT
imagePullPolicy: IfNotPresent
name: spring-cloud-kubernetes-client-loadbalancer-it
resources: {}

View File

@@ -19,7 +19,7 @@ spec:
spec:
serviceAccountName: spring-cloud-kubernetes-serviceaccount
containers:
- image: springcloud/spring-cloud-kubernetes-client-reactive-discovery-it:2.0.3-SNAPSHOT
- image: springcloud/spring-cloud-kubernetes-client-reactive-discovery-it:2.0.4-SNAPSHOT
imagePullPolicy: IfNotPresent
name: spring-cloud-kubernetes-client-reactive-discovery-it
resources: {}

View File

@@ -18,7 +18,7 @@ spec:
app: k8s-demo-app
spec:
containers:
- image: docker.io/springcloud/spring-cloud-kubernetes-configuration-watcher-it:2.0.3-SNAPSHOT
- image: docker.io/springcloud/spring-cloud-kubernetes-configuration-watcher-it:2.0.4-SNAPSHOT
name: spring-cloud-kubernetes-configuration-watcher-it
resources: {}
env:

View File

@@ -19,7 +19,7 @@ spec:
spec:
serviceAccountName: spring-cloud-kubernetes-serviceaccount
containers:
- image: springcloud/spring-cloud-kubernetes-core-k8s-client-it:2.0.3-SNAPSHOT
- image: springcloud/spring-cloud-kubernetes-core-k8s-client-it:2.0.4-SNAPSHOT
imagePullPolicy: IfNotPresent
name: spring-cloud-kubernetes-core-k8s-client-it
resources: {}