From 812ddf196773d591cea471b045e73a68bc3dcd90 Mon Sep 17 00:00:00 2001 From: Ryan Baxter Date: Fri, 11 Nov 2022 07:58:51 -0500 Subject: [PATCH] Remove duplicated examples, remove JKube dependency (#1137) Co-authored-by: Ryan Baxter <524254+ryanjbaxter@users.noreply.github.com> --- pom.xml | 1 - .../kubernetes-hello-world-example/.jdk8 | 0 .../kubernetes-hello-world-example/README.md | 58 ----- .../kubernetes-hello-world-example/pom.xml | 231 ------------------ .../cloud/kubernetes/examples/App.java | 34 --- .../kubernetes/examples/HelloController.java | 47 ---- .../src/main/resources/application.properties | 1 - .../examples/ApplicationTestIT.java | 45 ---- .../src/test/resources/logback-test.xml | 15 -- .../README.md | 85 ++++++- .../pom.xml | 36 --- .../kubernetes-loadbalancer-example/README.md | 99 -------- .../greeting-service/pom.xml | 92 ------- .../src/main/fabric8/route.yml | 10 - .../examples/GreetingController.java | 57 ----- .../examples/GreetingServiceApplication.java | 46 ---- .../kubernetes/examples/NameService.java | 44 ---- .../src/main/resources/application.yml | 10 - .../name-service/pom.xml | 67 ----- .../name-service/src/main/fabric8/route.yml | 10 - .../kubernetes/examples/NameController.java | 68 ------ .../examples/NameServiceApplication.java | 34 --- .../src/main/resources/application.yml | 6 - .../kubernetes-loadbalancer-example/pom.xml | 115 --------- .../kubernetes-reload-example/.jdk8 | 0 .../kubernetes-reload-example/README.md | 103 -------- .../kubernetes-reload-example/config-map.yml | 8 - .../kubernetes-reload-example/pom.xml | 230 ----------------- .../kubernetes-reload-example/src/k8s/rb.yml | 13 - .../src/k8s/role.yml | 9 - .../kubernetes-reload-example/src/k8s/sa.yml | 5 - .../cloud/kubernetes/examples/App.java | 31 --- .../kubernetes/examples/DummyConfig.java | 36 --- .../cloud/kubernetes/examples/MyBean.java | 38 --- .../cloud/kubernetes/examples/MyConfig.java | 36 --- .../src/main/resources/application.yaml | 8 - .../src/main/resources/bootstrap.yaml | 13 - .../src/main/resources/logback.xml | 7 - .../main/resources/old-application.properties | 10 - spring-cloud-kubernetes-examples/pom.xml | 3 - 40 files changed, 83 insertions(+), 1678 deletions(-) delete mode 100644 spring-cloud-kubernetes-examples/kubernetes-hello-world-example/.jdk8 delete mode 100644 spring-cloud-kubernetes-examples/kubernetes-hello-world-example/README.md delete mode 100644 spring-cloud-kubernetes-examples/kubernetes-hello-world-example/pom.xml delete mode 100644 spring-cloud-kubernetes-examples/kubernetes-hello-world-example/src/main/java/org/springframework/cloud/kubernetes/examples/App.java delete mode 100644 spring-cloud-kubernetes-examples/kubernetes-hello-world-example/src/main/java/org/springframework/cloud/kubernetes/examples/HelloController.java delete mode 100644 spring-cloud-kubernetes-examples/kubernetes-hello-world-example/src/main/resources/application.properties delete mode 100644 spring-cloud-kubernetes-examples/kubernetes-hello-world-example/src/test/java/org/springframework/cloud/kubernetes/examples/ApplicationTestIT.java delete mode 100644 spring-cloud-kubernetes-examples/kubernetes-hello-world-example/src/test/resources/logback-test.xml delete mode 100644 spring-cloud-kubernetes-examples/kubernetes-loadbalancer-example/README.md delete mode 100644 spring-cloud-kubernetes-examples/kubernetes-loadbalancer-example/greeting-service/pom.xml delete mode 100644 spring-cloud-kubernetes-examples/kubernetes-loadbalancer-example/greeting-service/src/main/fabric8/route.yml delete mode 100644 spring-cloud-kubernetes-examples/kubernetes-loadbalancer-example/greeting-service/src/main/java/org/springframework/cloud/kubernetes/examples/GreetingController.java delete mode 100644 spring-cloud-kubernetes-examples/kubernetes-loadbalancer-example/greeting-service/src/main/java/org/springframework/cloud/kubernetes/examples/GreetingServiceApplication.java delete mode 100644 spring-cloud-kubernetes-examples/kubernetes-loadbalancer-example/greeting-service/src/main/java/org/springframework/cloud/kubernetes/examples/NameService.java delete mode 100644 spring-cloud-kubernetes-examples/kubernetes-loadbalancer-example/greeting-service/src/main/resources/application.yml delete mode 100644 spring-cloud-kubernetes-examples/kubernetes-loadbalancer-example/name-service/pom.xml delete mode 100644 spring-cloud-kubernetes-examples/kubernetes-loadbalancer-example/name-service/src/main/fabric8/route.yml delete mode 100644 spring-cloud-kubernetes-examples/kubernetes-loadbalancer-example/name-service/src/main/java/org/springframework/cloud/kubernetes/examples/NameController.java delete mode 100644 spring-cloud-kubernetes-examples/kubernetes-loadbalancer-example/name-service/src/main/java/org/springframework/cloud/kubernetes/examples/NameServiceApplication.java delete mode 100644 spring-cloud-kubernetes-examples/kubernetes-loadbalancer-example/name-service/src/main/resources/application.yml delete mode 100644 spring-cloud-kubernetes-examples/kubernetes-loadbalancer-example/pom.xml delete mode 100644 spring-cloud-kubernetes-examples/kubernetes-reload-example/.jdk8 delete mode 100644 spring-cloud-kubernetes-examples/kubernetes-reload-example/README.md delete mode 100644 spring-cloud-kubernetes-examples/kubernetes-reload-example/config-map.yml delete mode 100644 spring-cloud-kubernetes-examples/kubernetes-reload-example/pom.xml delete mode 100644 spring-cloud-kubernetes-examples/kubernetes-reload-example/src/k8s/rb.yml delete mode 100644 spring-cloud-kubernetes-examples/kubernetes-reload-example/src/k8s/role.yml delete mode 100644 spring-cloud-kubernetes-examples/kubernetes-reload-example/src/k8s/sa.yml delete mode 100644 spring-cloud-kubernetes-examples/kubernetes-reload-example/src/main/java/org/springframework/cloud/kubernetes/examples/App.java delete mode 100644 spring-cloud-kubernetes-examples/kubernetes-reload-example/src/main/java/org/springframework/cloud/kubernetes/examples/DummyConfig.java delete mode 100644 spring-cloud-kubernetes-examples/kubernetes-reload-example/src/main/java/org/springframework/cloud/kubernetes/examples/MyBean.java delete mode 100644 spring-cloud-kubernetes-examples/kubernetes-reload-example/src/main/java/org/springframework/cloud/kubernetes/examples/MyConfig.java delete mode 100644 spring-cloud-kubernetes-examples/kubernetes-reload-example/src/main/resources/application.yaml delete mode 100644 spring-cloud-kubernetes-examples/kubernetes-reload-example/src/main/resources/bootstrap.yaml delete mode 100644 spring-cloud-kubernetes-examples/kubernetes-reload-example/src/main/resources/logback.xml delete mode 100644 spring-cloud-kubernetes-examples/kubernetes-reload-example/src/main/resources/old-application.properties diff --git a/pom.xml b/pom.xml index 0f4660c4..bbafa61a 100644 --- a/pom.xml +++ b/pom.xml @@ -73,7 +73,6 @@ 2.8.2 2.22.2 2.22.2 - 1.6.0 2.4.12 3.0.2 diff --git a/spring-cloud-kubernetes-examples/kubernetes-hello-world-example/.jdk8 b/spring-cloud-kubernetes-examples/kubernetes-hello-world-example/.jdk8 deleted file mode 100644 index e69de29b..00000000 diff --git a/spring-cloud-kubernetes-examples/kubernetes-hello-world-example/README.md b/spring-cloud-kubernetes-examples/kubernetes-hello-world-example/README.md deleted file mode 100644 index f56cd901..00000000 --- a/spring-cloud-kubernetes-examples/kubernetes-hello-world-example/README.md +++ /dev/null @@ -1,58 +0,0 @@ -# Setting up the Environment - -To play with these examples, you can install locally Kubernetes & Docker using [Minikube](https://minikube.sigs.k8s.io/docs/start/) within a Virtual Machine -managed by a hypervisor (Xhyve, Virtualbox or KVM) if your machine is not a native Unix operating system. - - -When the minikube is installed on your machine, you can start kubernetes using this command: -``` -minikube start -``` - -You also probably want to configure your Docker client to point the minikube Docker daemon with: -``` -eval $(minikube docker-env) -``` - -This will make sure the Docker images that you build are available to the minikube environment. - -# Hello World Example - -This Spring Boot application exposes an endpoint that we can call to receive a `Hello World` message as response. The application is configured using the -@RestController, and the method returning the message is annotated with `@RequestMapping("/")`. - -The uberjar of the Spring Boot application is packaged within a Docker image using the [Fabric8 Maven plugin](https://maven.fabric8.io) and next deployed top of the Kubernetes management platform as a pod -using the replication controller created by the plugin. - - -Once you have the environment set up (minikube or kubectl configured against a kubernetes cluster), you can play with this Spring Boot application in the cloud using the following maven command to deploy it: -``` -mvn clean package fabric8:deploy -Pkubernetes -``` - -**Note**: Unfortunately, when you deploy using the fabric8 plugin, the readiness and liveness probes fail to point to the right actuator URL due a lack of support for Spring Boot. -This push you to edit the generated deployment inside kubernetes and change these probes which points to "path": "/health" to "path": "/actuator/health". -This will make your deployment go green. This issue is already reported into the fabric8 community: https://github.com/fabric8io/fabric8-maven-plugin/issues/1178 - -When the application has been deployed, you can access its service or endpoint url using this command: -``` -minikube service kubernetes-hello-world --url -``` - -And next you can curl the endpoint using the url returned by the previous command - -``` -curl https://IP_OR_HOSTNAME/ -``` - -then - -``` -curl https://IP_OR_HOSTNAME/services -``` - -Should return you the list of available services discovered by the DiscoveryClient - -``` -mvn clean install -Pintegration -``` diff --git a/spring-cloud-kubernetes-examples/kubernetes-hello-world-example/pom.xml b/spring-cloud-kubernetes-examples/kubernetes-hello-world-example/pom.xml deleted file mode 100644 index a217d9d5..00000000 --- a/spring-cloud-kubernetes-examples/kubernetes-hello-world-example/pom.xml +++ /dev/null @@ -1,231 +0,0 @@ - - - - spring-cloud-kubernetes-examples - org.springframework.cloud - 3.0.0-SNAPSHOT - - 4.0.0 - - kubernetes-hello-world - Spring Cloud Kubernetes :: Examples :: Hello World - A simple example that demonstrates how to build and test a basic spring - cloud kubernetes app - - - - - - org.springframework.boot - spring-boot-dependencies - pom - import - ${spring-boot.version} - - - - - - - org.springframework.cloud - spring-cloud-kubernetes-fabric8-autoconfig - ${project.version} - - - - org.springframework.cloud - spring-cloud-kubernetes-fabric8-discovery - ${project.version} - - - - org.springframework.cloud - spring-cloud-commons - - - - org.springframework.boot - spring-boot-starter - - - - org.springframework.boot - spring-boot-starter-web - - - - org.springframework.boot - spring-boot-starter-actuator - - - - - junit - junit - test - - - org.assertj - assertj-core - test - - - org.springframework.boot - spring-boot-test - test - - - org.springframework - spring-test - test - - - - - - - - org.springframework.boot - spring-boot-maven-plugin - ${spring-boot.version} - - - - repackage - - - - - - - - org.apache.maven.plugins - maven-deploy-plugin - ${maven-deploy-plugin.version} - - true - - - - org.apache.maven.plugins - maven-surefire-plugin - ${maven-surefire-plugin.version} - - true - - false - - - - org.eclipse.jkube - kubernetes-maven-plugin - ${kubernetes.maven.plugin.version} - - - fmp - - resource - - - - - - - - - - kubernetes - - - - org.eclipse.jkube - kubernetes-maven-plugin - ${kubernetes.maven.plugin.version} - - - fmp - - resource - build - - - - - - - - NodePort - - - - - - - - - - release - - - - org.eclipse.jkube - kubernetes-maven-plugin - ${kubernetes.maven.plugin.version} - - - fmp - - resource - helm - - - - - - - - - - integration - - - - org.eclipse.jkube - kubernetes-maven-plugin - ${kubernetes.maven.plugin.version} - - - fmp - - resource - build - - - - - - org.apache.maven.plugins - maven-failsafe-plugin - ${maven-failsafe-plugin.version} - - - run-integration-tests - integration-test - - integration-test - verify - - - - - false - false - - - - - - - diff --git a/spring-cloud-kubernetes-examples/kubernetes-hello-world-example/src/main/java/org/springframework/cloud/kubernetes/examples/App.java b/spring-cloud-kubernetes-examples/kubernetes-hello-world-example/src/main/java/org/springframework/cloud/kubernetes/examples/App.java deleted file mode 100644 index f50a13cd..00000000 --- a/spring-cloud-kubernetes-examples/kubernetes-hello-world-example/src/main/java/org/springframework/cloud/kubernetes/examples/App.java +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Copyright 2013-2019 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.cloud.kubernetes.examples; - -import org.springframework.boot.SpringApplication; -import org.springframework.boot.autoconfigure.SpringBootApplication; -import org.springframework.cloud.client.discovery.EnableDiscoveryClient; - -/** - * - */ -@SpringBootApplication -@EnableDiscoveryClient -public class App { - - public static void main(String[] args) { - SpringApplication.run(App.class, args); - } - -} diff --git a/spring-cloud-kubernetes-examples/kubernetes-hello-world-example/src/main/java/org/springframework/cloud/kubernetes/examples/HelloController.java b/spring-cloud-kubernetes-examples/kubernetes-hello-world-example/src/main/java/org/springframework/cloud/kubernetes/examples/HelloController.java deleted file mode 100644 index e2ebf901..00000000 --- a/spring-cloud-kubernetes-examples/kubernetes-hello-world-example/src/main/java/org/springframework/cloud/kubernetes/examples/HelloController.java +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright 2013-2019 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.cloud.kubernetes.examples; - -import java.util.List; - -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.cloud.client.discovery.DiscoveryClient; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - -@RestController -public class HelloController { - - private static final Log log = LogFactory.getLog(HelloController.class); - - @Autowired - private DiscoveryClient discoveryClient; - - @RequestMapping("/") - public String hello() { - return "Hello World"; - } - - @RequestMapping("/services") - public List services() { - return this.discoveryClient.getServices(); - } - -} diff --git a/spring-cloud-kubernetes-examples/kubernetes-hello-world-example/src/main/resources/application.properties b/spring-cloud-kubernetes-examples/kubernetes-hello-world-example/src/main/resources/application.properties deleted file mode 100644 index 4e667b7e..00000000 --- a/spring-cloud-kubernetes-examples/kubernetes-hello-world-example/src/main/resources/application.properties +++ /dev/null @@ -1 +0,0 @@ -spring.application.name=hello-world-example diff --git a/spring-cloud-kubernetes-examples/kubernetes-hello-world-example/src/test/java/org/springframework/cloud/kubernetes/examples/ApplicationTestIT.java b/spring-cloud-kubernetes-examples/kubernetes-hello-world-example/src/test/java/org/springframework/cloud/kubernetes/examples/ApplicationTestIT.java deleted file mode 100644 index a0fd668a..00000000 --- a/spring-cloud-kubernetes-examples/kubernetes-hello-world-example/src/test/java/org/springframework/cloud/kubernetes/examples/ApplicationTestIT.java +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Copyright 2013-2019 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.cloud.kubernetes.examples; - -import org.junit.Test; -import org.junit.runner.RunWith; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.context.ApplicationContext; -import org.springframework.test.context.junit4.SpringRunner; - -import static org.assertj.core.api.Assertions.assertThat; - -@RunWith(SpringRunner.class) -@SpringBootTest(classes = App.class) -public class ApplicationTestIT { - - @Autowired - private ApplicationContext context; - - /* - * This test proves that the application can be loaded successful and that - * all @configurations and dependencies are there - */ - @Test - public void contextLoads() throws Exception { - assertThat(this.context).isNotNull(); - } - -} diff --git a/spring-cloud-kubernetes-examples/kubernetes-hello-world-example/src/test/resources/logback-test.xml b/spring-cloud-kubernetes-examples/kubernetes-hello-world-example/src/test/resources/logback-test.xml deleted file mode 100644 index fa7daeb7..00000000 --- a/spring-cloud-kubernetes-examples/kubernetes-hello-world-example/src/test/resources/logback-test.xml +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n - - - - - - - - diff --git a/spring-cloud-kubernetes-examples/kubernetes-leader-election-example/README.md b/spring-cloud-kubernetes-examples/kubernetes-leader-election-example/README.md index 530db828..1cd7e941 100644 --- a/spring-cloud-kubernetes-examples/kubernetes-leader-election-example/README.md +++ b/spring-cloud-kubernetes-examples/kubernetes-leader-election-example/README.md @@ -35,9 +35,90 @@ kubectl apply -f leader-role.yml kubectl apply -f leader-rolebinding.yml ``` -Now build and deploy the application: +Build an image using the Spring Boot Build Image Plugin ``` -mvn clean fabric8:deploy -Pkubernetes +./mvnw spring-boot:build-image -Dspring-boot.build-image.imageName=org/kubernetes-leader-election-example +``` + +You can then deploy the application using the following yaml. + +```yaml +--- +apiVersion: v1 +kind: List +items: + - apiVersion: v1 + kind: Service + metadata: + labels: + app: kubernetes-leader-election-example + name: kubernetes-leader-election-example + spec: + ports: + - name: http + port: 80 + targetPort: 8080 + selector: + app: kubernetes-leader-election-example + type: ClusterIP + - apiVersion: v1 + kind: ServiceAccount + metadata: + labels: + app: kubernetes-leader-election-example + name: kubernetes-leader-election-example + - apiVersion: rbac.authorization.k8s.io/v1 + kind: RoleBinding + metadata: + labels: + app: kubernetes-leader-election-example + name: kubernetes-leader-election-example:view + roleRef: + kind: Role + apiGroup: rbac.authorization.k8s.io + name: namespace-reader + subjects: + - kind: ServiceAccount + name: kubernetes-leader-election-example + - apiVersion: rbac.authorization.k8s.io/v1 + kind: Role + metadata: + namespace: default + name: namespace-reader + rules: + - apiGroups: ["", "extensions", "apps"] + resources: ["configmaps", "pods", "services", "endpoints", "secrets"] + verbs: ["get", "list", "watch"] + - apiVersion: apps/v1 + kind: Deployment + metadata: + name: kubernetes-leader-election-example + spec: + selector: + matchLabels: + app: kubernetes-leader-election-example + template: + metadata: + labels: + app: kubernetes-leader-election-example + spec: + serviceAccountName: kubernetes-leader-election-example + containers: + - name: kubernetes-leader-election-example + image: org/kubernetes-leader-election-example:latest + imagePullPolicy: IfNotPresent + readinessProbe: + httpGet: + port: 8080 + path: /actuator/health/readiness + livenessProbe: + httpGet: + port: 8080 + path: /actuator/health/liveness + ports: + - containerPort: 8080 + + ``` This will deploy a single application instance to the cluster and that instance will automatically become a leader. 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 ebb031b1..7623e708 100644 --- a/spring-cloud-kubernetes-examples/kubernetes-leader-election-example/pom.xml +++ b/spring-cloud-kubernetes-examples/kubernetes-leader-election-example/pom.xml @@ -59,11 +59,6 @@ - - org.eclipse.jkube - kubernetes-maven-plugin - ${kubernetes.maven.plugin.version} - org.apache.maven.plugins maven-deploy-plugin @@ -94,35 +89,4 @@ - - - kubernetes - - - - org.eclipse.jkube - kubernetes-maven-plugin - - - fmp - - resource - build - - - - - - - - NodePort - - - - - - - - - diff --git a/spring-cloud-kubernetes-examples/kubernetes-loadbalancer-example/README.md b/spring-cloud-kubernetes-examples/kubernetes-loadbalancer-example/README.md deleted file mode 100644 index 6b6c5347..00000000 --- a/spring-cloud-kubernetes-examples/kubernetes-loadbalancer-example/README.md +++ /dev/null @@ -1,99 +0,0 @@ -## Kubernetes Spring Cloud LoadBalancer Example - -This example demonstrates how to use [Spring Cloud LoadBalancer](https://github.com/spring-cloud-incubator/spring-cloud-loadbalancer). In our example the REST `greeting service` calls the `name service`. -As the Spring Cloud LoadBalancer for Kubernetes is configured within this example, it will fetch from the Kubernetes API Server the list of the endpoints available for the name service and load-balance the request between the IP addresses available. - -### Running the example - -This project example runs on ALL the Kubernetes or OpenShift environments, but for development purposes you can use [Minikube - Kubernetes](https://minikube.sigs.k8s.io/docs/start/) tool -to install the platform locally within a virtual machine managed by VirtualBox, Xhyve or KVM, with no fuss. - -IMPORTANT: In order for this setup to work, you need to grant permissions to retrieve "pods", "services" and "endpoints" to the serviceaccount that will be used with the greeting-service. - -### Build/Deploy using Minikube - -First, create a new virtual machine provisioned with Kubernetes on your laptop using the command `minikube start`. - -You also probably want to configure your Docker client to point the minikube Docker daemon with: -``` -eval $(minikube docker-env) -``` - -Next, you can compile your project and generate the Kubernetes resources (yaml files containing the definition of the pod, deployment, build, service and route to be created) -like also to deploy the application on Kubernetes in one maven line by running: - -``` -mvn clean install fabric8:deploy -Dfabric8.generator.from=fabric8/java-jboss-openjdk8-jdk -Pkubernetes -``` - -### Call the Greeting service - -When maven has finished to compile the code but also to call the platform in order to deploy the yaml files generated and tell to the platform to start the process -to build/deploy the docker image and create the containers where the Spring Boot application will run 'greeting-service" and "name-service", you will be able to -check if the pods have been created using this command : - -``` -kc get pods -``` - -If the status of the Spring Boot pod application is `running` and ready state `1`, then you can -get the external address IP/Hostname to be used to call the service from your laptop - -``` -minikube service --url greeting-service -``` - -and then call the service using the curl client - -``` -curl https://IP_OR_HOSTNAME/greeting -``` - -to get a response as such - -``` -Hello from name-service-1-0dzb4!d -``` - -### Verify the load balancing - -First, scale the number of pods of the `name service` to 2 - -``` -kc scale --replicas=2 deployment name-service -``` - -Wait a few minutes before to issue the curl request to call the Greeting Service to let the platform to create the new pod. - -``` -kc get pods --selector=project=name-service -NAME READY STATUS RESTARTS AGE -name-service-1652024859-fsnfw 1/1 Running 0 33s -name-service-1652024859-wrzjs 1/1 Running 0 6m -``` - -If you issue the curl request to access the greeting service, you should see that the message response -contains a different id end of the message which corresponds to the name of the pod. - -``` -Hello from name-service-1-0ss0r! -``` - -As Spring Cloud LoadBalancer will question the Kubernetes API to get, base on the `name-service` name, the list of IP Addresses assigned to the service as endpoints, -you should see that you will get a response from one of the 2 pods running - -``` -kc get endpoints/name-service -NAME ENDPOINTS AGE -name-service 172.17.0.5:8080,172.17.0.6:8080 40m -``` - -Here is an example about what you will get - -``` -curl https://IP_OR_HOSTNAME/greeting -Hello from name-service-1652024859-hf3xv! -curl https://IP_OR_HOSTNAME/greeting -Hello from name-service-1652024859-426kv! -... -``` diff --git a/spring-cloud-kubernetes-examples/kubernetes-loadbalancer-example/greeting-service/pom.xml b/spring-cloud-kubernetes-examples/kubernetes-loadbalancer-example/greeting-service/pom.xml deleted file mode 100644 index 250083d2..00000000 --- a/spring-cloud-kubernetes-examples/kubernetes-loadbalancer-example/greeting-service/pom.xml +++ /dev/null @@ -1,92 +0,0 @@ - - - - kubernetes-loadbalancer-example - org.springframework.cloud - 3.0.0-SNAPSHOT - - 4.0.0 - - greeting-service - Spring Cloud LoadBalancer :: Greeting Service - Spring Cloud LoadBalancer :: Greeting Service - - - - - - org.apache.maven.plugins - maven-deploy-plugin - - true - - - - - org.springframework.boot - spring-boot-maven-plugin - ${spring-boot.version} - - - - repackage - - - - - - - org.eclipse.jkube - kubernetes-maven-plugin - - - fmp - - resource - - - - - - - - - - - org.springframework.boot - spring-boot-dependencies - pom - import - ${spring-boot.version} - - - - - - - org.springframework.boot - spring-boot-starter-webflux - - - org.springframework.boot - spring-boot-starter-actuator - - - org.springframework.cloud - spring-cloud-starter-kubernetes-fabric8-loadbalancer - ${project.version} - - - org.springframework.cloud - spring-cloud-starter-kubernetes-fabric8 - ${project.version} - - - com.squareup.okhttp3 - okhttp - - - - diff --git a/spring-cloud-kubernetes-examples/kubernetes-loadbalancer-example/greeting-service/src/main/fabric8/route.yml b/spring-cloud-kubernetes-examples/kubernetes-loadbalancer-example/greeting-service/src/main/fabric8/route.yml deleted file mode 100644 index d6881f9f..00000000 --- a/spring-cloud-kubernetes-examples/kubernetes-loadbalancer-example/greeting-service/src/main/fabric8/route.yml +++ /dev/null @@ -1,10 +0,0 @@ -apiVersion: v1 -kind: Route -metadata: - name: greeting-service -spec: - port: - targetPort: 8080 - to: - kind: Service - name: greeting-service diff --git a/spring-cloud-kubernetes-examples/kubernetes-loadbalancer-example/greeting-service/src/main/java/org/springframework/cloud/kubernetes/examples/GreetingController.java b/spring-cloud-kubernetes-examples/kubernetes-loadbalancer-example/greeting-service/src/main/java/org/springframework/cloud/kubernetes/examples/GreetingController.java deleted file mode 100644 index b3f13ae3..00000000 --- a/spring-cloud-kubernetes-examples/kubernetes-loadbalancer-example/greeting-service/src/main/java/org/springframework/cloud/kubernetes/examples/GreetingController.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Copyright 2020-2020 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.cloud.kubernetes.examples; - -import reactor.core.publisher.Mono; - -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.bind.annotation.RestController; - -/** - * Greeting service controller. - * - * @author Gytis Trikleris - * @author Olga Maciaszek-Sharma - */ -@RestController -public class GreetingController { - - private final NameService nameService; - - public GreetingController(NameService nameService) { - this.nameService = nameService; - } - - /** - * Endpoint to get a greeting. This endpoint uses a name server to get a name for the - * greeting. - * - * Request to the name service is guarded with a circuit breaker. Therefore if a name - * service is not available or is too slow to response fallback name is used. - * - * Delay parameter can me used to make name service response slower. - * @param delay Milliseconds for how long the response from name service should be - * delayed. - * @return Greeting string. - */ - @GetMapping("/greeting") - public Mono getGreeting(@RequestParam(value = "delay", defaultValue = "0") int delay) { - return nameService.getName(delay).map(name -> String.format("Hello from %s!", name)); - } - -} diff --git a/spring-cloud-kubernetes-examples/kubernetes-loadbalancer-example/greeting-service/src/main/java/org/springframework/cloud/kubernetes/examples/GreetingServiceApplication.java b/spring-cloud-kubernetes-examples/kubernetes-loadbalancer-example/greeting-service/src/main/java/org/springframework/cloud/kubernetes/examples/GreetingServiceApplication.java deleted file mode 100644 index fb649080..00000000 --- a/spring-cloud-kubernetes-examples/kubernetes-loadbalancer-example/greeting-service/src/main/java/org/springframework/cloud/kubernetes/examples/GreetingServiceApplication.java +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Copyright 2020-2020 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.cloud.kubernetes.examples; - -import org.springframework.boot.SpringApplication; -import org.springframework.boot.autoconfigure.SpringBootApplication; -import org.springframework.cloud.client.discovery.EnableDiscoveryClient; -import org.springframework.cloud.client.loadbalancer.LoadBalanced; -import org.springframework.context.annotation.Bean; -import org.springframework.web.reactive.function.client.WebClient; - -/** - * Entry point to the application. - * - * @author Gytis Trikleris - * @author Olga Maciaszek-Sharma - */ -@SpringBootApplication -@EnableDiscoveryClient -public class GreetingServiceApplication { - - public static void main(String[] args) { - SpringApplication.run(GreetingServiceApplication.class, args); - } - - @LoadBalanced - @Bean - WebClient.Builder loadBalancedWebClientBuilder() { - return WebClient.builder(); - } - -} diff --git a/spring-cloud-kubernetes-examples/kubernetes-loadbalancer-example/greeting-service/src/main/java/org/springframework/cloud/kubernetes/examples/NameService.java b/spring-cloud-kubernetes-examples/kubernetes-loadbalancer-example/greeting-service/src/main/java/org/springframework/cloud/kubernetes/examples/NameService.java deleted file mode 100644 index 333b1e38..00000000 --- a/spring-cloud-kubernetes-examples/kubernetes-loadbalancer-example/greeting-service/src/main/java/org/springframework/cloud/kubernetes/examples/NameService.java +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright 2020-2020 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.cloud.kubernetes.examples; - -import reactor.core.publisher.Mono; - -import org.springframework.stereotype.Service; -import org.springframework.web.reactive.function.client.WebClient; - -/** - * Service invoking name-service via REST and guarded by Hystrix. - * - * @author Gytis Trikleris - * @author Olga Maciaszek-Sharma - */ -@Service -public class NameService { - - private final WebClient webClient; - - public NameService(WebClient.Builder webClientBuilder) { - webClient = webClientBuilder.build(); - } - - public Mono getName(int delay) { - return webClient.get().uri(String.format("http://name-service/name?delay=%d", delay)).retrieve() - .bodyToMono(String.class); - } - -} diff --git a/spring-cloud-kubernetes-examples/kubernetes-loadbalancer-example/greeting-service/src/main/resources/application.yml b/spring-cloud-kubernetes-examples/kubernetes-loadbalancer-example/greeting-service/src/main/resources/application.yml deleted file mode 100644 index 5aaed995..00000000 --- a/spring-cloud-kubernetes-examples/kubernetes-loadbalancer-example/greeting-service/src/main/resources/application.yml +++ /dev/null @@ -1,10 +0,0 @@ -spring: - application: - name: greeting-service - cloud: - loadbalancer: - ribbon: - enabled: false - -server: - port: 8080 diff --git a/spring-cloud-kubernetes-examples/kubernetes-loadbalancer-example/name-service/pom.xml b/spring-cloud-kubernetes-examples/kubernetes-loadbalancer-example/name-service/pom.xml deleted file mode 100644 index a9c0f64f..00000000 --- a/spring-cloud-kubernetes-examples/kubernetes-loadbalancer-example/name-service/pom.xml +++ /dev/null @@ -1,67 +0,0 @@ - - - - kubernetes-loadbalancer-example - org.springframework.cloud - 3.0.0-SNAPSHOT - - 4.0.0 - - name-service - - Spring Cloud LoadBalancer :: Name Service - Spring Cloud LoadBalancer :: Name Service - - - - - - org.apache.maven.plugins - maven-deploy-plugin - - true - - - - - org.springframework.boot - spring-boot-maven-plugin - ${spring-boot.version} - - - - repackage - - - - - - - org.eclipse.jkube - kubernetes-maven-plugin - - - fmp - - resource - - - - - - - - - - org.springframework.boot - spring-boot-starter-webflux - - - org.springframework.boot - spring-boot-starter-actuator - - - - diff --git a/spring-cloud-kubernetes-examples/kubernetes-loadbalancer-example/name-service/src/main/fabric8/route.yml b/spring-cloud-kubernetes-examples/kubernetes-loadbalancer-example/name-service/src/main/fabric8/route.yml deleted file mode 100644 index adb5a71a..00000000 --- a/spring-cloud-kubernetes-examples/kubernetes-loadbalancer-example/name-service/src/main/fabric8/route.yml +++ /dev/null @@ -1,10 +0,0 @@ -apiVersion: v1 -kind: Route -metadata: - name: name-service -spec: - port: - targetPort: 8080 - to: - kind: Service - name: name-service diff --git a/spring-cloud-kubernetes-examples/kubernetes-loadbalancer-example/name-service/src/main/java/org/springframework/cloud/kubernetes/examples/NameController.java b/spring-cloud-kubernetes-examples/kubernetes-loadbalancer-example/name-service/src/main/java/org/springframework/cloud/kubernetes/examples/NameController.java deleted file mode 100644 index a0887a2b..00000000 --- a/spring-cloud-kubernetes-examples/kubernetes-loadbalancer-example/name-service/src/main/java/org/springframework/cloud/kubernetes/examples/NameController.java +++ /dev/null @@ -1,68 +0,0 @@ -/* - * Copyright 2020-2020 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.cloud.kubernetes.examples; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import reactor.core.publisher.Mono; - -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.bind.annotation.RestController; - -/** - * Name service controller. - * - * @author Gytis Trikleris - * @author Olga Maciaszek-Sharma - */ -@RestController -public class NameController { - - private static final Logger LOG = LoggerFactory.getLogger(NameController.class); - - private final String hostName = System.getenv("HOSTNAME"); - - @GetMapping("/") - public String ribbonPing() { - LOG.info("Ribbon ping"); - return hostName; - } - - /** - * Endpoint to get a name with a capability to delay a response for some number of - * milliseconds. - * @param delayValue Milliseconds for how long the response should be delayed. - * @return Host name. - */ - @GetMapping("/name") - public Mono getName(@RequestParam(value = "delay", defaultValue = "0") int delayValue) { - LOG.info(String.format("Returning a name '%s' with a delay '%d'", hostName, delayValue)); - delay(delayValue); - return Mono.just(hostName); - } - - private void delay(int delayValue) { - try { - Thread.sleep(delayValue); - } - catch (InterruptedException e) { - e.printStackTrace(); - } - } - -} diff --git a/spring-cloud-kubernetes-examples/kubernetes-loadbalancer-example/name-service/src/main/java/org/springframework/cloud/kubernetes/examples/NameServiceApplication.java b/spring-cloud-kubernetes-examples/kubernetes-loadbalancer-example/name-service/src/main/java/org/springframework/cloud/kubernetes/examples/NameServiceApplication.java deleted file mode 100644 index 98aef1b1..00000000 --- a/spring-cloud-kubernetes-examples/kubernetes-loadbalancer-example/name-service/src/main/java/org/springframework/cloud/kubernetes/examples/NameServiceApplication.java +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Copyright 2020-2020 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.cloud.kubernetes.examples; - -import org.springframework.boot.SpringApplication; -import org.springframework.boot.autoconfigure.SpringBootApplication; - -/** - * Entry point to the application. - * - * @author Gytis Trikleris - */ -@SpringBootApplication -public class NameServiceApplication { - - public static void main(String[] args) { - SpringApplication.run(NameServiceApplication.class, args); - } - -} diff --git a/spring-cloud-kubernetes-examples/kubernetes-loadbalancer-example/name-service/src/main/resources/application.yml b/spring-cloud-kubernetes-examples/kubernetes-loadbalancer-example/name-service/src/main/resources/application.yml deleted file mode 100644 index b08d6019..00000000 --- a/spring-cloud-kubernetes-examples/kubernetes-loadbalancer-example/name-service/src/main/resources/application.yml +++ /dev/null @@ -1,6 +0,0 @@ -spring: - application: - name: name-service - -server: - port: 8080 \ No newline at end of file diff --git a/spring-cloud-kubernetes-examples/kubernetes-loadbalancer-example/pom.xml b/spring-cloud-kubernetes-examples/kubernetes-loadbalancer-example/pom.xml deleted file mode 100644 index 20f23461..00000000 --- a/spring-cloud-kubernetes-examples/kubernetes-loadbalancer-example/pom.xml +++ /dev/null @@ -1,115 +0,0 @@ - - - - spring-cloud-kubernetes-examples - org.springframework.cloud - 3.0.0-SNAPSHOT - - 4.0.0 - kubernetes-loadbalancer-example - Spring Cloud LoadBalancer Example - pom - - - - kubernetes - - - - org.eclipse.jkube - kubernetes-maven-plugin - ${kubernetes.maven.plugin.version} - - - fmp - - resource - build - - - - - - - - NodePort - - - - - - - - - - release - - - - org.eclipse.jkube - kubernetes-maven-plugin - ${kubernetes.maven.plugin.version} - - - fmp - - resource - helm - - - - - - - - - - integration - - - - org.eclipse.jkube - kubernetes-maven-plugin - ${kubernetes.maven.plugin.version} - - - fmp - - resource - build - - - - - - org.apache.maven.plugins - maven-failsafe-plugin - ${maven-failsafe-plugin.version} - - - run-integration-tests - integration-test - - integration-test - verify - - - - - false - false - - - - - - - - - name-service - greeting-service - - - diff --git a/spring-cloud-kubernetes-examples/kubernetes-reload-example/.jdk8 b/spring-cloud-kubernetes-examples/kubernetes-reload-example/.jdk8 deleted file mode 100644 index e69de29b..00000000 diff --git a/spring-cloud-kubernetes-examples/kubernetes-reload-example/README.md b/spring-cloud-kubernetes-examples/kubernetes-reload-example/README.md deleted file mode 100644 index ccc9ab64..00000000 --- a/spring-cloud-kubernetes-examples/kubernetes-reload-example/README.md +++ /dev/null @@ -1,103 +0,0 @@ - -# Setting up the Environment - -To play with these examples, you can install locally Kubernetes & Docker using [Minikube](https://minikube.sigs.k8s.io/docs/start/) within a Virtual Machine -managed by a hypervisor (Xhyve, Virtualbox or KVM) if your machine is not a native Unix operating system. - - -When the Minikube is installed on your machine, you can start kubernetes using this command: -``` -minikube start -``` - -You also probably want to configure your docker client to point the Minikube docker daemon with: -``` -eval $(minikube docker-env) -``` - -This will make sure that the docker images that you build are available to the Minikube environment. - -## Kubernetes Reload Example - -This example demonstrate how to use the reload feature to change the configuration of a spring-boot application at runtime. - -The application consists of a timed bean that periodically prints a message to the console. -The message can be changed using a config map. - -### Running the example -Once you have your environment set up, you can deploy the application using the fabric8 maven plugin: - -``` -mvn clean install fabric8:build fabric8:deploy -Pintegration -``` - -### Changing the configuration - -Create a yaml file with the following contents: - -```yml -apiVersion: v1 -kind: ConfigMap -metadata: - name: reload-example -data: - application.properties: |- - bean.message=Hello World! - another.property=value -``` - -A sample config map is provided with this example in the *config-map.yml* file. - -To deploy the config map, just run the following command on Kubernetes: - -``` -kubectl create -f config-map.yml -``` - -As soon as the config map is deployed, the output of the application changes accordingly. -The config map can be now edited with the following command: - -``` -kubectl edit configmap reload-example -``` - -Changes are applied immediately when using the *event* reload mode. - -The name of the config map (*"reload-example"*) matches the name of the application as declared in the *application.properties* file. - -**Note**: If you are running in a Kubernetes environment where [RBAC](https://kubernetes.io/docs/reference/access-authn-authz/rbac/) is enabled, you need to make sure that your pod has the right level of authorizations to access the K8s APIs or resources. -To help you get started, a sample `ServiceAccount` and `RoleBinding` configuration is provided in `src/k8s` directory. These configuration needs to be applied to your K8s cluster and the newly created `ServiceAccount` needs to be attached to your pod spec like this: - -```yml - spec: - containers: - image: - imagePullPolicy: IfNotPresent - livenessProbe: - failureThreshold: 3 - httpGet: - path: /actuator/health - port: 8080 - scheme: HTTP - initialDelaySeconds: 180 - successThreshold: 1 - name: spring-boot - ports: - - containerPort: 8080 - name: http - protocol: TCP - - containerPort: 9779 - name: prometheus - protocol: TCP - readinessProbe: - failureThreshold: 3 - httpGet: - path: /actuator/health - port: 8080 - scheme: HTTP - initialDelaySeconds: 10 - successThreshold: 1 - securityContext: - privileged: false - serviceAccountName: -``` diff --git a/spring-cloud-kubernetes-examples/kubernetes-reload-example/config-map.yml b/spring-cloud-kubernetes-examples/kubernetes-reload-example/config-map.yml deleted file mode 100644 index 29be9bbe..00000000 --- a/spring-cloud-kubernetes-examples/kubernetes-reload-example/config-map.yml +++ /dev/null @@ -1,8 +0,0 @@ -apiVersion: v1 -kind: ConfigMap -metadata: - name: reload-example -data: - application.properties: |- - bean.message=Hello World! - another.property=value \ No newline at end of file diff --git a/spring-cloud-kubernetes-examples/kubernetes-reload-example/pom.xml b/spring-cloud-kubernetes-examples/kubernetes-reload-example/pom.xml deleted file mode 100644 index 971411c8..00000000 --- a/spring-cloud-kubernetes-examples/kubernetes-reload-example/pom.xml +++ /dev/null @@ -1,230 +0,0 @@ - - - - spring-cloud-kubernetes-examples - org.springframework.cloud - 3.0.0-SNAPSHOT - - 4.0.0 - - spring-cloud-kubernetes-example-reload - - Spring Cloud Kubernetes :: Examples :: Reload ConfigMap - Example demonstrating how to use the configuration reload feature. - - - - - - org.springframework.boot - spring-boot-dependencies - pom - import - ${spring-boot.version} - - - - - - 6.0.19.Final - - - - - org.springframework.boot - spring-boot-starter - - - org.springframework.boot - spring-boot-actuator - - - org.springframework.boot - spring-boot-actuator-autoconfigure - - - org.springframework.boot - spring-boot-starter-web - - - org.springframework.cloud - spring-cloud-starter-kubernetes-fabric8-config - ${project.version} - - - org.hibernate - hibernate-validator - ${hibernate-validator.version} - - - - - - - - org.springframework.boot - spring-boot-maven-plugin - ${spring-boot.version} - - - - repackage - - - - - - - - org.apache.maven.plugins - maven-deploy-plugin - ${maven-deploy-plugin.version} - - true - - - - - org.eclipse.jkube - kubernetes-maven-plugin - ${kubernetes.maven.plugin.version} - - - fmp - - resource - - - - - - - - spring-cloud-reload - - - spring-cloud-reload - - - - - - - - - - - kubernetes - - - - org.eclipse.jkube - kubernetes-maven-plugin - ${kubernetes.maven.plugin.version} - - - fmp - - resource - build - - - - - - - - spring-cloud-reload - - - spring-cloud-reload - NodePort - - - - - - - - - - release - - - - org.eclipse.jkube - kubernetes-maven-plugin - ${kubernetes.maven.plugin.version} - - - fmp - - resource - helm - - - - - - - - - - integration - - - - org.eclipse.jkube - kubernetes-maven-plugin - ${kubernetes.maven.plugin.version} - - - fmp - - resource - helm - build - - - - - - org.apache.maven.plugins - maven-failsafe-plugin - ${maven-failsafe-plugin.version} - - - run-integration-tests - integration-test - - integration-test - verify - - - - - false - false - - - - - - - - \ No newline at end of file diff --git a/spring-cloud-kubernetes-examples/kubernetes-reload-example/src/k8s/rb.yml b/spring-cloud-kubernetes-examples/kubernetes-reload-example/src/k8s/rb.yml deleted file mode 100644 index 1abf9553..00000000 --- a/spring-cloud-kubernetes-examples/kubernetes-reload-example/src/k8s/rb.yml +++ /dev/null @@ -1,13 +0,0 @@ -apiVersion: rbac.authorization.k8s.io/v1 -kind: RoleBinding -metadata: - name: pod-reader - namespace: default -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: Role - name: pod-reader -subjects: - - kind: ServiceAccount - name: config-reader - namespace: default \ No newline at end of file diff --git a/spring-cloud-kubernetes-examples/kubernetes-reload-example/src/k8s/role.yml b/spring-cloud-kubernetes-examples/kubernetes-reload-example/src/k8s/role.yml deleted file mode 100644 index 39d75702..00000000 --- a/spring-cloud-kubernetes-examples/kubernetes-reload-example/src/k8s/role.yml +++ /dev/null @@ -1,9 +0,0 @@ -apiVersion: rbac.authorization.k8s.io/v1 -kind: Role -metadata: - namespace: default - name: pod-reader -rules: - - apiGroups: [""] - resources: ["pods","configmaps"] - verbs: ["get", "watch", "list"] diff --git a/spring-cloud-kubernetes-examples/kubernetes-reload-example/src/k8s/sa.yml b/spring-cloud-kubernetes-examples/kubernetes-reload-example/src/k8s/sa.yml deleted file mode 100644 index b898aaae..00000000 --- a/spring-cloud-kubernetes-examples/kubernetes-reload-example/src/k8s/sa.yml +++ /dev/null @@ -1,5 +0,0 @@ -apiVersion: v1 -kind: ServiceAccount -metadata: - name: config-reader - namespace: default \ No newline at end of file diff --git a/spring-cloud-kubernetes-examples/kubernetes-reload-example/src/main/java/org/springframework/cloud/kubernetes/examples/App.java b/spring-cloud-kubernetes-examples/kubernetes-reload-example/src/main/java/org/springframework/cloud/kubernetes/examples/App.java deleted file mode 100644 index a264336b..00000000 --- a/spring-cloud-kubernetes-examples/kubernetes-reload-example/src/main/java/org/springframework/cloud/kubernetes/examples/App.java +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Copyright 2013-2019 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.cloud.kubernetes.examples; - -import org.springframework.boot.SpringApplication; -import org.springframework.boot.autoconfigure.SpringBootApplication; -import org.springframework.scheduling.annotation.EnableScheduling; - -@SpringBootApplication -@EnableScheduling -public class App { - - public static void main(String[] args) { - SpringApplication.run(App.class, args); - } - -} diff --git a/spring-cloud-kubernetes-examples/kubernetes-reload-example/src/main/java/org/springframework/cloud/kubernetes/examples/DummyConfig.java b/spring-cloud-kubernetes-examples/kubernetes-reload-example/src/main/java/org/springframework/cloud/kubernetes/examples/DummyConfig.java deleted file mode 100644 index 90969249..00000000 --- a/spring-cloud-kubernetes-examples/kubernetes-reload-example/src/main/java/org/springframework/cloud/kubernetes/examples/DummyConfig.java +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Copyright 2013-2019 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.cloud.kubernetes.examples; - -import org.springframework.boot.context.properties.ConfigurationProperties; -import org.springframework.context.annotation.Configuration; - -@Configuration(proxyBeanMethods = false) -@ConfigurationProperties(prefix = "dummy") -public class DummyConfig { - - private String message = "this is a dummy message"; - - public String getMessage() { - return this.message; - } - - public void setMessage(String message) { - this.message = message; - } - -} diff --git a/spring-cloud-kubernetes-examples/kubernetes-reload-example/src/main/java/org/springframework/cloud/kubernetes/examples/MyBean.java b/spring-cloud-kubernetes-examples/kubernetes-reload-example/src/main/java/org/springframework/cloud/kubernetes/examples/MyBean.java deleted file mode 100644 index 872e4ec0..00000000 --- a/spring-cloud-kubernetes-examples/kubernetes-reload-example/src/main/java/org/springframework/cloud/kubernetes/examples/MyBean.java +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright 2013-2019 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.cloud.kubernetes.examples; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.scheduling.annotation.Scheduled; -import org.springframework.stereotype.Component; - -@Component -public class MyBean { - - @Autowired - private MyConfig myConfig; - - @Autowired - private DummyConfig dummyConfig; - - @Scheduled(fixedDelay = 5000) - public void hello() { - System.out.println("The first message is: " + this.myConfig.getMessage()); - System.out.println("The other message is: " + this.dummyConfig.getMessage()); - } - -} diff --git a/spring-cloud-kubernetes-examples/kubernetes-reload-example/src/main/java/org/springframework/cloud/kubernetes/examples/MyConfig.java b/spring-cloud-kubernetes-examples/kubernetes-reload-example/src/main/java/org/springframework/cloud/kubernetes/examples/MyConfig.java deleted file mode 100644 index 7b17d61e..00000000 --- a/spring-cloud-kubernetes-examples/kubernetes-reload-example/src/main/java/org/springframework/cloud/kubernetes/examples/MyConfig.java +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Copyright 2013-2019 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.cloud.kubernetes.examples; - -import org.springframework.boot.context.properties.ConfigurationProperties; -import org.springframework.context.annotation.Configuration; - -@Configuration(proxyBeanMethods = false) -@ConfigurationProperties(prefix = "bean") -public class MyConfig { - - private String message = "a message that can be changed live"; - - public String getMessage() { - return this.message; - } - - public void setMessage(String message) { - this.message = message; - } - -} diff --git a/spring-cloud-kubernetes-examples/kubernetes-reload-example/src/main/resources/application.yaml b/spring-cloud-kubernetes-examples/kubernetes-reload-example/src/main/resources/application.yaml deleted file mode 100644 index 9e359122..00000000 --- a/spring-cloud-kubernetes-examples/kubernetes-reload-example/src/main/resources/application.yaml +++ /dev/null @@ -1,8 +0,0 @@ -management: - endpoint: - restart: - enabled: true - health: - enabled: true - info: - enabled: true diff --git a/spring-cloud-kubernetes-examples/kubernetes-reload-example/src/main/resources/bootstrap.yaml b/spring-cloud-kubernetes-examples/kubernetes-reload-example/src/main/resources/bootstrap.yaml deleted file mode 100644 index 3cd101e3..00000000 --- a/spring-cloud-kubernetes-examples/kubernetes-reload-example/src/main/resources/bootstrap.yaml +++ /dev/null @@ -1,13 +0,0 @@ -spring: - application: - name: reload-example - cloud: - kubernetes: - reload: - enabled: true - mode: polling - period: 5000 - config: - sources: - - name: other - - name: ${spring.application.name} diff --git a/spring-cloud-kubernetes-examples/kubernetes-reload-example/src/main/resources/logback.xml b/spring-cloud-kubernetes-examples/kubernetes-reload-example/src/main/resources/logback.xml deleted file mode 100644 index aa0ff5ab..00000000 --- a/spring-cloud-kubernetes-examples/kubernetes-reload-example/src/main/resources/logback.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - diff --git a/spring-cloud-kubernetes-examples/kubernetes-reload-example/src/main/resources/old-application.properties b/spring-cloud-kubernetes-examples/kubernetes-reload-example/src/main/resources/old-application.properties deleted file mode 100644 index 6fea4d14..00000000 --- a/spring-cloud-kubernetes-examples/kubernetes-reload-example/src/main/resources/old-application.properties +++ /dev/null @@ -1,10 +0,0 @@ -spring.application.name=reload-example -management.endpoint.health.enabled=true -management.endpoint.info.enabled=true -management.endpoint.restart.enabled=true -spring.cloud.kubernetes.reload.enabled=true -#spring.cloud.kubernetes.reload.strategy=restart_context -#spring.cloud.kubernetes.reload.mode=polling -#spring.cloud.kubernetes.reload.period=5000 -#spring.cloud.kubernetes.reload.monitoring-config-maps=false -#spring.cloud.kubernetes.reload.monitoring-secrets=true diff --git a/spring-cloud-kubernetes-examples/pom.xml b/spring-cloud-kubernetes-examples/pom.xml index bf0bbec9..59806e4f 100644 --- a/spring-cloud-kubernetes-examples/pom.xml +++ b/spring-cloud-kubernetes-examples/pom.xml @@ -34,10 +34,7 @@ - kubernetes-reload-example - kubernetes-hello-world-example kubernetes-leader-election-example - kubernetes-loadbalancer-example