[3.0] Kubernetes Client dependency upgrade (#7603)

* upgrade fabric version, use http protocol in ut instead
This commit is contained in:
Albumen Kevin 2021-04-22 19:19:48 +08:00 committed by GitHub
parent 0a5a709c68
commit e93338749a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 33 additions and 26 deletions

View File

@ -148,7 +148,7 @@
<eureka.version>1.9.12</eureka.version>
<!-- Fabric8 for Kubernetes -->
<fabric8_kubernetes_version>4.10.3</fabric8_kubernetes_version>
<fabric8_kubernetes_version>5.3.0</fabric8_kubernetes_version>
<!-- Alibaba -->
<alibaba_spring_context_support_version>1.0.8</alibaba_spring_context_support_version>

View File

@ -34,13 +34,14 @@ import io.fabric8.kubernetes.api.model.EndpointPort;
import io.fabric8.kubernetes.api.model.EndpointSubset;
import io.fabric8.kubernetes.api.model.Endpoints;
import io.fabric8.kubernetes.api.model.Pod;
import io.fabric8.kubernetes.api.model.PodBuilder;
import io.fabric8.kubernetes.api.model.Service;
import io.fabric8.kubernetes.client.Config;
import io.fabric8.kubernetes.client.DefaultKubernetesClient;
import io.fabric8.kubernetes.client.KubernetesClient;
import io.fabric8.kubernetes.client.KubernetesClientException;
import io.fabric8.kubernetes.client.Watch;
import io.fabric8.kubernetes.client.Watcher;
import io.fabric8.kubernetes.client.WatcherException;
import java.util.HashSet;
import java.util.LinkedList;
@ -123,11 +124,12 @@ public class KubernetesServiceDiscovery implements ServiceDiscovery {
.pods()
.inNamespace(namespace)
.withName(currentHostname)
.edit()
.editOrNewMetadata()
.addToAnnotations(KUBERNETES_PROPERTIES_KEY, JSONObject.toJSONString(serviceInstance.getMetadata()))
.endMetadata()
.done();
.edit(pod->
new PodBuilder(pod)
.editOrNewMetadata()
.addToAnnotations(KUBERNETES_PROPERTIES_KEY, JSONObject.toJSONString(serviceInstance.getMetadata()))
.endMetadata()
.build());
if (logger.isInfoEnabled()) {
logger.info("Write Current Service Instance Metadata to Kubernetes pod. " +
"Current pod name: " + currentHostname);
@ -149,11 +151,12 @@ public class KubernetesServiceDiscovery implements ServiceDiscovery {
.pods()
.inNamespace(namespace)
.withName(currentHostname)
.edit()
.editOrNewMetadata()
.removeFromAnnotations(KUBERNETES_PROPERTIES_KEY)
.endMetadata()
.done();
.edit(pod ->
new PodBuilder(pod)
.editOrNewMetadata()
.removeFromAnnotations(KUBERNETES_PROPERTIES_KEY)
.endMetadata()
.build());
if (logger.isInfoEnabled()) {
logger.info("Remove Current Service Instance from Kubernetes pod. Current pod name: " + currentHostname);
}
@ -222,7 +225,7 @@ public class KubernetesServiceDiscovery implements ServiceDiscovery {
}
@Override
public void onClose(KubernetesClientException cause) {
public void onClose(WatcherException cause) {
// ignore
}
});
@ -253,7 +256,7 @@ public class KubernetesServiceDiscovery implements ServiceDiscovery {
}
@Override
public void onClose(KubernetesClientException cause) {
public void onClose(WatcherException cause) {
// ignore
}
});
@ -284,7 +287,7 @@ public class KubernetesServiceDiscovery implements ServiceDiscovery {
}
@Override
public void onClose(KubernetesClientException cause) {
public void onClose(WatcherException cause) {
// ignore
}
});

View File

@ -30,7 +30,7 @@ import io.fabric8.kubernetes.api.model.PodBuilder;
import io.fabric8.kubernetes.api.model.Service;
import io.fabric8.kubernetes.api.model.ServiceBuilder;
import io.fabric8.kubernetes.client.Config;
import io.fabric8.kubernetes.client.KubernetesClient;
import io.fabric8.kubernetes.client.NamespacedKubernetesClient;
import io.fabric8.kubernetes.client.server.mock.KubernetesServer;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Assertions;
@ -47,9 +47,9 @@ import java.util.Map;
@ExtendWith({MockitoExtension.class})
public class KubernetesServiceDiscoveryTest {
public KubernetesServer mockServer = new KubernetesServer(true, true);
public KubernetesServer mockServer = new KubernetesServer(false, true);
private KubernetesClient mockClient;
private NamespacedKubernetesClient mockClient;
private ServiceInstancesChangedListener mockListener = Mockito.mock(ServiceInstancesChangedListener.class);
@ -64,7 +64,7 @@ public class KubernetesServiceDiscoveryTest {
serverUrl = URL.valueOf(mockClient.getConfiguration().getMasterUrl())
.setProtocol("kubernetes")
.addParameter(KubernetesClientConst.TRUST_CERTS, "true")
.addParameter(KubernetesClientConst.USE_HTTPS, "false")
.addParameter(KubernetesClientConst.HTTP2_DISABLE, "true");
System.setProperty(Config.KUBERNETES_AUTH_TRYKUBECONFIG_SYSTEM_PROPERTY, "false");
@ -116,16 +116,20 @@ public class KubernetesServiceDiscoveryTest {
Mockito.doNothing().when(mockListener).onEvent(Mockito.any());
serviceDiscovery.addServiceInstancesChangedListener(mockListener);
mockClient.endpoints().withName("TestService").edit().editFirstSubset()
.addNewAddress().withIp("ip2")
.withNewTargetRef().withUid("uid2").withName("TestServer").endTargetRef().endAddress()
.addNewPort("Test", "Test", 12345, "TCP").endSubset()
.done();
mockClient.endpoints().withName("TestService")
.edit(endpoints ->
new EndpointsBuilder(endpoints)
.editFirstSubset()
.addNewAddress()
.withIp("ip2")
.withNewTargetRef().withUid("uid2").withName("TestServer").endTargetRef()
.endAddress().endSubset()
.build());
Thread.sleep(5000);
ArgumentCaptor<ServiceInstancesChangedEvent> eventArgumentCaptor =
ArgumentCaptor.forClass(ServiceInstancesChangedEvent.class);
Mockito.verify(mockListener).onEvent(eventArgumentCaptor.capture());
Mockito.verify(mockListener, Mockito.times(2)).onEvent(eventArgumentCaptor.capture());
Assertions.assertEquals(2, eventArgumentCaptor.getValue().getServiceInstances().size());
serviceDiscovery.unregister(serviceInstance);
@ -158,7 +162,7 @@ public class KubernetesServiceDiscoveryTest {
Thread.sleep(5000);
ArgumentCaptor<ServiceInstancesChangedEvent> eventArgumentCaptor =
ArgumentCaptor.forClass(ServiceInstancesChangedEvent.class);
Mockito.verify(mockListener).onEvent(eventArgumentCaptor.capture());
Mockito.verify(mockListener, Mockito.times(2)).onEvent(eventArgumentCaptor.capture());
Assertions.assertEquals(1, eventArgumentCaptor.getValue().getServiceInstances().size());
serviceDiscovery.unregister(serviceInstance);