From 71afad6c06c2587df1c82b3c1144142edde2d43f Mon Sep 17 00:00:00 2001 From: buildmaster Date: Wed, 3 Jul 2019 18:08:07 +0000 Subject: [PATCH] Update SNAPSHOT to 1.1.0.M1 --- README.adoc | 104 ++++++++++++++---- docs/pom.xml | 2 +- pom.xml | 10 +- spring-cloud-kubernetes-config/pom.xml | 2 +- .../config/ConfigMapPropertySource.java | 11 +- .../config/ConfigMapsFromFilePathsTests.java | 3 +- .../config/ConfigMapsMixedTests.java | 4 +- ...ConfigMapsWithActiveProfilesNameTests.java | 7 +- spring-cloud-kubernetes-core/pom.xml | 2 +- ...rnetesProfileEnvironmentPostProcessor.java | 3 +- spring-cloud-kubernetes-dependencies/pom.xml | 4 +- spring-cloud-kubernetes-discovery/pom.xml | 2 +- .../greeting-service/pom.xml | 2 +- .../name-service/pom.xml | 2 +- .../pom.xml | 2 +- .../kubernetes-hello-world-example/pom.xml | 2 +- .../pom.xml | 2 +- .../kubernetes-reload-example/pom.xml | 2 +- .../kubernetes-zipkin-example/pom.xml | 2 +- spring-cloud-kubernetes-examples/pom.xml | 2 +- .../discovery/discovery-client/pom.xml | 2 +- .../discovery/discovery-service-a/pom.xml | 2 +- .../discovery/discovery-service-b/pom.xml | 2 +- .../discovery/pom.xml | 2 +- .../discovery/tests/pom.xml | 2 +- .../istio/pom.xml | 2 +- .../pom.xml | 2 +- .../simple-configmap/pom.xml | 2 +- .../simple-core/pom.xml | 2 +- spring-cloud-kubernetes-istio/pom.xml | 2 +- spring-cloud-kubernetes-leader/pom.xml | 2 +- .../leader/LeaderAutoConfigurationTests.java | 3 +- spring-cloud-kubernetes-ribbon/pom.xml | 2 +- .../ribbon/KubernetesEndpointsServerList.java | 29 ++--- .../KubernetesRibbonClientConfiguration.java | 2 +- .../ribbon/KubernetesServerList.java | 17 +-- .../ribbon/KubernetesServicesServerList.java | 28 +++-- .../ribbon/RibbonWithServiceModeTest.java | 53 +++++---- spring-cloud-starter-kubernetes-all/pom.xml | 2 +- .../pom.xml | 2 +- .../pom.xml | 2 +- spring-cloud-starter-kubernetes/pom.xml | 2 +- 42 files changed, 202 insertions(+), 132 deletions(-) diff --git a/README.adoc b/README.adoc index b2301858..bd9e5c38 100644 --- a/README.adoc +++ b/README.adoc @@ -124,6 +124,10 @@ spring.cloud.kubernetes.discovery.enabled=false Some Spring Cloud components use the `DiscoveryClient` in order to obtain information about the local service instance. For this to work, you need to align the Kubernetes service name with the `spring.application.name` property. +Spring Cloud Kubernetes can also watch the Kubernetes service catalog for changes and update the +`DiscoveryClient` implementation accordingly. In order to enable this functionality you need to add +`@EnableScheduling` on a configuration class in your application. + == Kubernetes native service discovery Kubernetes itself is capable of (server side) service discovery (see: https://kubernetes.io/docs/concepts/services-networking/service/#discovering-services). @@ -138,7 +142,7 @@ Additionally, you can use Hystrix for: == Kubernetes PropertySource implementations -The most common approach to configuring your Spring Boot application is to create an `application.properties` or `applicaiton.yaml` or +The most common approach to configuring your Spring Boot application is to create an `application.properties` or `application.yaml` or an `application-profile.properties` or `application-profile.yaml` file that contains key-value pairs that provide customization values to your application or Spring Boot starters. You can override these properties by specifying system properties or environment variables. @@ -320,26 +324,89 @@ However, if the `production` profile is active, the configuration becomes: If both profiles are active, the property that appears last within the `ConfigMap` overwrites any preceding values. - -To tell Spring Boot which `profile` should be enabled at bootstrap, you can pass a system property to the Java -command. To do so, you can launch your Spring Boot application with an environment variable that you can define with the OpenShift -`DeploymentConfig` or Kubernetes `ReplicationConfig` resource file, as follows: +Another option is to create a different config map per profile and spring boot will automatically fetch it based +on active profiles ==== [source,yaml] ---- +kind: ConfigMap apiVersion: v1 -kind: DeploymentConfig +metadata: + name: demo +data: + application.yml: |- + greeting: + message: Say Hello to the World + farewell: + message: Say Goodbye +---- +==== +==== +[source,yaml] +---- +kind: ConfigMap +apiVersion: v1 +metadata: + name: demo-development +data: + application.yml: |- + spring: + profiles: development + greeting: + message: Say Hello to the Developers + farewell: + message: Say Goodbye to the Developers +---- +==== +==== +[source,yaml] +---- +kind: ConfigMap +apiVersion: v1 +metadata: + name: demo-production +data: + application.yml: |- + spring: + profiles: production + greeting: + message: Say Hello to the Ops + farewell: + message: Say Goodbye +---- +==== + + +To tell Spring Boot which `profile` should be enabled at bootstrap, you can pass `SPRING_PROFILES_ACTIVE` environment variable. + To do so, you can launch your Spring Boot application with an environment variable that you can define it in the PodSpec at the container specification. + Deployment resource file, as follows: + +==== +[source,yaml] +---- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: deployment-name + labels: + app: deployment-name spec: replicas: 1 - ... - spec: - containers: - - env: - - name: JAVA_APP_DIR - value: /deployments - - name: JAVA_OPTIONS - value: -Dspring.profiles.active=developer + selector: + matchLabels: + app: deployment-name + template: + metadata: + labels: + app: deployment-name + spec: + containers: + - name: container-name + image: your-image + env: + - name: SPRING_PROFILES_ACTIVE + value: "development" ---- ==== @@ -584,7 +651,7 @@ The reload feature supports two operating modes: Any event produces a re-check on the configuration and, in case of changes, a reload. The `view` role on the service account is required in order to listen for config map changes. A higher level role (such as `edit`) is required for secrets (by default, secrets are not monitored). -* Polling: Oeriodically re-creates the configuration from config maps and secrets to see if it has changed. +* Polling: Periodically re-creates the configuration from config maps and secrets to see if it has changed. You can configure the polling period by using the `spring.cloud.kubernetes.reload.period` property and defaults to 15 seconds. It requires the same role as the monitored property source. This means, for example, that using polling on file-mounted secret sources does not require particular privileges. @@ -596,7 +663,7 @@ This means, for example, that using polling on file-mounted secret sources does | `spring.cloud.kubernetes.reload.enabled` | `Boolean` | `false` | Enables monitoring of property sources and configuration reload | `spring.cloud.kubernetes.reload.monitoring-config-maps` | `Boolean` | `true` | Allow monitoring changes in config maps | `spring.cloud.kubernetes.reload.monitoring-secrets` | `Boolean` | `false` | Allow monitoring changes in secrets -| `spring.cloud.kubernetes.reload.strategy ` | `Enum` | `refresh` | The strategy to use when firing a reload (`refresh`, `restart_context`, or `shutdown`) +| `spring.cloud.kubernetes.reload.strategy` | `Enum` | `refresh` | The strategy to use when firing a reload (`refresh`, `restart_context`, or `shutdown`) | `spring.cloud.kubernetes.reload.mode` | `Enum` | `event` | Specifies how to listen for changes in property sources (`event` or `polling`) | `spring.cloud.kubernetes.reload.period` | `Duration`| `15s` | The period for verifying changes when using the `polling` strategy |=== @@ -652,7 +719,6 @@ the `PortName` key. If you want to specify in which Kubernetes namespace the tar the `KubernetesNamespace` key, remembering in both instances to prefix these keys with your service name and `ribbon` prefix, as specified earlier. - .Spring Cloud Kubernetes Ribbon Configuration |=== |Property Key |Type |Default Value @@ -679,7 +745,6 @@ the `SERVICE` mode uses load balancing of the Kubernetes service to support Isti * `spring.cloud.kubernetes.ribbon.cluster-domain` Set the custom Kubernetes cluster domain suffix. The default value is: 'cluster.local' - The following examples use this module for ribbon discovery: * link:./spring-cloud-kubernetes-examples/kubernetes-circuitbreaker-ribbon-example[Spring Cloud Circuitbreaker and Ribbon] @@ -1011,6 +1076,7 @@ $ touch .springformat ==== Intellij IDEA In order to setup Intellij you should import our coding conventions, inspection profiles and set up the checkstyle plugin. +The following files can be found in the https://github.com/spring-cloud/spring-cloud-build/tree/master/spring-cloud-build-tools[Spring Cloud Build] project. .spring-cloud-build-tools/ ---- @@ -1055,4 +1121,4 @@ Go to `File` -> `Settings` -> `Other settings` -> `Checkstyle`. There click on t - `checkstyle.suppressions.file` - default suppressions. Please point it to the Spring Cloud Build's, `spring-cloud-build-tools/src/checkstyle/checkstyle-suppressions.xml` file either in your cloned repo or via the `https://raw.githubusercontent.com/spring-cloud/spring-cloud-build/master/spring-cloud-build-tools/src/checkstyle/checkstyle-suppressions.xml` URL. - `checkstyle.additional.suppressions.file` - this variable corresponds to suppressions in your local project. E.g. you're working on `spring-cloud-contract`. Then point to the `project-root/src/checkstyle/checkstyle-suppressions.xml` folder. Example for `spring-cloud-contract` would be: `/home/username/spring-cloud-contract/src/checkstyle/checkstyle-suppressions.xml`. -IMPORTANT: Remember to set the `Scan Scope` to `All sources` since we apply checkstyle rules for production and test sources. +IMPORTANT: Remember to set the `Scan Scope` to `All sources` since we apply checkstyle rules for production and test sources. \ No newline at end of file diff --git a/docs/pom.xml b/docs/pom.xml index eded83fe..ede2cc05 100644 --- a/docs/pom.xml +++ b/docs/pom.xml @@ -8,7 +8,7 @@ org.springframework.cloud spring-cloud-kubernetes - 1.1.0.BUILD-SNAPSHOT + 1.1.0.M1 pom Spring Cloud Kubernetes Docs diff --git a/pom.xml b/pom.xml index 3050104f..c450ab7f 100644 --- a/pom.xml +++ b/pom.xml @@ -24,13 +24,13 @@ org.springframework.cloud spring-cloud-build - 2.2.0.BUILD-SNAPSHOT + 2.2.0.M3 org.springframework.cloud spring-cloud-kubernetes - 1.1.0.BUILD-SNAPSHOT + 1.1.0.M1 pom Spring Cloud Kubernetes @@ -63,9 +63,9 @@ - 2.2.0.BUILD-SNAPSHOT - 2.2.0.BUILD-SNAPSHOT - 2.2.0.BUILD-SNAPSHOT + 2.2.0.M1 + 2.2.0.M1 + 2.2.0.M1 3.5 diff --git a/spring-cloud-kubernetes-config/pom.xml b/spring-cloud-kubernetes-config/pom.xml index c3aa0603..d3a4fd43 100644 --- a/spring-cloud-kubernetes-config/pom.xml +++ b/spring-cloud-kubernetes-config/pom.xml @@ -5,7 +5,7 @@ spring-cloud-kubernetes org.springframework.cloud - 1.1.0.BUILD-SNAPSHOT + 1.1.0.M1 4.0.0 diff --git a/spring-cloud-kubernetes-config/src/main/java/org/springframework/cloud/kubernetes/config/ConfigMapPropertySource.java b/spring-cloud-kubernetes-config/src/main/java/org/springframework/cloud/kubernetes/config/ConfigMapPropertySource.java index 60fdb812..c0442e4a 100644 --- a/spring-cloud-kubernetes-config/src/main/java/org/springframework/cloud/kubernetes/config/ConfigMapPropertySource.java +++ b/spring-cloud-kubernetes-config/src/main/java/org/springframework/cloud/kubernetes/config/ConfigMapPropertySource.java @@ -99,16 +99,18 @@ public class ConfigMapPropertySource extends MapPropertySource { } if (environment != null) { - for (String activeProfile:environment.getActiveProfiles()) { + for (String activeProfile : environment.getActiveProfiles()) { String mapNameWithProfile = name + "-" + activeProfile; ConfigMap mapWithProfile = StringUtils.isEmpty(namespace) - ? client.configMaps().withName(mapNameWithProfile).get() - : client.configMaps().inNamespace(namespace).withName(mapNameWithProfile).get(); + ? client.configMaps().withName(mapNameWithProfile).get() + : client.configMaps().inNamespace(namespace) + .withName(mapNameWithProfile).get(); if (mapWithProfile != null) { - result.putAll(processAllEntries(mapWithProfile.getData(), environment)); + result.putAll( + processAllEntries(mapWithProfile.getData(), environment)); } } @@ -125,7 +127,6 @@ public class ConfigMapPropertySource extends MapPropertySource { return new HashMap<>(); } - private static Map processAllEntries(Map input, Environment environment) { diff --git a/spring-cloud-kubernetes-config/src/test/java/org/springframework/cloud/kubernetes/config/ConfigMapsFromFilePathsTests.java b/spring-cloud-kubernetes-config/src/test/java/org/springframework/cloud/kubernetes/config/ConfigMapsFromFilePathsTests.java index c987fe19..d6f1d45d 100644 --- a/spring-cloud-kubernetes-config/src/test/java/org/springframework/cloud/kubernetes/config/ConfigMapsFromFilePathsTests.java +++ b/spring-cloud-kubernetes-config/src/test/java/org/springframework/cloud/kubernetes/config/ConfigMapsFromFilePathsTests.java @@ -44,8 +44,7 @@ import static org.springframework.cloud.kubernetes.config.ConfigMapTestUtil.crea properties = { "spring.application.name=configmap-path-example", "spring.cloud.kubernetes.config.enableApi=false", "spring.cloud.kubernetes.config.paths=" - + ConfigMapsFromFilePathsTests.FIRST_FILE_NAME_FULL_PATH - + "," + + ConfigMapsFromFilePathsTests.FIRST_FILE_NAME_FULL_PATH + "," + ConfigMapsFromFilePathsTests.SECOND_FILE_NAME_FULL_PATH }) public class ConfigMapsFromFilePathsTests { diff --git a/spring-cloud-kubernetes-config/src/test/java/org/springframework/cloud/kubernetes/config/ConfigMapsMixedTests.java b/spring-cloud-kubernetes-config/src/test/java/org/springframework/cloud/kubernetes/config/ConfigMapsMixedTests.java index 1e458e54..829fbe61 100644 --- a/spring-cloud-kubernetes-config/src/test/java/org/springframework/cloud/kubernetes/config/ConfigMapsMixedTests.java +++ b/spring-cloud-kubernetes-config/src/test/java/org/springframework/cloud/kubernetes/config/ConfigMapsMixedTests.java @@ -43,9 +43,7 @@ import static org.springframework.cloud.kubernetes.config.ConfigMapTestUtil.read @RunWith(SpringRunner.class) @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT, classes = App.class, - properties = { - "spring.application.name=" - + ConfigMapsMixedTests.APPLICATION_NAME, + properties = { "spring.application.name=" + ConfigMapsMixedTests.APPLICATION_NAME, "spring.cloud.kubernetes.config.enableApi=true", "spring.cloud.kubernetes.config.paths=" + ConfigMapsMixedTests.FILE_NAME_FULL_PATH }) diff --git a/spring-cloud-kubernetes-config/src/test/java/org/springframework/cloud/kubernetes/config/ConfigMapsWithActiveProfilesNameTests.java b/spring-cloud-kubernetes-config/src/test/java/org/springframework/cloud/kubernetes/config/ConfigMapsWithActiveProfilesNameTests.java index 2496cf63..a6ed2fe5 100644 --- a/spring-cloud-kubernetes-config/src/test/java/org/springframework/cloud/kubernetes/config/ConfigMapsWithActiveProfilesNameTests.java +++ b/spring-cloud-kubernetes-config/src/test/java/org/springframework/cloud/kubernetes/config/ConfigMapsWithActiveProfilesNameTests.java @@ -42,9 +42,10 @@ import static org.springframework.cloud.kubernetes.config.ConfigMapTestUtil.read * @author Ali Shahbour */ @RunWith(SpringRunner.class) -@SpringBootTest(webEnvironment = RANDOM_PORT, classes = App.class, properties = { - "spring.application.name=configmap-with-active-profile-name-example", - "spring.cloud.kubernetes.reload.enabled=false" }) +@SpringBootTest(webEnvironment = RANDOM_PORT, classes = App.class, + properties = { + "spring.application.name=configmap-with-active-profile-name-example", + "spring.cloud.kubernetes.reload.enabled=false" }) @ActiveProfiles("development") @AutoConfigureWebTestClient public class ConfigMapsWithActiveProfilesNameTests { diff --git a/spring-cloud-kubernetes-core/pom.xml b/spring-cloud-kubernetes-core/pom.xml index d3dc03a8..18f4d0ff 100644 --- a/spring-cloud-kubernetes-core/pom.xml +++ b/spring-cloud-kubernetes-core/pom.xml @@ -22,7 +22,7 @@ org.springframework.cloud spring-cloud-kubernetes - 1.1.0.BUILD-SNAPSHOT + 1.1.0.M1 4.0.0 diff --git a/spring-cloud-kubernetes-core/src/main/java/org/springframework/cloud/kubernetes/profile/KubernetesProfileEnvironmentPostProcessor.java b/spring-cloud-kubernetes-core/src/main/java/org/springframework/cloud/kubernetes/profile/KubernetesProfileEnvironmentPostProcessor.java index ccb7840c..5d0826e7 100644 --- a/spring-cloud-kubernetes-core/src/main/java/org/springframework/cloud/kubernetes/profile/KubernetesProfileEnvironmentPostProcessor.java +++ b/spring-cloud-kubernetes-core/src/main/java/org/springframework/cloud/kubernetes/profile/KubernetesProfileEnvironmentPostProcessor.java @@ -43,7 +43,8 @@ public class KubernetesProfileEnvironmentPostProcessor public void postProcessEnvironment(ConfigurableEnvironment environment, SpringApplication application) { - final String enabledStr = environment.getProperty("spring.cloud.kubernetes.enabled", "true"); + final String enabledStr = environment + .getProperty("spring.cloud.kubernetes.enabled", "true"); if ("false".equals(enabledStr.toLowerCase())) { return; } diff --git a/spring-cloud-kubernetes-dependencies/pom.xml b/spring-cloud-kubernetes-dependencies/pom.xml index 83309a95..c79edffc 100644 --- a/spring-cloud-kubernetes-dependencies/pom.xml +++ b/spring-cloud-kubernetes-dependencies/pom.xml @@ -23,11 +23,11 @@ spring-cloud-dependencies-parent org.springframework.cloud - 2.2.0.BUILD-SNAPSHOT + 2.2.0.M3 spring-cloud-kubernetes-dependencies - 1.1.0.BUILD-SNAPSHOT + 1.1.0.M1 pom Spring Cloud Kubernetes :: Dependencies Spring Cloud Kubernetes Dependencies diff --git a/spring-cloud-kubernetes-discovery/pom.xml b/spring-cloud-kubernetes-discovery/pom.xml index 27266346..5b7f35ce 100644 --- a/spring-cloud-kubernetes-discovery/pom.xml +++ b/spring-cloud-kubernetes-discovery/pom.xml @@ -22,7 +22,7 @@ org.springframework.cloud spring-cloud-kubernetes - 1.1.0.BUILD-SNAPSHOT + 1.1.0.M1 4.0.0 diff --git a/spring-cloud-kubernetes-examples/kubernetes-circuitbreaker-ribbon-example/greeting-service/pom.xml b/spring-cloud-kubernetes-examples/kubernetes-circuitbreaker-ribbon-example/greeting-service/pom.xml index df95d691..33fa4b0b 100644 --- a/spring-cloud-kubernetes-examples/kubernetes-circuitbreaker-ribbon-example/greeting-service/pom.xml +++ b/spring-cloud-kubernetes-examples/kubernetes-circuitbreaker-ribbon-example/greeting-service/pom.xml @@ -23,7 +23,7 @@ org.springframework.cloud kubernetes-circuitbreaker-ribbon-example - 1.1.0.BUILD-SNAPSHOT + 1.1.0.M1 greeting-service diff --git a/spring-cloud-kubernetes-examples/kubernetes-circuitbreaker-ribbon-example/name-service/pom.xml b/spring-cloud-kubernetes-examples/kubernetes-circuitbreaker-ribbon-example/name-service/pom.xml index 5a6c016b..609decf1 100644 --- a/spring-cloud-kubernetes-examples/kubernetes-circuitbreaker-ribbon-example/name-service/pom.xml +++ b/spring-cloud-kubernetes-examples/kubernetes-circuitbreaker-ribbon-example/name-service/pom.xml @@ -23,7 +23,7 @@ org.springframework.cloud kubernetes-circuitbreaker-ribbon-example - 1.1.0.BUILD-SNAPSHOT + 1.1.0.M1 name-service diff --git a/spring-cloud-kubernetes-examples/kubernetes-circuitbreaker-ribbon-example/pom.xml b/spring-cloud-kubernetes-examples/kubernetes-circuitbreaker-ribbon-example/pom.xml index 63174f13..590757cc 100644 --- a/spring-cloud-kubernetes-examples/kubernetes-circuitbreaker-ribbon-example/pom.xml +++ b/spring-cloud-kubernetes-examples/kubernetes-circuitbreaker-ribbon-example/pom.xml @@ -23,7 +23,7 @@ spring-cloud-kubernetes-examples org.springframework.cloud - 1.1.0.BUILD-SNAPSHOT + 1.1.0.M1 org.springframework.cloud diff --git a/spring-cloud-kubernetes-examples/kubernetes-hello-world-example/pom.xml b/spring-cloud-kubernetes-examples/kubernetes-hello-world-example/pom.xml index 90d0a6cc..cb91b304 100644 --- a/spring-cloud-kubernetes-examples/kubernetes-hello-world-example/pom.xml +++ b/spring-cloud-kubernetes-examples/kubernetes-hello-world-example/pom.xml @@ -5,7 +5,7 @@ spring-cloud-kubernetes-examples org.springframework.cloud - 1.1.0.BUILD-SNAPSHOT + 1.1.0.M1 4.0.0 diff --git a/spring-cloud-kubernetes-examples/kubernetes-leader-election-example/pom.xml b/spring-cloud-kubernetes-examples/kubernetes-leader-election-example/pom.xml index 96457680..fe5c27ee 100644 --- a/spring-cloud-kubernetes-examples/kubernetes-leader-election-example/pom.xml +++ b/spring-cloud-kubernetes-examples/kubernetes-leader-election-example/pom.xml @@ -6,7 +6,7 @@ org.springframework.cloud spring-cloud-kubernetes-examples - 1.1.0.BUILD-SNAPSHOT + 1.1.0.M1 kubernetes-leader-election-example diff --git a/spring-cloud-kubernetes-examples/kubernetes-reload-example/pom.xml b/spring-cloud-kubernetes-examples/kubernetes-reload-example/pom.xml index d71a05ca..9b7276ba 100644 --- a/spring-cloud-kubernetes-examples/kubernetes-reload-example/pom.xml +++ b/spring-cloud-kubernetes-examples/kubernetes-reload-example/pom.xml @@ -22,7 +22,7 @@ spring-cloud-kubernetes-examples org.springframework.cloud - 1.1.0.BUILD-SNAPSHOT + 1.1.0.M1 4.0.0 diff --git a/spring-cloud-kubernetes-examples/kubernetes-zipkin-example/pom.xml b/spring-cloud-kubernetes-examples/kubernetes-zipkin-example/pom.xml index 301f0561..8d6c24b9 100644 --- a/spring-cloud-kubernetes-examples/kubernetes-zipkin-example/pom.xml +++ b/spring-cloud-kubernetes-examples/kubernetes-zipkin-example/pom.xml @@ -22,7 +22,7 @@ spring-cloud-kubernetes-examples org.springframework.cloud - 1.1.0.BUILD-SNAPSHOT + 1.1.0.M1 4.0.0 diff --git a/spring-cloud-kubernetes-examples/pom.xml b/spring-cloud-kubernetes-examples/pom.xml index f845ed91..64c9f0ee 100644 --- a/spring-cloud-kubernetes-examples/pom.xml +++ b/spring-cloud-kubernetes-examples/pom.xml @@ -23,7 +23,7 @@ spring-cloud-kubernetes org.springframework.cloud - 1.1.0.BUILD-SNAPSHOT + 1.1.0.M1 spring-cloud-kubernetes-examples diff --git a/spring-cloud-kubernetes-integration-tests/discovery/discovery-client/pom.xml b/spring-cloud-kubernetes-integration-tests/discovery/discovery-client/pom.xml index ea9d5401..62d72678 100644 --- a/spring-cloud-kubernetes-integration-tests/discovery/discovery-client/pom.xml +++ b/spring-cloud-kubernetes-integration-tests/discovery/discovery-client/pom.xml @@ -7,7 +7,7 @@ org.springframework.cloud discovery-parent - 1.1.0.BUILD-SNAPSHOT + 1.1.0.M1 discovery-client diff --git a/spring-cloud-kubernetes-integration-tests/discovery/discovery-service-a/pom.xml b/spring-cloud-kubernetes-integration-tests/discovery/discovery-service-a/pom.xml index 8efe51b2..97451885 100644 --- a/spring-cloud-kubernetes-integration-tests/discovery/discovery-service-a/pom.xml +++ b/spring-cloud-kubernetes-integration-tests/discovery/discovery-service-a/pom.xml @@ -7,7 +7,7 @@ org.springframework.cloud discovery-parent - 1.1.0.BUILD-SNAPSHOT + 1.1.0.M1 discovery-service-a diff --git a/spring-cloud-kubernetes-integration-tests/discovery/discovery-service-b/pom.xml b/spring-cloud-kubernetes-integration-tests/discovery/discovery-service-b/pom.xml index 5ba81c79..46cda83a 100644 --- a/spring-cloud-kubernetes-integration-tests/discovery/discovery-service-b/pom.xml +++ b/spring-cloud-kubernetes-integration-tests/discovery/discovery-service-b/pom.xml @@ -7,7 +7,7 @@ org.springframework.cloud discovery-parent - 1.1.0.BUILD-SNAPSHOT + 1.1.0.M1 discovery-service-b diff --git a/spring-cloud-kubernetes-integration-tests/discovery/pom.xml b/spring-cloud-kubernetes-integration-tests/discovery/pom.xml index f9b4c725..186dd292 100644 --- a/spring-cloud-kubernetes-integration-tests/discovery/pom.xml +++ b/spring-cloud-kubernetes-integration-tests/discovery/pom.xml @@ -7,7 +7,7 @@ org.springframework.cloud spring-cloud-kubernetes-integration-tests - 1.1.0.BUILD-SNAPSHOT + 1.1.0.M1 Spring Cloud Kubernetes :: Integration Tests :: Discovery Parent diff --git a/spring-cloud-kubernetes-integration-tests/discovery/tests/pom.xml b/spring-cloud-kubernetes-integration-tests/discovery/tests/pom.xml index 4ca5d0d0..d1487bef 100644 --- a/spring-cloud-kubernetes-integration-tests/discovery/tests/pom.xml +++ b/spring-cloud-kubernetes-integration-tests/discovery/tests/pom.xml @@ -7,7 +7,7 @@ org.springframework.cloud discovery-parent - 1.1.0.BUILD-SNAPSHOT + 1.1.0.M1 tests diff --git a/spring-cloud-kubernetes-integration-tests/istio/pom.xml b/spring-cloud-kubernetes-integration-tests/istio/pom.xml index ab274ab1..60cd2117 100644 --- a/spring-cloud-kubernetes-integration-tests/istio/pom.xml +++ b/spring-cloud-kubernetes-integration-tests/istio/pom.xml @@ -7,7 +7,7 @@ org.springframework.cloud spring-cloud-kubernetes-integration-tests - 1.1.0.BUILD-SNAPSHOT + 1.1.0.M1 Spring Cloud Kubernetes :: Integration Tests :: Istio diff --git a/spring-cloud-kubernetes-integration-tests/pom.xml b/spring-cloud-kubernetes-integration-tests/pom.xml index 399318e6..a21a06c8 100644 --- a/spring-cloud-kubernetes-integration-tests/pom.xml +++ b/spring-cloud-kubernetes-integration-tests/pom.xml @@ -6,7 +6,7 @@ org.springframework.cloud spring-cloud-kubernetes - 1.1.0.BUILD-SNAPSHOT + 1.1.0.M1 spring-cloud-kubernetes-integration-tests diff --git a/spring-cloud-kubernetes-integration-tests/simple-configmap/pom.xml b/spring-cloud-kubernetes-integration-tests/simple-configmap/pom.xml index a6d7ba5d..53b5a332 100644 --- a/spring-cloud-kubernetes-integration-tests/simple-configmap/pom.xml +++ b/spring-cloud-kubernetes-integration-tests/simple-configmap/pom.xml @@ -7,7 +7,7 @@ org.springframework.cloud spring-cloud-kubernetes-integration-tests - 1.1.0.BUILD-SNAPSHOT + 1.1.0.M1 Spring Cloud Kubernetes :: Integration Tests :: Simple Configmap diff --git a/spring-cloud-kubernetes-integration-tests/simple-core/pom.xml b/spring-cloud-kubernetes-integration-tests/simple-core/pom.xml index d5de7362..8d28d20d 100644 --- a/spring-cloud-kubernetes-integration-tests/simple-core/pom.xml +++ b/spring-cloud-kubernetes-integration-tests/simple-core/pom.xml @@ -7,7 +7,7 @@ org.springframework.cloud spring-cloud-kubernetes-integration-tests - 1.1.0.BUILD-SNAPSHOT + 1.1.0.M1 Spring Cloud Kubernetes :: Integration Tests :: Simple Core diff --git a/spring-cloud-kubernetes-istio/pom.xml b/spring-cloud-kubernetes-istio/pom.xml index 4b5c9633..0128b654 100644 --- a/spring-cloud-kubernetes-istio/pom.xml +++ b/spring-cloud-kubernetes-istio/pom.xml @@ -5,7 +5,7 @@ spring-cloud-kubernetes org.springframework.cloud - 1.1.0.BUILD-SNAPSHOT + 1.1.0.M1 4.0.0 diff --git a/spring-cloud-kubernetes-leader/pom.xml b/spring-cloud-kubernetes-leader/pom.xml index 16846284..5e67ce8c 100644 --- a/spring-cloud-kubernetes-leader/pom.xml +++ b/spring-cloud-kubernetes-leader/pom.xml @@ -22,7 +22,7 @@ org.springframework.cloud spring-cloud-kubernetes - 1.1.0.BUILD-SNAPSHOT + 1.1.0.M1 spring-cloud-kubernetes-leader diff --git a/spring-cloud-kubernetes-leader/src/test/java/org/springframework/cloud/kubernetes/leader/LeaderAutoConfigurationTests.java b/spring-cloud-kubernetes-leader/src/test/java/org/springframework/cloud/kubernetes/leader/LeaderAutoConfigurationTests.java index 08cdd31f..0072a811 100644 --- a/spring-cloud-kubernetes-leader/src/test/java/org/springframework/cloud/kubernetes/leader/LeaderAutoConfigurationTests.java +++ b/spring-cloud-kubernetes-leader/src/test/java/org/springframework/cloud/kubernetes/leader/LeaderAutoConfigurationTests.java @@ -33,8 +33,7 @@ import static org.hamcrest.Matchers.containsString; @RunWith(SpringRunner.class) @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT, properties = { // Make sure test passes without Kubernetes cluster - "spring.cloud.kubernetes.leader.autoStartup=false" -}) + "spring.cloud.kubernetes.leader.autoStartup=false" }) public class LeaderAutoConfigurationTests { @Value("${local.server.port}") diff --git a/spring-cloud-kubernetes-ribbon/pom.xml b/spring-cloud-kubernetes-ribbon/pom.xml index 06275909..1a560b7e 100644 --- a/spring-cloud-kubernetes-ribbon/pom.xml +++ b/spring-cloud-kubernetes-ribbon/pom.xml @@ -22,7 +22,7 @@ spring-cloud-kubernetes org.springframework.cloud - 1.1.0.BUILD-SNAPSHOT + 1.1.0.M1 4.0.0 diff --git a/spring-cloud-kubernetes-ribbon/src/main/java/org/springframework/cloud/kubernetes/ribbon/KubernetesEndpointsServerList.java b/spring-cloud-kubernetes-ribbon/src/main/java/org/springframework/cloud/kubernetes/ribbon/KubernetesEndpointsServerList.java index 7166564c..59257e45 100644 --- a/spring-cloud-kubernetes-ribbon/src/main/java/org/springframework/cloud/kubernetes/ribbon/KubernetesEndpointsServerList.java +++ b/spring-cloud-kubernetes-ribbon/src/main/java/org/springframework/cloud/kubernetes/ribbon/KubernetesEndpointsServerList.java @@ -32,6 +32,7 @@ import org.apache.commons.logging.LogFactory; /** * the KubernetesEndpointsServerList description. + * * @author wuzishu */ public class KubernetesEndpointsServerList extends KubernetesServerList { @@ -40,11 +41,11 @@ public class KubernetesEndpointsServerList extends KubernetesServerList { /** * Instantiates a new Kubernetes endpoints server list. - * * @param client the client * @param properties the properties */ - KubernetesEndpointsServerList(KubernetesClient client, KubernetesRibbonProperties properties) { + KubernetesEndpointsServerList(KubernetesClient client, + KubernetesRibbonProperties properties) { super(client, properties); } @@ -52,16 +53,16 @@ public class KubernetesEndpointsServerList extends KubernetesServerList { public List getUpdatedListOfServers() { List result = new ArrayList<>(); Endpoints endpoints = StringUtils.isNotBlank(this.getNamespace()) - ? this.getClient().endpoints().inNamespace(this.getNamespace()) - .withName(this.getServiceId()).get() - : this.getClient().endpoints().withName(this.getServiceId()).get(); + ? this.getClient().endpoints().inNamespace(this.getNamespace()) + .withName(this.getServiceId()).get() + : this.getClient().endpoints().withName(this.getServiceId()).get(); if (endpoints != null) { if (LOG.isDebugEnabled()) { LOG.debug(String.format( - "Found [%d] endpoints in l [%s] for name [%s] and portName [%s]", - endpoints.getSubsets().size(), - endpoints.getMetadata().getNamespace(), this.getServiceId(), - this.getPortName())); + "Found [%d] endpoints in l [%s] for name [%s] and portName [%s]", + endpoints.getSubsets().size(), + endpoints.getMetadata().getNamespace(), this.getServiceId(), + this.getPortName())); } for (EndpointSubset subset : endpoints.getSubsets()) { @@ -74,10 +75,9 @@ public class KubernetesEndpointsServerList extends KubernetesServerList { else { for (EndpointPort port : subset.getPorts()) { if (Utils.isNullOrEmpty(this.getPortName()) - || this.getPortName().endsWith(port.getName())) { + || this.getPortName().endsWith(port.getName())) { for (EndpointAddress address : subset.getAddresses()) { - result.add( - new Server(address.getIp(), port.getPort())); + result.add(new Server(address.getIp(), port.getPort())); } } } @@ -86,10 +86,11 @@ public class KubernetesEndpointsServerList extends KubernetesServerList { } if (result.isEmpty()) { LOG.warn(String.format( - "Did not find any endpoints in ribbon in namespace [%s] for name [%s] and portName [%s]", - this.getNamespace(), this.getServiceId(), this.getPortName())); + "Did not find any endpoints in ribbon in namespace [%s] for name [%s] and portName [%s]", + this.getNamespace(), this.getServiceId(), this.getPortName())); } return result; } + } diff --git a/spring-cloud-kubernetes-ribbon/src/main/java/org/springframework/cloud/kubernetes/ribbon/KubernetesRibbonClientConfiguration.java b/spring-cloud-kubernetes-ribbon/src/main/java/org/springframework/cloud/kubernetes/ribbon/KubernetesRibbonClientConfiguration.java index aa1018ad..904e9c46 100644 --- a/spring-cloud-kubernetes-ribbon/src/main/java/org/springframework/cloud/kubernetes/ribbon/KubernetesRibbonClientConfiguration.java +++ b/spring-cloud-kubernetes-ribbon/src/main/java/org/springframework/cloud/kubernetes/ribbon/KubernetesRibbonClientConfiguration.java @@ -40,7 +40,7 @@ public class KubernetesRibbonClientConfiguration { @Bean @ConditionalOnMissingBean public ServerList ribbonServerList(KubernetesClient client, IClientConfig config, - KubernetesRibbonProperties properties) { + KubernetesRibbonProperties properties) { KubernetesServerList serverList; if (properties.getMode() == KubernetesRibbonMode.SERVICE) { serverList = new KubernetesServicesServerList(client, properties); diff --git a/spring-cloud-kubernetes-ribbon/src/main/java/org/springframework/cloud/kubernetes/ribbon/KubernetesServerList.java b/spring-cloud-kubernetes-ribbon/src/main/java/org/springframework/cloud/kubernetes/ribbon/KubernetesServerList.java index 7c6abc2a..7c3232f0 100644 --- a/spring-cloud-kubernetes-ribbon/src/main/java/org/springframework/cloud/kubernetes/ribbon/KubernetesServerList.java +++ b/spring-cloud-kubernetes-ribbon/src/main/java/org/springframework/cloud/kubernetes/ribbon/KubernetesServerList.java @@ -32,7 +32,7 @@ import io.fabric8.kubernetes.client.KubernetesClient; * @author wuzishu */ public abstract class KubernetesServerList extends AbstractServerList - implements ServerList { + implements ServerList { private static final int FIRST = 0; @@ -48,12 +48,11 @@ public abstract class KubernetesServerList extends AbstractServerList /** * Instantiates a new Kubernetes server list. - * * @param client the client * @param properties the properties */ public KubernetesServerList(KubernetesClient client, - KubernetesRibbonProperties properties) { + KubernetesRibbonProperties properties) { this.client = client; this.properties = properties; } @@ -61,19 +60,17 @@ public abstract class KubernetesServerList extends AbstractServerList public void initWithNiwsConfig(IClientConfig clientConfig) { this.serviceId = clientConfig.getClientName(); this.namespace = clientConfig.getPropertyAsString(KubernetesConfigKey.Namespace, - this.client.getNamespace()); + this.client.getNamespace()); this.portName = clientConfig.getPropertyAsString(KubernetesConfigKey.PortName, - null); + null); } public List getInitialListOfServers() { return Collections.emptyList(); } - /** * Gets first. - * * @return the first */ static int getFIRST() { @@ -82,7 +79,6 @@ public abstract class KubernetesServerList extends AbstractServerList /** * Gets client. - * * @return the client */ KubernetesClient getClient() { @@ -91,7 +87,6 @@ public abstract class KubernetesServerList extends AbstractServerList /** * Gets service id. - * * @return the service id */ String getServiceId() { @@ -100,7 +95,6 @@ public abstract class KubernetesServerList extends AbstractServerList /** * Gets namespace. - * * @return the namespace */ String getNamespace() { @@ -109,7 +103,6 @@ public abstract class KubernetesServerList extends AbstractServerList /** * Gets port name. - * * @return the port name */ String getPortName() { @@ -118,10 +111,10 @@ public abstract class KubernetesServerList extends AbstractServerList /** * Gets properties. - * * @return the properties */ KubernetesRibbonProperties getProperties() { return properties; } + } diff --git a/spring-cloud-kubernetes-ribbon/src/main/java/org/springframework/cloud/kubernetes/ribbon/KubernetesServicesServerList.java b/spring-cloud-kubernetes-ribbon/src/main/java/org/springframework/cloud/kubernetes/ribbon/KubernetesServicesServerList.java index 2c445126..5d0d6a69 100644 --- a/spring-cloud-kubernetes-ribbon/src/main/java/org/springframework/cloud/kubernetes/ribbon/KubernetesServicesServerList.java +++ b/spring-cloud-kubernetes-ribbon/src/main/java/org/springframework/cloud/kubernetes/ribbon/KubernetesServicesServerList.java @@ -30,18 +30,20 @@ import org.apache.commons.logging.LogFactory; /** * the KubernetesServicesServerList description. + * * @author wuzishu */ public class KubernetesServicesServerList extends KubernetesServerList { + private static final Log LOG = LogFactory.getLog(KubernetesServicesServerList.class); /** * Instantiates a new Kubernetes services server list. - * * @param client the client * @param properties the properties */ - KubernetesServicesServerList(KubernetesClient client, KubernetesRibbonProperties properties) { + KubernetesServicesServerList(KubernetesClient client, + KubernetesRibbonProperties properties) { super(client, properties); } @@ -52,31 +54,32 @@ public class KubernetesServicesServerList extends KubernetesServerList { */ private String concatServiceFQDN(Service service) { return String.format("%s.%s.svc.%s", service.getMetadata().getName(), - StringUtils.isNotBlank(service.getMetadata().getNamespace()) ? service.getMetadata() - .getNamespace() : "default", this.getProperties().getClusterDomain()); + StringUtils.isNotBlank(service.getMetadata().getNamespace()) + ? service.getMetadata().getNamespace() : "default", + this.getProperties().getClusterDomain()); } @Override public List getUpdatedListOfServers() { List result = new ArrayList<>(); Service service = StringUtils.isNotBlank(this.getNamespace()) - ? this.getClient().services().inNamespace(this.getNamespace()) - .withName(this.getServiceId()).get() - : this.getClient().services().withName(this.getServiceId()).get(); + ? this.getClient().services().inNamespace(this.getNamespace()) + .withName(this.getServiceId()).get() + : this.getClient().services().withName(this.getServiceId()).get(); if (service != null) { if (LOG.isDebugEnabled()) { LOG.debug("Found Service[" + service.getMetadata().getName() + "]"); } if (service.getSpec().getPorts().size() == 1) { result.add(new Server(this.concatServiceFQDN(service), - service.getSpec().getPorts().get(0).getPort())); + service.getSpec().getPorts().get(0).getPort())); } else { for (ServicePort servicePort : service.getSpec().getPorts()) { if (Utils.isNotNullOrEmpty(this.getPortName()) - || this.getPortName().endsWith(servicePort.getName())) { + || this.getPortName().endsWith(servicePort.getName())) { result.add(new Server(concatServiceFQDN(service), - servicePort.getPort())); + servicePort.getPort())); } } @@ -84,9 +87,10 @@ public class KubernetesServicesServerList extends KubernetesServerList { } if (result.isEmpty()) { LOG.warn(String.format( - "Did not find any service in ribbon in namespace [%s] for name [%s] and portName [%s]", - this.getNamespace(), this.getServiceId(), this.getPortName())); + "Did not find any service in ribbon in namespace [%s] for name [%s] and portName [%s]", + this.getNamespace(), this.getServiceId(), this.getPortName())); } return result; } + } diff --git a/spring-cloud-kubernetes-ribbon/src/test/java/org/springframework/cloud/kubernetes/ribbon/RibbonWithServiceModeTest.java b/spring-cloud-kubernetes-ribbon/src/test/java/org/springframework/cloud/kubernetes/ribbon/RibbonWithServiceModeTest.java index 8d75bcc2..cfb7ba1b 100644 --- a/spring-cloud-kubernetes-ribbon/src/test/java/org/springframework/cloud/kubernetes/ribbon/RibbonWithServiceModeTest.java +++ b/spring-cloud-kubernetes-ribbon/src/test/java/org/springframework/cloud/kubernetes/ribbon/RibbonWithServiceModeTest.java @@ -43,22 +43,24 @@ import static org.assertj.core.api.Assertions.assertThat; /** * the RibbonWithServiceModeTest description. + * * @author wuzishu */ @RunWith(SpringRunner.class) -@SpringBootTest(classes = TestApplication.class, properties = { - "spring.application.name=testapp", - "spring.cloud.kubernetes.client.namespace=testns", - "spring.cloud.kubernetes.client.trustCerts=true", - "spring.cloud.kubernetes.config.namespace=testns", - "spring.cloud.kubernetes.enabled=true", - "spring.cloud.kubernetes.discovery.enabled=true", - "spring.cloud.kubernetes.ribbon.enabled=true", - "spring.cloud.kubernetes.ribbon.mode=SERVICE", - "spring.cloud.kubernetes.ribbon.clusterDomain=test.com"}) +@SpringBootTest(classes = TestApplication.class, + properties = { "spring.application.name=testapp", + "spring.cloud.kubernetes.client.namespace=testns", + "spring.cloud.kubernetes.client.trustCerts=true", + "spring.cloud.kubernetes.config.namespace=testns", + "spring.cloud.kubernetes.enabled=true", + "spring.cloud.kubernetes.discovery.enabled=true", + "spring.cloud.kubernetes.ribbon.enabled=true", + "spring.cloud.kubernetes.ribbon.mode=SERVICE", + "spring.cloud.kubernetes.ribbon.clusterDomain=test.com" }) @EnableAutoConfiguration @EnableDiscoveryClient public class RibbonWithServiceModeTest { + @ClassRule public static KubernetesServer server = new KubernetesServer(); @@ -76,21 +78,22 @@ public class RibbonWithServiceModeTest { // Configure the kubernetes master url to point to the mock server System.setProperty(Config.KUBERNETES_MASTER_SYSTEM_PROPERTY, - mockClient.getConfiguration().getMasterUrl()); + mockClient.getConfiguration().getMasterUrl()); System.setProperty(Config.KUBERNETES_TRUST_CERT_SYSTEM_PROPERTY, "true"); System.setProperty(Config.KUBERNETES_AUTH_TRYKUBECONFIG_SYSTEM_PROPERTY, "false"); System.setProperty(Config.KUBERNETES_AUTH_TRYSERVICEACCOUNT_SYSTEM_PROPERTY, - "false"); + "false"); // Configured - server.expect().get().withPath("/api/v1/namespaces/testns/services/testapp").andReturn(200, - new ServiceBuilder().withNewMetadata().withName("testapp").withNamespace("testns") - .endMetadata().withNewSpec().addToSelector("app", "testapp-a") - .addNewPort().withName("http") - .withPort(mockEndpointA.getMockServer().getPort()) - .withTargetPort(new IntOrString(mockEndpointA.getMockServer().getPort())) - .withProtocol("TCP").endPort().endSpec().build()) - .always(); + server.expect().get().withPath("/api/v1/namespaces/testns/services/testapp") + .andReturn(200, new ServiceBuilder().withNewMetadata().withName("testapp") + .withNamespace("testns").endMetadata().withNewSpec() + .addToSelector("app", "testapp-a").addNewPort().withName("http") + .withPort(mockEndpointA.getMockServer().getPort()) + .withTargetPort( + new IntOrString(mockEndpointA.getMockServer().getPort())) + .withProtocol("TCP").endPort().endSpec().build()) + .always(); } @@ -99,10 +102,14 @@ public class RibbonWithServiceModeTest { @Test public void testGreetingWithServiceMode() { - SpringClientFactory springClientFactory = context.getBean(SpringClientFactory.class); + SpringClientFactory springClientFactory = context + .getBean(SpringClientFactory.class); ILoadBalancer testapp = springClientFactory.getLoadBalancer("testapp"); List allServers = testapp.getAllServers(); - assertThat(allServers.stream().map(c -> String.format("%s:%s", c.getHost(), c.getPort()))) - .containsOnly("testapp.testns.svc.test.com:" + mockEndpointA.getMockServer().getPort()); + assertThat(allServers.stream() + .map(c -> String.format("%s:%s", c.getHost(), c.getPort()))) + .containsOnly("testapp.testns.svc.test.com:" + + mockEndpointA.getMockServer().getPort()); } + } diff --git a/spring-cloud-starter-kubernetes-all/pom.xml b/spring-cloud-starter-kubernetes-all/pom.xml index 9c87ab11..788f1fdf 100644 --- a/spring-cloud-starter-kubernetes-all/pom.xml +++ b/spring-cloud-starter-kubernetes-all/pom.xml @@ -22,7 +22,7 @@ spring-cloud-kubernetes org.springframework.cloud - 1.1.0.BUILD-SNAPSHOT + 1.1.0.M1 4.0.0 diff --git a/spring-cloud-starter-kubernetes-config/pom.xml b/spring-cloud-starter-kubernetes-config/pom.xml index 6d6cac1d..46762651 100644 --- a/spring-cloud-starter-kubernetes-config/pom.xml +++ b/spring-cloud-starter-kubernetes-config/pom.xml @@ -22,7 +22,7 @@ spring-cloud-kubernetes org.springframework.cloud - 1.1.0.BUILD-SNAPSHOT + 1.1.0.M1 4.0.0 diff --git a/spring-cloud-starter-kubernetes-ribbon/pom.xml b/spring-cloud-starter-kubernetes-ribbon/pom.xml index 55b57a00..badaf52e 100644 --- a/spring-cloud-starter-kubernetes-ribbon/pom.xml +++ b/spring-cloud-starter-kubernetes-ribbon/pom.xml @@ -22,7 +22,7 @@ spring-cloud-kubernetes org.springframework.cloud - 1.1.0.BUILD-SNAPSHOT + 1.1.0.M1 4.0.0 diff --git a/spring-cloud-starter-kubernetes/pom.xml b/spring-cloud-starter-kubernetes/pom.xml index 0ffbe1f2..ee56a3bb 100644 --- a/spring-cloud-starter-kubernetes/pom.xml +++ b/spring-cloud-starter-kubernetes/pom.xml @@ -22,7 +22,7 @@ spring-cloud-kubernetes org.springframework.cloud - 1.1.0.BUILD-SNAPSHOT + 1.1.0.M1 4.0.0