├── KubernetesMicroservices ├── .gitignore ├── .gitignore~ ├── DiscoveryService │ ├── bin │ │ └── application.yml │ ├── build.gradle │ ├── gradle │ │ └── wrapper │ │ │ ├── gradle-wrapper.jar │ │ │ └── gradle-wrapper.properties │ ├── gradlew │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── elipcero │ │ │ └── demo │ │ │ └── kubernetes │ │ │ └── microservice │ │ │ └── DiscoveryServiceApplication.java │ │ └── resources │ │ └── application.yml ├── EdgeService │ ├── bin │ │ └── application.yml │ ├── build.gradle │ ├── gradle │ │ └── wrapper │ │ │ ├── gradle-wrapper.jar │ │ │ └── gradle-wrapper.properties │ ├── gradlew │ ├── gradlew.bat │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── elipcero │ │ │ └── demo │ │ │ └── kubernetes │ │ │ └── microservice │ │ │ └── EdgeServiceApplication.java │ │ └── resources │ │ └── application.yml ├── MonitorService │ ├── bin │ │ └── application.yml │ ├── build.gradle │ ├── gradle │ │ └── wrapper │ │ │ ├── gradle-wrapper.jar │ │ │ └── gradle-wrapper.properties │ ├── gradlew │ ├── gradlew.bat │ └── src │ │ ├── main │ │ ├── java │ │ │ └── com │ │ │ │ └── elipcero │ │ │ │ └── demo │ │ │ │ └── kubernetes │ │ │ │ └── microservice │ │ │ │ └── MonitorServiceApplication.java │ │ └── resources │ │ │ └── application.yml │ │ └── test │ │ └── java │ │ └── com │ │ └── elipcero │ │ └── demo │ │ └── kubernetes │ │ └── microservice │ │ └── MonitorServiceApplicationTests.java ├── OrderLineService │ ├── bin │ │ └── application.yml │ ├── build.gradle │ ├── gradle │ │ └── wrapper │ │ │ ├── gradle-wrapper.jar │ │ │ └── gradle-wrapper.properties │ ├── gradlew │ ├── gradlew.bat │ └── src │ │ ├── main │ │ ├── java │ │ │ └── com │ │ │ │ └── elipcero │ │ │ │ └── demo │ │ │ │ └── kubernetes │ │ │ │ └── microservice │ │ │ │ ├── OrderLineEntity.java │ │ │ │ ├── OrderLineService.java │ │ │ │ └── OrderLineServiceApplication.java │ │ └── resources │ │ │ └── application.yml │ │ └── test │ │ └── java │ │ └── com │ │ └── elipcero │ │ └── demo │ │ └── kubernetes │ │ └── microservice │ │ └── OrderLineServiceApplicationTests.java ├── OrderService │ ├── bin │ │ └── application.yml │ ├── build.gradle │ ├── gradle │ │ └── wrapper │ │ │ ├── gradle-wrapper.jar │ │ │ └── gradle-wrapper.properties │ ├── gradlew │ ├── gradlew.bat │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── elipcero │ │ │ └── demo │ │ │ └── kubernetes │ │ │ └── microservice │ │ │ ├── OrderComposition.java │ │ │ ├── OrderEntity.java │ │ │ ├── OrderService.java │ │ │ └── OrderServiceApplication.java │ │ └── resources │ │ └── application.yml ├── TurbineService │ ├── bin │ │ └── application.yml │ ├── build.gradle │ ├── gradle │ │ └── wrapper │ │ │ ├── gradle-wrapper.jar │ │ │ └── gradle-wrapper.properties │ ├── gradlew │ ├── gradlew.bat │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── elipcero │ │ │ └── demo │ │ │ └── kubernetes │ │ │ └── microservice │ │ │ └── TurbineServiceApplication.java │ │ └── resources │ │ └── application.yml ├── build.gradle ├── kubernete-config │ ├── createpods.sh │ ├── deletepods.sh │ ├── deletepods.sh~ │ ├── discover.yaml │ ├── discoverservice.yaml │ ├── edge.yaml │ ├── monitor.yaml │ ├── order.yaml │ ├── orderline.yaml │ ├── rabbitmq.yaml │ ├── rabbitmqservice.yaml │ └── turbine.yaml └── settings.gradle └── README.md /KubernetesMicroservices/.gitignore: -------------------------------------------------------------------------------- 1 | # Java Files # 2 | *.class 3 | 4 | # Package Files # 5 | # *.jar, we need to checkin gradle/wrapper/gradle-wrapper.jar 6 | *.war 7 | *.ear 8 | 9 | # Eclipse files # 10 | .settings 11 | .classpath 12 | .project 13 | 14 | # Gradle files # 15 | .gradle 16 | build 17 | 18 | target 19 | logs 20 | data 21 | -------------------------------------------------------------------------------- /KubernetesMicroservices/.gitignore~: -------------------------------------------------------------------------------- 1 | # Java Files # 2 | *.class 3 | 4 | # Package Files # 5 | # *.jar, we need to checkin gradle/wrapper/gradle-wrapper.jar 6 | *.war 7 | *.ear 8 | 9 | # Eclipse files # 10 | .settings 11 | .classpath 12 | .project 13 | 14 | # IntelliJ files # 15 | .idea 16 | local.properties 17 | *.iml 18 | out 19 | 20 | # Gradle files # 21 | .gradle 22 | build 23 | 24 | target 25 | logs 26 | ML-to-do-notes.md 27 | data 28 | -------------------------------------------------------------------------------- /KubernetesMicroservices/DiscoveryService/bin/application.yml: -------------------------------------------------------------------------------- 1 | server: 2 | port: 8761 3 | 4 | eureka: 5 | instance: 6 | hostname: discovery 7 | client: 8 | registerWithEureka: false 9 | fetchRegistry: false 10 | serviceUrl: 11 | defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/ 12 | -------------------------------------------------------------------------------- /KubernetesMicroservices/DiscoveryService/build.gradle: -------------------------------------------------------------------------------- 1 | jar { 2 | baseName = 'DiscoveryService' 3 | version = '0.0.1-SNAPSHOT' 4 | } 5 | 6 | group = 'elipcero' 7 | applicationName = 'discoveryservice' 8 | 9 | mainClassName = 'com.elipcero.demo.kubernetes.microservice.DiscoveryServiceApplication' 10 | 11 | dependencies { 12 | compile('org.springframework.cloud:spring-cloud-starter-eureka-server') 13 | } -------------------------------------------------------------------------------- /KubernetesMicroservices/DiscoveryService/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davsuapas/KubernetesMicroservices/bb25f7d862601915c6c74f437fbf4055fe3e6c7a/KubernetesMicroservices/DiscoveryService/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /KubernetesMicroservices/DiscoveryService/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | zipStoreBase=GRADLE_USER_HOME 4 | zipStorePath=wrapper/dists 5 | distributionUrl=https\://services.gradle.org/distributions/gradle-2.7-bin.zip 6 | -------------------------------------------------------------------------------- /KubernetesMicroservices/DiscoveryService/gradlew: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | ############################################################################## 4 | ## 5 | ## Gradle start up script for UN*X 6 | ## 7 | ############################################################################## 8 | 9 | # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. 10 | DEFAULT_JVM_OPTS="" 11 | 12 | APP_NAME="Gradle" 13 | APP_BASE_NAME=`basename "$0"` 14 | 15 | # Use the maximum available, or set MAX_FD != -1 to use that value. 16 | MAX_FD="maximum" 17 | 18 | warn ( ) { 19 | echo "$*" 20 | } 21 | 22 | die ( ) { 23 | echo 24 | echo "$*" 25 | echo 26 | exit 1 27 | } 28 | 29 | # OS specific support (must be 'true' or 'false'). 30 | cygwin=false 31 | msys=false 32 | darwin=false 33 | case "`uname`" in 34 | CYGWIN* ) 35 | cygwin=true 36 | ;; 37 | Darwin* ) 38 | darwin=true 39 | ;; 40 | MINGW* ) 41 | msys=true 42 | ;; 43 | esac 44 | 45 | # Attempt to set APP_HOME 46 | # Resolve links: $0 may be a link 47 | PRG="$0" 48 | # Need this for relative symlinks. 49 | while [ -h "$PRG" ] ; do 50 | ls=`ls -ld "$PRG"` 51 | link=`expr "$ls" : '.*-> \(.*\)$'` 52 | if expr "$link" : '/.*' > /dev/null; then 53 | PRG="$link" 54 | else 55 | PRG=`dirname "$PRG"`"/$link" 56 | fi 57 | done 58 | SAVED="`pwd`" 59 | cd "`dirname \"$PRG\"`/" >&- 60 | APP_HOME="`pwd -P`" 61 | cd "$SAVED" >&- 62 | 63 | CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar 64 | 65 | # Determine the Java command to use to start the JVM. 66 | if [ -n "$JAVA_HOME" ] ; then 67 | if [ -x "$JAVA_HOME/jre/sh/java" ] ; then 68 | # IBM's JDK on AIX uses strange locations for the executables 69 | JAVACMD="$JAVA_HOME/jre/sh/java" 70 | else 71 | JAVACMD="$JAVA_HOME/bin/java" 72 | fi 73 | if [ ! -x "$JAVACMD" ] ; then 74 | die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME 75 | 76 | Please set the JAVA_HOME variable in your environment to match the 77 | location of your Java installation." 78 | fi 79 | else 80 | JAVACMD="java" 81 | which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 82 | 83 | Please set the JAVA_HOME variable in your environment to match the 84 | location of your Java installation." 85 | fi 86 | 87 | # Increase the maximum file descriptors if we can. 88 | if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then 89 | MAX_FD_LIMIT=`ulimit -H -n` 90 | if [ $? -eq 0 ] ; then 91 | if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then 92 | MAX_FD="$MAX_FD_LIMIT" 93 | fi 94 | ulimit -n $MAX_FD 95 | if [ $? -ne 0 ] ; then 96 | warn "Could not set maximum file descriptor limit: $MAX_FD" 97 | fi 98 | else 99 | warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" 100 | fi 101 | fi 102 | 103 | # For Darwin, add options to specify how the application appears in the dock 104 | if $darwin; then 105 | GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" 106 | fi 107 | 108 | # For Cygwin, switch paths to Windows format before running java 109 | if $cygwin ; then 110 | APP_HOME=`cygpath --path --mixed "$APP_HOME"` 111 | CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` 112 | JAVACMD=`cygpath --unix "$JAVACMD"` 113 | 114 | # We build the pattern for arguments to be converted via cygpath 115 | ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` 116 | SEP="" 117 | for dir in $ROOTDIRSRAW ; do 118 | ROOTDIRS="$ROOTDIRS$SEP$dir" 119 | SEP="|" 120 | done 121 | OURCYGPATTERN="(^($ROOTDIRS))" 122 | # Add a user-defined pattern to the cygpath arguments 123 | if [ "$GRADLE_CYGPATTERN" != "" ] ; then 124 | OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" 125 | fi 126 | # Now convert the arguments - kludge to limit ourselves to /bin/sh 127 | i=0 128 | for arg in "$@" ; do 129 | CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` 130 | CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option 131 | 132 | if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition 133 | eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` 134 | else 135 | eval `echo args$i`="\"$arg\"" 136 | fi 137 | i=$((i+1)) 138 | done 139 | case $i in 140 | (0) set -- ;; 141 | (1) set -- "$args0" ;; 142 | (2) set -- "$args0" "$args1" ;; 143 | (3) set -- "$args0" "$args1" "$args2" ;; 144 | (4) set -- "$args0" "$args1" "$args2" "$args3" ;; 145 | (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; 146 | (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; 147 | (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; 148 | (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; 149 | (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; 150 | esac 151 | fi 152 | 153 | # Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules 154 | function splitJvmOpts() { 155 | JVM_OPTS=("$@") 156 | } 157 | eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS 158 | JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME" 159 | 160 | exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@" 161 | -------------------------------------------------------------------------------- /KubernetesMicroservices/DiscoveryService/src/main/java/com/elipcero/demo/kubernetes/microservice/DiscoveryServiceApplication.java: -------------------------------------------------------------------------------- 1 | package com.elipcero.demo.kubernetes.microservice; 2 | 3 | import org.springframework.boot.SpringApplication; 4 | import org.springframework.boot.autoconfigure.SpringBootApplication; 5 | import org.springframework.cloud.client.discovery.EnableDiscoveryClient; 6 | import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer; 7 | 8 | @SpringBootApplication 9 | @EnableEurekaServer 10 | @EnableDiscoveryClient 11 | public class DiscoveryServiceApplication { 12 | 13 | public static void main(String[] args) { 14 | SpringApplication.run(DiscoveryServiceApplication.class, args); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /KubernetesMicroservices/DiscoveryService/src/main/resources/application.yml: -------------------------------------------------------------------------------- 1 | server: 2 | port: 8761 3 | 4 | eureka: 5 | instance: 6 | hostname: discovery 7 | client: 8 | registerWithEureka: false 9 | fetchRegistry: false 10 | serviceUrl: 11 | defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/ 12 | -------------------------------------------------------------------------------- /KubernetesMicroservices/EdgeService/bin/application.yml: -------------------------------------------------------------------------------- 1 | server: 2 | port: 8765 3 | 4 | spring: 5 | application: 6 | name: edge 7 | 8 | info: 9 | component: Zuul Server 10 | 11 | zuul: 12 | ignoredServices: "*" 13 | routes: 14 | orders: 15 | path: /orders/** 16 | 17 | eureka: 18 | instance: 19 | preferIpAddress: true 20 | client: 21 | serviceUrl: 22 | defaultZone: http://${DISCOVERY_SERVICE_HOST}:${DISCOVERY_SERVICE_PORT}/eureka/ 23 | 24 | 25 | -------------------------------------------------------------------------------- /KubernetesMicroservices/EdgeService/build.gradle: -------------------------------------------------------------------------------- 1 | jar { 2 | baseName = 'EdgeService' 3 | version = '0.0.1-SNAPSHOT' 4 | } 5 | 6 | group = 'elipcero' 7 | applicationName = 'edgeservice' 8 | 9 | mainClassName = 'com.elipcero.demo.kubernetes.microservice.EdgeServiceApplication' 10 | 11 | dependencies { 12 | compile('org.springframework.cloud:spring-cloud-starter-eureka') 13 | compile('org.springframework.cloud:spring-cloud-starter-zuul') 14 | } 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /KubernetesMicroservices/EdgeService/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davsuapas/KubernetesMicroservices/bb25f7d862601915c6c74f437fbf4055fe3e6c7a/KubernetesMicroservices/EdgeService/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /KubernetesMicroservices/EdgeService/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | zipStoreBase=GRADLE_USER_HOME 4 | zipStorePath=wrapper/dists 5 | distributionUrl=https\://services.gradle.org/distributions/gradle-2.7-bin.zip 6 | -------------------------------------------------------------------------------- /KubernetesMicroservices/EdgeService/gradlew: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | ############################################################################## 4 | ## 5 | ## Gradle start up script for UN*X 6 | ## 7 | ############################################################################## 8 | 9 | # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. 10 | DEFAULT_JVM_OPTS="" 11 | 12 | APP_NAME="Gradle" 13 | APP_BASE_NAME=`basename "$0"` 14 | 15 | # Use the maximum available, or set MAX_FD != -1 to use that value. 16 | MAX_FD="maximum" 17 | 18 | warn ( ) { 19 | echo "$*" 20 | } 21 | 22 | die ( ) { 23 | echo 24 | echo "$*" 25 | echo 26 | exit 1 27 | } 28 | 29 | # OS specific support (must be 'true' or 'false'). 30 | cygwin=false 31 | msys=false 32 | darwin=false 33 | case "`uname`" in 34 | CYGWIN* ) 35 | cygwin=true 36 | ;; 37 | Darwin* ) 38 | darwin=true 39 | ;; 40 | MINGW* ) 41 | msys=true 42 | ;; 43 | esac 44 | 45 | # Attempt to set APP_HOME 46 | # Resolve links: $0 may be a link 47 | PRG="$0" 48 | # Need this for relative symlinks. 49 | while [ -h "$PRG" ] ; do 50 | ls=`ls -ld "$PRG"` 51 | link=`expr "$ls" : '.*-> \(.*\)$'` 52 | if expr "$link" : '/.*' > /dev/null; then 53 | PRG="$link" 54 | else 55 | PRG=`dirname "$PRG"`"/$link" 56 | fi 57 | done 58 | SAVED="`pwd`" 59 | cd "`dirname \"$PRG\"`/" >&- 60 | APP_HOME="`pwd -P`" 61 | cd "$SAVED" >&- 62 | 63 | CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar 64 | 65 | # Determine the Java command to use to start the JVM. 66 | if [ -n "$JAVA_HOME" ] ; then 67 | if [ -x "$JAVA_HOME/jre/sh/java" ] ; then 68 | # IBM's JDK on AIX uses strange locations for the executables 69 | JAVACMD="$JAVA_HOME/jre/sh/java" 70 | else 71 | JAVACMD="$JAVA_HOME/bin/java" 72 | fi 73 | if [ ! -x "$JAVACMD" ] ; then 74 | die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME 75 | 76 | Please set the JAVA_HOME variable in your environment to match the 77 | location of your Java installation." 78 | fi 79 | else 80 | JAVACMD="java" 81 | which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 82 | 83 | Please set the JAVA_HOME variable in your environment to match the 84 | location of your Java installation." 85 | fi 86 | 87 | # Increase the maximum file descriptors if we can. 88 | if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then 89 | MAX_FD_LIMIT=`ulimit -H -n` 90 | if [ $? -eq 0 ] ; then 91 | if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then 92 | MAX_FD="$MAX_FD_LIMIT" 93 | fi 94 | ulimit -n $MAX_FD 95 | if [ $? -ne 0 ] ; then 96 | warn "Could not set maximum file descriptor limit: $MAX_FD" 97 | fi 98 | else 99 | warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" 100 | fi 101 | fi 102 | 103 | # For Darwin, add options to specify how the application appears in the dock 104 | if $darwin; then 105 | GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" 106 | fi 107 | 108 | # For Cygwin, switch paths to Windows format before running java 109 | if $cygwin ; then 110 | APP_HOME=`cygpath --path --mixed "$APP_HOME"` 111 | CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` 112 | JAVACMD=`cygpath --unix "$JAVACMD"` 113 | 114 | # We build the pattern for arguments to be converted via cygpath 115 | ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` 116 | SEP="" 117 | for dir in $ROOTDIRSRAW ; do 118 | ROOTDIRS="$ROOTDIRS$SEP$dir" 119 | SEP="|" 120 | done 121 | OURCYGPATTERN="(^($ROOTDIRS))" 122 | # Add a user-defined pattern to the cygpath arguments 123 | if [ "$GRADLE_CYGPATTERN" != "" ] ; then 124 | OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" 125 | fi 126 | # Now convert the arguments - kludge to limit ourselves to /bin/sh 127 | i=0 128 | for arg in "$@" ; do 129 | CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` 130 | CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option 131 | 132 | if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition 133 | eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` 134 | else 135 | eval `echo args$i`="\"$arg\"" 136 | fi 137 | i=$((i+1)) 138 | done 139 | case $i in 140 | (0) set -- ;; 141 | (1) set -- "$args0" ;; 142 | (2) set -- "$args0" "$args1" ;; 143 | (3) set -- "$args0" "$args1" "$args2" ;; 144 | (4) set -- "$args0" "$args1" "$args2" "$args3" ;; 145 | (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; 146 | (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; 147 | (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; 148 | (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; 149 | (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; 150 | esac 151 | fi 152 | 153 | # Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules 154 | function splitJvmOpts() { 155 | JVM_OPTS=("$@") 156 | } 157 | eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS 158 | JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME" 159 | 160 | exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@" 161 | -------------------------------------------------------------------------------- /KubernetesMicroservices/EdgeService/gradlew.bat: -------------------------------------------------------------------------------- 1 | @if "%DEBUG%" == "" @echo off 2 | @rem ########################################################################## 3 | @rem 4 | @rem Gradle startup script for Windows 5 | @rem 6 | @rem ########################################################################## 7 | 8 | @rem Set local scope for the variables with windows NT shell 9 | if "%OS%"=="Windows_NT" setlocal 10 | 11 | @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. 12 | set DEFAULT_JVM_OPTS= 13 | 14 | set DIRNAME=%~dp0 15 | if "%DIRNAME%" == "" set DIRNAME=. 16 | set APP_BASE_NAME=%~n0 17 | set APP_HOME=%DIRNAME% 18 | 19 | @rem Find java.exe 20 | if defined JAVA_HOME goto findJavaFromJavaHome 21 | 22 | set JAVA_EXE=java.exe 23 | %JAVA_EXE% -version >NUL 2>&1 24 | if "%ERRORLEVEL%" == "0" goto init 25 | 26 | echo. 27 | echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 28 | echo. 29 | echo Please set the JAVA_HOME variable in your environment to match the 30 | echo location of your Java installation. 31 | 32 | goto fail 33 | 34 | :findJavaFromJavaHome 35 | set JAVA_HOME=%JAVA_HOME:"=% 36 | set JAVA_EXE=%JAVA_HOME%/bin/java.exe 37 | 38 | if exist "%JAVA_EXE%" goto init 39 | 40 | echo. 41 | echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 42 | echo. 43 | echo Please set the JAVA_HOME variable in your environment to match the 44 | echo location of your Java installation. 45 | 46 | goto fail 47 | 48 | :init 49 | @rem Get command-line arguments, handling Windowz variants 50 | 51 | if not "%OS%" == "Windows_NT" goto win9xME_args 52 | if "%@eval[2+2]" == "4" goto 4NT_args 53 | 54 | :win9xME_args 55 | @rem Slurp the command line arguments. 56 | set CMD_LINE_ARGS= 57 | set _SKIP=2 58 | 59 | :win9xME_args_slurp 60 | if "x%~1" == "x" goto execute 61 | 62 | set CMD_LINE_ARGS=%* 63 | goto execute 64 | 65 | :4NT_args 66 | @rem Get arguments from the 4NT Shell from JP Software 67 | set CMD_LINE_ARGS=%$ 68 | 69 | :execute 70 | @rem Setup the command line 71 | 72 | set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar 73 | 74 | @rem Execute Gradle 75 | "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% 76 | 77 | :end 78 | @rem End local scope for the variables with windows NT shell 79 | if "%ERRORLEVEL%"=="0" goto mainEnd 80 | 81 | :fail 82 | rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of 83 | rem the _cmd.exe /c_ return code! 84 | if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 85 | exit /b 1 86 | 87 | :mainEnd 88 | if "%OS%"=="Windows_NT" endlocal 89 | 90 | :omega 91 | -------------------------------------------------------------------------------- /KubernetesMicroservices/EdgeService/src/main/java/com/elipcero/demo/kubernetes/microservice/EdgeServiceApplication.java: -------------------------------------------------------------------------------- 1 | package com.elipcero.demo.kubernetes.microservice; 2 | 3 | import org.springframework.boot.autoconfigure.SpringBootApplication; 4 | import org.springframework.boot.builder.SpringApplicationBuilder; 5 | import org.springframework.cloud.netflix.zuul.EnableZuulProxy; 6 | import org.springframework.stereotype.Controller; 7 | 8 | @SpringBootApplication 9 | @Controller 10 | @EnableZuulProxy 11 | public class EdgeServiceApplication { 12 | 13 | public static void main(String[] args) { 14 | new SpringApplicationBuilder(EdgeServiceApplication.class).web(true).run(args); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /KubernetesMicroservices/EdgeService/src/main/resources/application.yml: -------------------------------------------------------------------------------- 1 | server: 2 | port: 8765 3 | 4 | spring: 5 | application: 6 | name: edge 7 | 8 | info: 9 | component: Zuul Server 10 | 11 | zuul: 12 | ignoredServices: "*" 13 | routes: 14 | orders: 15 | path: /orders/** 16 | 17 | eureka: 18 | instance: 19 | preferIpAddress: true 20 | client: 21 | serviceUrl: 22 | defaultZone: http://${DISCOVERY_SERVICE_HOST}:${DISCOVERY_SERVICE_PORT}/eureka/ 23 | 24 | 25 | -------------------------------------------------------------------------------- /KubernetesMicroservices/MonitorService/bin/application.yml: -------------------------------------------------------------------------------- 1 | 2 | spring: 3 | application: 4 | name: hystrixdashboard 5 | 6 | endpoints: 7 | restart: 8 | enabled: true 9 | shutdown: 10 | enabled: true 11 | 12 | server: 13 | port: 7979 14 | 15 | eureka: 16 | client: 17 | #Region where eureka is deployed -For AWS specify one of the AWS regions, for other datacenters specify a arbitrary string 18 | #indicating the region.This is normally specified as a -D option (eg) -Deureka.region=us-east-1 19 | region: default 20 | 21 | 22 | #For eureka clients running in eureka server, it needs to connect to servers in other zones 23 | preferSameZone: false 24 | 25 | #Change this if you want to use a DNS based lookup for determining other eureka servers. For example 26 | #of specifying the DNS entries, check the eureka-client-test.properties, eureka-client-prod.properties 27 | #shouldUseDns: false 28 | 29 | us-east-1: 30 | availabilityZones: default 31 | 32 | serviceUrl: 33 | defaultZone: http://${DISCOVERY_SERVICE_HOST}:${DISCOVERY_SERVICE_PORT}/eureka/ 34 | 35 | instance: 36 | #Virtual host name by which the clients identifies this service 37 | virtualHostName: ${spring.application.name} 38 | preferIpAddress: true -------------------------------------------------------------------------------- /KubernetesMicroservices/MonitorService/build.gradle: -------------------------------------------------------------------------------- 1 | jar { 2 | baseName = 'MonitorService' 3 | version = '0.0.1-SNAPSHOT' 4 | } 5 | 6 | group = 'elipcero' 7 | applicationName = 'monitorservice' 8 | 9 | mainClassName = 'com.elipcero.demo.kubernetes.microservice.MonitorServiceApplication' 10 | 11 | dependencies { 12 | compile('org.springframework.cloud:spring-cloud-starter-hystrix-dashboard') 13 | } -------------------------------------------------------------------------------- /KubernetesMicroservices/MonitorService/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davsuapas/KubernetesMicroservices/bb25f7d862601915c6c74f437fbf4055fe3e6c7a/KubernetesMicroservices/MonitorService/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /KubernetesMicroservices/MonitorService/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | zipStoreBase=GRADLE_USER_HOME 4 | zipStorePath=wrapper/dists 5 | distributionUrl=https\://services.gradle.org/distributions/gradle-2.9-bin.zip 6 | -------------------------------------------------------------------------------- /KubernetesMicroservices/MonitorService/gradlew: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | ############################################################################## 4 | ## 5 | ## Gradle start up script for UN*X 6 | ## 7 | ############################################################################## 8 | 9 | # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. 10 | DEFAULT_JVM_OPTS="" 11 | 12 | APP_NAME="Gradle" 13 | APP_BASE_NAME=`basename "$0"` 14 | 15 | # Use the maximum available, or set MAX_FD != -1 to use that value. 16 | MAX_FD="maximum" 17 | 18 | warn ( ) { 19 | echo "$*" 20 | } 21 | 22 | die ( ) { 23 | echo 24 | echo "$*" 25 | echo 26 | exit 1 27 | } 28 | 29 | # OS specific support (must be 'true' or 'false'). 30 | cygwin=false 31 | msys=false 32 | darwin=false 33 | case "`uname`" in 34 | CYGWIN* ) 35 | cygwin=true 36 | ;; 37 | Darwin* ) 38 | darwin=true 39 | ;; 40 | MINGW* ) 41 | msys=true 42 | ;; 43 | esac 44 | 45 | # Attempt to set APP_HOME 46 | # Resolve links: $0 may be a link 47 | PRG="$0" 48 | # Need this for relative symlinks. 49 | while [ -h "$PRG" ] ; do 50 | ls=`ls -ld "$PRG"` 51 | link=`expr "$ls" : '.*-> \(.*\)$'` 52 | if expr "$link" : '/.*' > /dev/null; then 53 | PRG="$link" 54 | else 55 | PRG=`dirname "$PRG"`"/$link" 56 | fi 57 | done 58 | SAVED="`pwd`" 59 | cd "`dirname \"$PRG\"`/" >&- 60 | APP_HOME="`pwd -P`" 61 | cd "$SAVED" >&- 62 | 63 | CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar 64 | 65 | # Determine the Java command to use to start the JVM. 66 | if [ -n "$JAVA_HOME" ] ; then 67 | if [ -x "$JAVA_HOME/jre/sh/java" ] ; then 68 | # IBM's JDK on AIX uses strange locations for the executables 69 | JAVACMD="$JAVA_HOME/jre/sh/java" 70 | else 71 | JAVACMD="$JAVA_HOME/bin/java" 72 | fi 73 | if [ ! -x "$JAVACMD" ] ; then 74 | die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME 75 | 76 | Please set the JAVA_HOME variable in your environment to match the 77 | location of your Java installation." 78 | fi 79 | else 80 | JAVACMD="java" 81 | which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 82 | 83 | Please set the JAVA_HOME variable in your environment to match the 84 | location of your Java installation." 85 | fi 86 | 87 | # Increase the maximum file descriptors if we can. 88 | if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then 89 | MAX_FD_LIMIT=`ulimit -H -n` 90 | if [ $? -eq 0 ] ; then 91 | if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then 92 | MAX_FD="$MAX_FD_LIMIT" 93 | fi 94 | ulimit -n $MAX_FD 95 | if [ $? -ne 0 ] ; then 96 | warn "Could not set maximum file descriptor limit: $MAX_FD" 97 | fi 98 | else 99 | warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" 100 | fi 101 | fi 102 | 103 | # For Darwin, add options to specify how the application appears in the dock 104 | if $darwin; then 105 | GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" 106 | fi 107 | 108 | # For Cygwin, switch paths to Windows format before running java 109 | if $cygwin ; then 110 | APP_HOME=`cygpath --path --mixed "$APP_HOME"` 111 | CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` 112 | JAVACMD=`cygpath --unix "$JAVACMD"` 113 | 114 | # We build the pattern for arguments to be converted via cygpath 115 | ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` 116 | SEP="" 117 | for dir in $ROOTDIRSRAW ; do 118 | ROOTDIRS="$ROOTDIRS$SEP$dir" 119 | SEP="|" 120 | done 121 | OURCYGPATTERN="(^($ROOTDIRS))" 122 | # Add a user-defined pattern to the cygpath arguments 123 | if [ "$GRADLE_CYGPATTERN" != "" ] ; then 124 | OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" 125 | fi 126 | # Now convert the arguments - kludge to limit ourselves to /bin/sh 127 | i=0 128 | for arg in "$@" ; do 129 | CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` 130 | CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option 131 | 132 | if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition 133 | eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` 134 | else 135 | eval `echo args$i`="\"$arg\"" 136 | fi 137 | i=$((i+1)) 138 | done 139 | case $i in 140 | (0) set -- ;; 141 | (1) set -- "$args0" ;; 142 | (2) set -- "$args0" "$args1" ;; 143 | (3) set -- "$args0" "$args1" "$args2" ;; 144 | (4) set -- "$args0" "$args1" "$args2" "$args3" ;; 145 | (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; 146 | (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; 147 | (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; 148 | (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; 149 | (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; 150 | esac 151 | fi 152 | 153 | # Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules 154 | function splitJvmOpts() { 155 | JVM_OPTS=("$@") 156 | } 157 | eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS 158 | JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME" 159 | 160 | exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@" 161 | -------------------------------------------------------------------------------- /KubernetesMicroservices/MonitorService/gradlew.bat: -------------------------------------------------------------------------------- 1 | @if "%DEBUG%" == "" @echo off 2 | @rem ########################################################################## 3 | @rem 4 | @rem Gradle startup script for Windows 5 | @rem 6 | @rem ########################################################################## 7 | 8 | @rem Set local scope for the variables with windows NT shell 9 | if "%OS%"=="Windows_NT" setlocal 10 | 11 | @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. 12 | set DEFAULT_JVM_OPTS= 13 | 14 | set DIRNAME=%~dp0 15 | if "%DIRNAME%" == "" set DIRNAME=. 16 | set APP_BASE_NAME=%~n0 17 | set APP_HOME=%DIRNAME% 18 | 19 | @rem Find java.exe 20 | if defined JAVA_HOME goto findJavaFromJavaHome 21 | 22 | set JAVA_EXE=java.exe 23 | %JAVA_EXE% -version >NUL 2>&1 24 | if "%ERRORLEVEL%" == "0" goto init 25 | 26 | echo. 27 | echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 28 | echo. 29 | echo Please set the JAVA_HOME variable in your environment to match the 30 | echo location of your Java installation. 31 | 32 | goto fail 33 | 34 | :findJavaFromJavaHome 35 | set JAVA_HOME=%JAVA_HOME:"=% 36 | set JAVA_EXE=%JAVA_HOME%/bin/java.exe 37 | 38 | if exist "%JAVA_EXE%" goto init 39 | 40 | echo. 41 | echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 42 | echo. 43 | echo Please set the JAVA_HOME variable in your environment to match the 44 | echo location of your Java installation. 45 | 46 | goto fail 47 | 48 | :init 49 | @rem Get command-line arguments, handling Windowz variants 50 | 51 | if not "%OS%" == "Windows_NT" goto win9xME_args 52 | if "%@eval[2+2]" == "4" goto 4NT_args 53 | 54 | :win9xME_args 55 | @rem Slurp the command line arguments. 56 | set CMD_LINE_ARGS= 57 | set _SKIP=2 58 | 59 | :win9xME_args_slurp 60 | if "x%~1" == "x" goto execute 61 | 62 | set CMD_LINE_ARGS=%* 63 | goto execute 64 | 65 | :4NT_args 66 | @rem Get arguments from the 4NT Shell from JP Software 67 | set CMD_LINE_ARGS=%$ 68 | 69 | :execute 70 | @rem Setup the command line 71 | 72 | set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar 73 | 74 | @rem Execute Gradle 75 | "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% 76 | 77 | :end 78 | @rem End local scope for the variables with windows NT shell 79 | if "%ERRORLEVEL%"=="0" goto mainEnd 80 | 81 | :fail 82 | rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of 83 | rem the _cmd.exe /c_ return code! 84 | if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 85 | exit /b 1 86 | 87 | :mainEnd 88 | if "%OS%"=="Windows_NT" endlocal 89 | 90 | :omega 91 | -------------------------------------------------------------------------------- /KubernetesMicroservices/MonitorService/src/main/java/com/elipcero/demo/kubernetes/microservice/MonitorServiceApplication.java: -------------------------------------------------------------------------------- 1 | package com.elipcero.demo.kubernetes.microservice; 2 | 3 | import org.springframework.boot.autoconfigure.SpringBootApplication; 4 | import org.springframework.boot.builder.SpringApplicationBuilder; 5 | import org.springframework.boot.context.web.SpringBootServletInitializer; 6 | import org.springframework.cloud.netflix.hystrix.dashboard.EnableHystrixDashboard; 7 | import org.springframework.stereotype.Controller; 8 | import org.springframework.web.bind.annotation.RequestMapping; 9 | 10 | @SpringBootApplication 11 | @Controller 12 | @EnableHystrixDashboard 13 | public class MonitorServiceApplication extends SpringBootServletInitializer { 14 | 15 | @RequestMapping("/") 16 | public String home() { 17 | return "forward:/hystrix"; 18 | } 19 | 20 | @Override 21 | protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { 22 | return application.sources(MonitorServiceApplication.class).web(true); 23 | } 24 | 25 | public static void main(String[] args) { 26 | new SpringApplicationBuilder(MonitorServiceApplication.class).web(true).run(args); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /KubernetesMicroservices/MonitorService/src/main/resources/application.yml: -------------------------------------------------------------------------------- 1 | 2 | spring: 3 | application: 4 | name: hystrixdashboard 5 | 6 | endpoints: 7 | restart: 8 | enabled: true 9 | shutdown: 10 | enabled: true 11 | 12 | server: 13 | port: 7979 14 | 15 | eureka: 16 | client: 17 | #Region where eureka is deployed -For AWS specify one of the AWS regions, for other datacenters specify a arbitrary string 18 | #indicating the region.This is normally specified as a -D option (eg) -Deureka.region=us-east-1 19 | region: default 20 | 21 | 22 | #For eureka clients running in eureka server, it needs to connect to servers in other zones 23 | preferSameZone: false 24 | 25 | #Change this if you want to use a DNS based lookup for determining other eureka servers. For example 26 | #of specifying the DNS entries, check the eureka-client-test.properties, eureka-client-prod.properties 27 | #shouldUseDns: false 28 | 29 | us-east-1: 30 | availabilityZones: default 31 | 32 | serviceUrl: 33 | defaultZone: http://${DISCOVERY_SERVICE_HOST}:${DISCOVERY_SERVICE_PORT}/eureka/ 34 | 35 | instance: 36 | #Virtual host name by which the clients identifies this service 37 | virtualHostName: ${spring.application.name} 38 | preferIpAddress: true -------------------------------------------------------------------------------- /KubernetesMicroservices/MonitorService/src/test/java/com/elipcero/demo/kubernetes/microservice/MonitorServiceApplicationTests.java: -------------------------------------------------------------------------------- 1 | package com.elipcero.demo.kubernetes.microservice; 2 | 3 | import org.junit.Test; 4 | import org.junit.runner.RunWith; 5 | import org.springframework.boot.test.SpringApplicationConfiguration; 6 | import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; 7 | 8 | @RunWith(SpringJUnit4ClassRunner.class) 9 | @SpringApplicationConfiguration(classes = MonitorServiceApplication.class) 10 | public class MonitorServiceApplicationTests { 11 | 12 | @Test 13 | public void contextLoads() { 14 | } 15 | 16 | } 17 | -------------------------------------------------------------------------------- /KubernetesMicroservices/OrderLineService/bin/application.yml: -------------------------------------------------------------------------------- 1 | spring: 2 | application: 3 | name: orderline 4 | 5 | server: 6 | port: 8080 7 | 8 | eureka: 9 | instance: 10 | leaseRenewalIntervalInSeconds: 10 11 | preferIpAddress: true 12 | metadataMap: 13 | instanceId: ${vcap.application.instance_id:${spring.application.name}:${spring.application.instance_id:${random.value}}} 14 | client: 15 | registryFetchIntervalSeconds: 5 16 | serviceUrl: 17 | defaultZone: http://${DISCOVERY_SERVICE_HOST}:${DISCOVERY_SERVICE_PORT}/eureka/ 18 | 19 | logging: 20 | level: 21 | com.elipcero: INFO -------------------------------------------------------------------------------- /KubernetesMicroservices/OrderLineService/build.gradle: -------------------------------------------------------------------------------- 1 | jar { 2 | baseName = 'OrderLineService' 3 | version = '0.0.1-SNAPSHOT' 4 | } 5 | 6 | group = 'elipcero' 7 | applicationName = 'orderlineservice' 8 | 9 | mainClassName = 'com.elipcero.demo.kubernetes.microservice.OrderLineServiceApplication' 10 | 11 | dependencies { 12 | compile('org.springframework.cloud:spring-cloud-starter-eureka') 13 | } 14 | -------------------------------------------------------------------------------- /KubernetesMicroservices/OrderLineService/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davsuapas/KubernetesMicroservices/bb25f7d862601915c6c74f437fbf4055fe3e6c7a/KubernetesMicroservices/OrderLineService/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /KubernetesMicroservices/OrderLineService/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | zipStoreBase=GRADLE_USER_HOME 4 | zipStorePath=wrapper/dists 5 | distributionUrl=https\://services.gradle.org/distributions/gradle-2.7-bin.zip 6 | -------------------------------------------------------------------------------- /KubernetesMicroservices/OrderLineService/gradlew: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | ############################################################################## 4 | ## 5 | ## Gradle start up script for UN*X 6 | ## 7 | ############################################################################## 8 | 9 | # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. 10 | DEFAULT_JVM_OPTS="" 11 | 12 | APP_NAME="Gradle" 13 | APP_BASE_NAME=`basename "$0"` 14 | 15 | # Use the maximum available, or set MAX_FD != -1 to use that value. 16 | MAX_FD="maximum" 17 | 18 | warn ( ) { 19 | echo "$*" 20 | } 21 | 22 | die ( ) { 23 | echo 24 | echo "$*" 25 | echo 26 | exit 1 27 | } 28 | 29 | # OS specific support (must be 'true' or 'false'). 30 | cygwin=false 31 | msys=false 32 | darwin=false 33 | case "`uname`" in 34 | CYGWIN* ) 35 | cygwin=true 36 | ;; 37 | Darwin* ) 38 | darwin=true 39 | ;; 40 | MINGW* ) 41 | msys=true 42 | ;; 43 | esac 44 | 45 | # Attempt to set APP_HOME 46 | # Resolve links: $0 may be a link 47 | PRG="$0" 48 | # Need this for relative symlinks. 49 | while [ -h "$PRG" ] ; do 50 | ls=`ls -ld "$PRG"` 51 | link=`expr "$ls" : '.*-> \(.*\)$'` 52 | if expr "$link" : '/.*' > /dev/null; then 53 | PRG="$link" 54 | else 55 | PRG=`dirname "$PRG"`"/$link" 56 | fi 57 | done 58 | SAVED="`pwd`" 59 | cd "`dirname \"$PRG\"`/" >&- 60 | APP_HOME="`pwd -P`" 61 | cd "$SAVED" >&- 62 | 63 | CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar 64 | 65 | # Determine the Java command to use to start the JVM. 66 | if [ -n "$JAVA_HOME" ] ; then 67 | if [ -x "$JAVA_HOME/jre/sh/java" ] ; then 68 | # IBM's JDK on AIX uses strange locations for the executables 69 | JAVACMD="$JAVA_HOME/jre/sh/java" 70 | else 71 | JAVACMD="$JAVA_HOME/bin/java" 72 | fi 73 | if [ ! -x "$JAVACMD" ] ; then 74 | die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME 75 | 76 | Please set the JAVA_HOME variable in your environment to match the 77 | location of your Java installation." 78 | fi 79 | else 80 | JAVACMD="java" 81 | which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 82 | 83 | Please set the JAVA_HOME variable in your environment to match the 84 | location of your Java installation." 85 | fi 86 | 87 | # Increase the maximum file descriptors if we can. 88 | if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then 89 | MAX_FD_LIMIT=`ulimit -H -n` 90 | if [ $? -eq 0 ] ; then 91 | if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then 92 | MAX_FD="$MAX_FD_LIMIT" 93 | fi 94 | ulimit -n $MAX_FD 95 | if [ $? -ne 0 ] ; then 96 | warn "Could not set maximum file descriptor limit: $MAX_FD" 97 | fi 98 | else 99 | warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" 100 | fi 101 | fi 102 | 103 | # For Darwin, add options to specify how the application appears in the dock 104 | if $darwin; then 105 | GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" 106 | fi 107 | 108 | # For Cygwin, switch paths to Windows format before running java 109 | if $cygwin ; then 110 | APP_HOME=`cygpath --path --mixed "$APP_HOME"` 111 | CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` 112 | JAVACMD=`cygpath --unix "$JAVACMD"` 113 | 114 | # We build the pattern for arguments to be converted via cygpath 115 | ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` 116 | SEP="" 117 | for dir in $ROOTDIRSRAW ; do 118 | ROOTDIRS="$ROOTDIRS$SEP$dir" 119 | SEP="|" 120 | done 121 | OURCYGPATTERN="(^($ROOTDIRS))" 122 | # Add a user-defined pattern to the cygpath arguments 123 | if [ "$GRADLE_CYGPATTERN" != "" ] ; then 124 | OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" 125 | fi 126 | # Now convert the arguments - kludge to limit ourselves to /bin/sh 127 | i=0 128 | for arg in "$@" ; do 129 | CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` 130 | CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option 131 | 132 | if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition 133 | eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` 134 | else 135 | eval `echo args$i`="\"$arg\"" 136 | fi 137 | i=$((i+1)) 138 | done 139 | case $i in 140 | (0) set -- ;; 141 | (1) set -- "$args0" ;; 142 | (2) set -- "$args0" "$args1" ;; 143 | (3) set -- "$args0" "$args1" "$args2" ;; 144 | (4) set -- "$args0" "$args1" "$args2" "$args3" ;; 145 | (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; 146 | (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; 147 | (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; 148 | (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; 149 | (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; 150 | esac 151 | fi 152 | 153 | # Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules 154 | function splitJvmOpts() { 155 | JVM_OPTS=("$@") 156 | } 157 | eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS 158 | JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME" 159 | 160 | exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@" 161 | -------------------------------------------------------------------------------- /KubernetesMicroservices/OrderLineService/gradlew.bat: -------------------------------------------------------------------------------- 1 | @if "%DEBUG%" == "" @echo off 2 | @rem ########################################################################## 3 | @rem 4 | @rem Gradle startup script for Windows 5 | @rem 6 | @rem ########################################################################## 7 | 8 | @rem Set local scope for the variables with windows NT shell 9 | if "%OS%"=="Windows_NT" setlocal 10 | 11 | @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. 12 | set DEFAULT_JVM_OPTS= 13 | 14 | set DIRNAME=%~dp0 15 | if "%DIRNAME%" == "" set DIRNAME=. 16 | set APP_BASE_NAME=%~n0 17 | set APP_HOME=%DIRNAME% 18 | 19 | @rem Find java.exe 20 | if defined JAVA_HOME goto findJavaFromJavaHome 21 | 22 | set JAVA_EXE=java.exe 23 | %JAVA_EXE% -version >NUL 2>&1 24 | if "%ERRORLEVEL%" == "0" goto init 25 | 26 | echo. 27 | echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 28 | echo. 29 | echo Please set the JAVA_HOME variable in your environment to match the 30 | echo location of your Java installation. 31 | 32 | goto fail 33 | 34 | :findJavaFromJavaHome 35 | set JAVA_HOME=%JAVA_HOME:"=% 36 | set JAVA_EXE=%JAVA_HOME%/bin/java.exe 37 | 38 | if exist "%JAVA_EXE%" goto init 39 | 40 | echo. 41 | echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 42 | echo. 43 | echo Please set the JAVA_HOME variable in your environment to match the 44 | echo location of your Java installation. 45 | 46 | goto fail 47 | 48 | :init 49 | @rem Get command-line arguments, handling Windowz variants 50 | 51 | if not "%OS%" == "Windows_NT" goto win9xME_args 52 | if "%@eval[2+2]" == "4" goto 4NT_args 53 | 54 | :win9xME_args 55 | @rem Slurp the command line arguments. 56 | set CMD_LINE_ARGS= 57 | set _SKIP=2 58 | 59 | :win9xME_args_slurp 60 | if "x%~1" == "x" goto execute 61 | 62 | set CMD_LINE_ARGS=%* 63 | goto execute 64 | 65 | :4NT_args 66 | @rem Get arguments from the 4NT Shell from JP Software 67 | set CMD_LINE_ARGS=%$ 68 | 69 | :execute 70 | @rem Setup the command line 71 | 72 | set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar 73 | 74 | @rem Execute Gradle 75 | "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% 76 | 77 | :end 78 | @rem End local scope for the variables with windows NT shell 79 | if "%ERRORLEVEL%"=="0" goto mainEnd 80 | 81 | :fail 82 | rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of 83 | rem the _cmd.exe /c_ return code! 84 | if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 85 | exit /b 1 86 | 87 | :mainEnd 88 | if "%OS%"=="Windows_NT" endlocal 89 | 90 | :omega 91 | -------------------------------------------------------------------------------- /KubernetesMicroservices/OrderLineService/src/main/java/com/elipcero/demo/kubernetes/microservice/OrderLineEntity.java: -------------------------------------------------------------------------------- 1 | package com.elipcero.demo.kubernetes.microservice; 2 | 3 | public class OrderLineEntity { 4 | 5 | public OrderLineEntity() { 6 | } 7 | 8 | public OrderLineEntity(int number, String productName) { 9 | this.number = number; 10 | this.productName = productName; 11 | } 12 | 13 | private int number; 14 | 15 | private String productName; 16 | 17 | public int getNumber() { 18 | return number; 19 | } 20 | 21 | public void setNumber(int number) { 22 | this.number = number; 23 | } 24 | 25 | public String getProductName() { 26 | return productName; 27 | } 28 | 29 | public void setProductName(String productName) { 30 | this.productName = productName; 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /KubernetesMicroservices/OrderLineService/src/main/java/com/elipcero/demo/kubernetes/microservice/OrderLineService.java: -------------------------------------------------------------------------------- 1 | package com.elipcero.demo.kubernetes.microservice; 2 | 3 | import org.slf4j.Logger; 4 | import org.slf4j.LoggerFactory; 5 | import org.springframework.web.bind.annotation.PathVariable; 6 | import org.springframework.web.bind.annotation.RequestMapping; 7 | import org.springframework.web.bind.annotation.RestController; 8 | 9 | @RestController 10 | public class OrderLineService { 11 | 12 | private static final Logger LOG = LoggerFactory.getLogger(OrderLineService.class); 13 | 14 | @RequestMapping("/orderlines/{number}") 15 | public OrderLineEntity getOrderLine(@PathVariable int number) { 16 | 17 | try { 18 | 19 | LOG.info("Get order line: {}", number); 20 | 21 | return new OrderLineEntity(number, "productName"); 22 | 23 | } 24 | catch (Throwable e) { 25 | LOG.info("Get order line. Error {}", e); 26 | throw e; 27 | } 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /KubernetesMicroservices/OrderLineService/src/main/java/com/elipcero/demo/kubernetes/microservice/OrderLineServiceApplication.java: -------------------------------------------------------------------------------- 1 | package com.elipcero.demo.kubernetes.microservice; 2 | 3 | import org.springframework.boot.SpringApplication; 4 | import org.springframework.boot.autoconfigure.SpringBootApplication; 5 | import org.springframework.cloud.client.discovery.EnableDiscoveryClient; 6 | 7 | @SpringBootApplication 8 | @EnableDiscoveryClient 9 | public class OrderLineServiceApplication { 10 | 11 | public static void main(String[] args) { 12 | SpringApplication.run(OrderLineServiceApplication.class, args); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /KubernetesMicroservices/OrderLineService/src/main/resources/application.yml: -------------------------------------------------------------------------------- 1 | spring: 2 | application: 3 | name: orderline 4 | 5 | server: 6 | port: 8080 7 | 8 | eureka: 9 | instance: 10 | leaseRenewalIntervalInSeconds: 10 11 | preferIpAddress: true 12 | metadataMap: 13 | instanceId: ${vcap.application.instance_id:${spring.application.name}:${spring.application.instance_id:${random.value}}} 14 | client: 15 | registryFetchIntervalSeconds: 5 16 | serviceUrl: 17 | defaultZone: http://${DISCOVERY_SERVICE_HOST}:${DISCOVERY_SERVICE_PORT}/eureka/ 18 | 19 | logging: 20 | level: 21 | com.elipcero: INFO -------------------------------------------------------------------------------- /KubernetesMicroservices/OrderLineService/src/test/java/com/elipcero/demo/kubernetes/microservice/OrderLineServiceApplicationTests.java: -------------------------------------------------------------------------------- 1 | package com.elipcero.demo.kubernetes.microservice; 2 | 3 | import org.junit.Test; 4 | import org.junit.runner.RunWith; 5 | import org.springframework.test.context.web.WebAppConfiguration; 6 | import org.springframework.boot.test.SpringApplicationConfiguration; 7 | import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; 8 | 9 | @RunWith(SpringJUnit4ClassRunner.class) 10 | @SpringApplicationConfiguration(classes = OrderLineServiceApplication.class) 11 | @WebAppConfiguration 12 | public class OrderLineServiceApplicationTests { 13 | 14 | @Test 15 | public void contextLoads() { 16 | } 17 | 18 | } 19 | -------------------------------------------------------------------------------- /KubernetesMicroservices/OrderService/bin/application.yml: -------------------------------------------------------------------------------- 1 | spring: 2 | application: 3 | name: orders 4 | rabbitmq: 5 | host: ${RABBITMQ_SERVICE_HOST} 6 | username: guest 7 | password: guest 8 | 9 | server: 10 | port: 8080 11 | 12 | 13 | hystrix: 14 | threadpool: 15 | default: 16 | # Maximum number of concurrent requests when using thread pools (Default: 10) 17 | coreSize: 100 18 | # Maximum LinkedBlockingQueue size - -1 for using SynchronousQueue (Default: -1) 19 | maxQueueSize: -1 20 | # Queue size rejection threshold (Default: 5) 21 | queueSizeRejectionThreshold: 5 22 | command: 23 | default: 24 | circuitBreaker: 25 | sleepWindowInMilliseconds: 30000 26 | requestVolumeThreshold: 2 27 | execution: 28 | isolation: 29 | # strategy: SEMAPHORE, no thread pool but timeout handling stops to work 30 | strategy: THREAD 31 | thread: 32 | timeoutInMilliseconds: 4000 33 | 34 | eureka: 35 | instance: 36 | preferIpAddress: true 37 | leaseRenewalIntervalInSeconds: 10 38 | metadataMap: 39 | instanceId: ${vcap.application.instance_id:${spring.application.name}:${spring.application.instance_id:${random.value}}} 40 | client: 41 | registryFetchIntervalSeconds: 5 42 | serviceUrl: 43 | defaultZone: http://${DISCOVERY_SERVICE_HOST}:${DISCOVERY_SERVICE_PORT}/eureka/ 44 | 45 | logging: 46 | level: 47 | com.elipcero: INFO -------------------------------------------------------------------------------- /KubernetesMicroservices/OrderService/build.gradle: -------------------------------------------------------------------------------- 1 | jar { 2 | baseName = 'OrderService' 3 | version = '0.0.1-SNAPSHOT' 4 | } 5 | 6 | group = 'elipcero' 7 | applicationName = 'orderservice' 8 | 9 | mainClassName = 'com.elipcero.demo.kubernetes.microservice.OrderServiceApplication' 10 | 11 | dependencies { 12 | compile("org.springframework.cloud:spring-cloud-starter-hystrix") 13 | compile("org.springframework.cloud:spring-cloud-starter-eureka") 14 | compile("org.springframework.cloud:spring-cloud-starter-bus-amqp") 15 | compile("org.springframework.cloud:spring-cloud-netflix-hystrix-amqp") 16 | 17 | compile project(':OrderLineService') 18 | } 19 | 20 | 21 | -------------------------------------------------------------------------------- /KubernetesMicroservices/OrderService/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davsuapas/KubernetesMicroservices/bb25f7d862601915c6c74f437fbf4055fe3e6c7a/KubernetesMicroservices/OrderService/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /KubernetesMicroservices/OrderService/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | zipStoreBase=GRADLE_USER_HOME 4 | zipStorePath=wrapper/dists 5 | distributionUrl=https\://services.gradle.org/distributions/gradle-2.7-bin.zip 6 | -------------------------------------------------------------------------------- /KubernetesMicroservices/OrderService/gradlew: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | ############################################################################## 4 | ## 5 | ## Gradle start up script for UN*X 6 | ## 7 | ############################################################################## 8 | 9 | # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. 10 | DEFAULT_JVM_OPTS="" 11 | 12 | APP_NAME="Gradle" 13 | APP_BASE_NAME=`basename "$0"` 14 | 15 | # Use the maximum available, or set MAX_FD != -1 to use that value. 16 | MAX_FD="maximum" 17 | 18 | warn ( ) { 19 | echo "$*" 20 | } 21 | 22 | die ( ) { 23 | echo 24 | echo "$*" 25 | echo 26 | exit 1 27 | } 28 | 29 | # OS specific support (must be 'true' or 'false'). 30 | cygwin=false 31 | msys=false 32 | darwin=false 33 | case "`uname`" in 34 | CYGWIN* ) 35 | cygwin=true 36 | ;; 37 | Darwin* ) 38 | darwin=true 39 | ;; 40 | MINGW* ) 41 | msys=true 42 | ;; 43 | esac 44 | 45 | # Attempt to set APP_HOME 46 | # Resolve links: $0 may be a link 47 | PRG="$0" 48 | # Need this for relative symlinks. 49 | while [ -h "$PRG" ] ; do 50 | ls=`ls -ld "$PRG"` 51 | link=`expr "$ls" : '.*-> \(.*\)$'` 52 | if expr "$link" : '/.*' > /dev/null; then 53 | PRG="$link" 54 | else 55 | PRG=`dirname "$PRG"`"/$link" 56 | fi 57 | done 58 | SAVED="`pwd`" 59 | cd "`dirname \"$PRG\"`/" >&- 60 | APP_HOME="`pwd -P`" 61 | cd "$SAVED" >&- 62 | 63 | CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar 64 | 65 | # Determine the Java command to use to start the JVM. 66 | if [ -n "$JAVA_HOME" ] ; then 67 | if [ -x "$JAVA_HOME/jre/sh/java" ] ; then 68 | # IBM's JDK on AIX uses strange locations for the executables 69 | JAVACMD="$JAVA_HOME/jre/sh/java" 70 | else 71 | JAVACMD="$JAVA_HOME/bin/java" 72 | fi 73 | if [ ! -x "$JAVACMD" ] ; then 74 | die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME 75 | 76 | Please set the JAVA_HOME variable in your environment to match the 77 | location of your Java installation." 78 | fi 79 | else 80 | JAVACMD="java" 81 | which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 82 | 83 | Please set the JAVA_HOME variable in your environment to match the 84 | location of your Java installation." 85 | fi 86 | 87 | # Increase the maximum file descriptors if we can. 88 | if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then 89 | MAX_FD_LIMIT=`ulimit -H -n` 90 | if [ $? -eq 0 ] ; then 91 | if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then 92 | MAX_FD="$MAX_FD_LIMIT" 93 | fi 94 | ulimit -n $MAX_FD 95 | if [ $? -ne 0 ] ; then 96 | warn "Could not set maximum file descriptor limit: $MAX_FD" 97 | fi 98 | else 99 | warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" 100 | fi 101 | fi 102 | 103 | # For Darwin, add options to specify how the application appears in the dock 104 | if $darwin; then 105 | GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" 106 | fi 107 | 108 | # For Cygwin, switch paths to Windows format before running java 109 | if $cygwin ; then 110 | APP_HOME=`cygpath --path --mixed "$APP_HOME"` 111 | CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` 112 | JAVACMD=`cygpath --unix "$JAVACMD"` 113 | 114 | # We build the pattern for arguments to be converted via cygpath 115 | ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` 116 | SEP="" 117 | for dir in $ROOTDIRSRAW ; do 118 | ROOTDIRS="$ROOTDIRS$SEP$dir" 119 | SEP="|" 120 | done 121 | OURCYGPATTERN="(^($ROOTDIRS))" 122 | # Add a user-defined pattern to the cygpath arguments 123 | if [ "$GRADLE_CYGPATTERN" != "" ] ; then 124 | OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" 125 | fi 126 | # Now convert the arguments - kludge to limit ourselves to /bin/sh 127 | i=0 128 | for arg in "$@" ; do 129 | CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` 130 | CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option 131 | 132 | if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition 133 | eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` 134 | else 135 | eval `echo args$i`="\"$arg\"" 136 | fi 137 | i=$((i+1)) 138 | done 139 | case $i in 140 | (0) set -- ;; 141 | (1) set -- "$args0" ;; 142 | (2) set -- "$args0" "$args1" ;; 143 | (3) set -- "$args0" "$args1" "$args2" ;; 144 | (4) set -- "$args0" "$args1" "$args2" "$args3" ;; 145 | (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; 146 | (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; 147 | (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; 148 | (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; 149 | (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; 150 | esac 151 | fi 152 | 153 | # Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules 154 | function splitJvmOpts() { 155 | JVM_OPTS=("$@") 156 | } 157 | eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS 158 | JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME" 159 | 160 | exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@" 161 | -------------------------------------------------------------------------------- /KubernetesMicroservices/OrderService/gradlew.bat: -------------------------------------------------------------------------------- 1 | @if "%DEBUG%" == "" @echo off 2 | @rem ########################################################################## 3 | @rem 4 | @rem Gradle startup script for Windows 5 | @rem 6 | @rem ########################################################################## 7 | 8 | @rem Set local scope for the variables with windows NT shell 9 | if "%OS%"=="Windows_NT" setlocal 10 | 11 | @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. 12 | set DEFAULT_JVM_OPTS= 13 | 14 | set DIRNAME=%~dp0 15 | if "%DIRNAME%" == "" set DIRNAME=. 16 | set APP_BASE_NAME=%~n0 17 | set APP_HOME=%DIRNAME% 18 | 19 | @rem Find java.exe 20 | if defined JAVA_HOME goto findJavaFromJavaHome 21 | 22 | set JAVA_EXE=java.exe 23 | %JAVA_EXE% -version >NUL 2>&1 24 | if "%ERRORLEVEL%" == "0" goto init 25 | 26 | echo. 27 | echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 28 | echo. 29 | echo Please set the JAVA_HOME variable in your environment to match the 30 | echo location of your Java installation. 31 | 32 | goto fail 33 | 34 | :findJavaFromJavaHome 35 | set JAVA_HOME=%JAVA_HOME:"=% 36 | set JAVA_EXE=%JAVA_HOME%/bin/java.exe 37 | 38 | if exist "%JAVA_EXE%" goto init 39 | 40 | echo. 41 | echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 42 | echo. 43 | echo Please set the JAVA_HOME variable in your environment to match the 44 | echo location of your Java installation. 45 | 46 | goto fail 47 | 48 | :init 49 | @rem Get command-line arguments, handling Windowz variants 50 | 51 | if not "%OS%" == "Windows_NT" goto win9xME_args 52 | if "%@eval[2+2]" == "4" goto 4NT_args 53 | 54 | :win9xME_args 55 | @rem Slurp the command line arguments. 56 | set CMD_LINE_ARGS= 57 | set _SKIP=2 58 | 59 | :win9xME_args_slurp 60 | if "x%~1" == "x" goto execute 61 | 62 | set CMD_LINE_ARGS=%* 63 | goto execute 64 | 65 | :4NT_args 66 | @rem Get arguments from the 4NT Shell from JP Software 67 | set CMD_LINE_ARGS=%$ 68 | 69 | :execute 70 | @rem Setup the command line 71 | 72 | set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar 73 | 74 | @rem Execute Gradle 75 | "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% 76 | 77 | :end 78 | @rem End local scope for the variables with windows NT shell 79 | if "%ERRORLEVEL%"=="0" goto mainEnd 80 | 81 | :fail 82 | rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of 83 | rem the _cmd.exe /c_ return code! 84 | if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 85 | exit /b 1 86 | 87 | :mainEnd 88 | if "%OS%"=="Windows_NT" endlocal 89 | 90 | :omega 91 | -------------------------------------------------------------------------------- /KubernetesMicroservices/OrderService/src/main/java/com/elipcero/demo/kubernetes/microservice/OrderComposition.java: -------------------------------------------------------------------------------- 1 | package com.elipcero.demo.kubernetes.microservice; 2 | 3 | import org.slf4j.Logger; 4 | import org.slf4j.LoggerFactory; 5 | import org.springframework.beans.factory.annotation.Autowired; 6 | import org.springframework.cloud.client.loadbalancer.LoadBalancerClient; 7 | import org.springframework.stereotype.Component; 8 | import org.springframework.web.client.RestTemplate; 9 | 10 | import com.netflix.hystrix.contrib.javanica.annotation.HystrixCommand; 11 | 12 | @Component 13 | public class OrderComposition { 14 | 15 | @Autowired 16 | private LoadBalancerClient loadBalancer; 17 | 18 | private static final Logger LOG = LoggerFactory.getLogger(OrderComposition.class); 19 | 20 | private RestTemplate restTemplate = new RestTemplate(); 21 | 22 | @HystrixCommand(fallbackMethod = "defaultOrder") 23 | public OrderEntity getOrder(int number) { 24 | 25 | LOG.info("Get order: {}", number); 26 | 27 | OrderEntity order = new OrderEntity(number); 28 | 29 | String url = loadBalancer.choose("orderline").getUri() + "/orderlines/" + number; 30 | 31 | LOG.info("Get order line for order: {}", url); 32 | 33 | order.getOrderLines().add(restTemplate.getForEntity(url, OrderLineEntity.class).getBody()); 34 | 35 | LOG.info("Return order with lines number: {}", order.getOrderLines().size()); 36 | 37 | OrderLineEntity line = order.getOrderLines().stream().findFirst().get(); 38 | 39 | LOG.info("Return order number : {}", order.getNumber()); 40 | LOG.info("Return order line number : {}", line.getNumber()); 41 | LOG.info("Return order line product : {}", line.getProductName()); 42 | 43 | return order; 44 | } 45 | 46 | public OrderEntity defaultOrder(int number) { 47 | LOG.info("Using fallback method for order service"); 48 | return new OrderEntity(number); 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /KubernetesMicroservices/OrderService/src/main/java/com/elipcero/demo/kubernetes/microservice/OrderEntity.java: -------------------------------------------------------------------------------- 1 | package com.elipcero.demo.kubernetes.microservice; 2 | 3 | import java.util.ArrayList; 4 | import java.util.List; 5 | 6 | public class OrderEntity { 7 | 8 | public OrderEntity() { 9 | } 10 | 11 | public OrderEntity(int number) { 12 | this.number= number; 13 | this.orderLines = new ArrayList(); 14 | } 15 | 16 | private int number; 17 | 18 | public int getNumber() { 19 | return number; 20 | } 21 | 22 | public void setNumber(int number) { 23 | this.number = number; 24 | } 25 | 26 | public List getOrderLines() { 27 | return orderLines; 28 | } 29 | 30 | public void setOrderLines(List orderLines) { 31 | this.orderLines = orderLines; 32 | } 33 | 34 | private List orderLines; 35 | } 36 | -------------------------------------------------------------------------------- /KubernetesMicroservices/OrderService/src/main/java/com/elipcero/demo/kubernetes/microservice/OrderService.java: -------------------------------------------------------------------------------- 1 | package com.elipcero.demo.kubernetes.microservice; 2 | 3 | import org.springframework.beans.factory.annotation.Autowired; 4 | import org.springframework.web.bind.annotation.PathVariable; 5 | import org.springframework.web.bind.annotation.RequestMapping; 6 | import org.springframework.web.bind.annotation.RestController; 7 | 8 | import java.util.Date; 9 | 10 | import org.slf4j.Logger; 11 | import org.slf4j.LoggerFactory; 12 | 13 | @RestController 14 | public class OrderService { 15 | 16 | private static final Logger LOG = LoggerFactory.getLogger(OrderService.class); 17 | 18 | @Autowired 19 | private OrderComposition orderComposition; 20 | 21 | @RequestMapping("/") 22 | public String getOrder() { 23 | return "{\"timestamp\":\"" + new Date() + "\",\"content\":\"Hello from getOrder()\"}"; 24 | } 25 | 26 | @RequestMapping("/orders/{number}") 27 | public OrderEntity getOrder(@PathVariable int number) { 28 | 29 | LOG.info("Get order: {}", number); 30 | 31 | return this.orderComposition.getOrder(number); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /KubernetesMicroservices/OrderService/src/main/java/com/elipcero/demo/kubernetes/microservice/OrderServiceApplication.java: -------------------------------------------------------------------------------- 1 | package com.elipcero.demo.kubernetes.microservice; 2 | 3 | import org.slf4j.Logger; 4 | import org.slf4j.LoggerFactory; 5 | import org.springframework.amqp.rabbit.connection.ConnectionFactory; 6 | import org.springframework.beans.factory.annotation.Autowired; 7 | import org.springframework.boot.CommandLineRunner; 8 | import org.springframework.boot.SpringApplication; 9 | import org.springframework.boot.autoconfigure.SpringBootApplication; 10 | import org.springframework.cloud.client.circuitbreaker.EnableCircuitBreaker; 11 | import org.springframework.cloud.client.discovery.EnableDiscoveryClient; 12 | 13 | @SpringBootApplication 14 | @EnableDiscoveryClient 15 | @EnableCircuitBreaker 16 | public class OrderServiceApplication implements CommandLineRunner { 17 | 18 | private static final Logger LOG = LoggerFactory.getLogger(OrderServiceApplication.class); 19 | 20 | @Autowired 21 | private ConnectionFactory connectionFactory; 22 | 23 | public void run(String... args) { 24 | LOG.info("Create RabbitMqCF for host: {}", connectionFactory.getHost()); 25 | } 26 | 27 | public static void main(String[] args) { 28 | SpringApplication.run(OrderServiceApplication.class, args); 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /KubernetesMicroservices/OrderService/src/main/resources/application.yml: -------------------------------------------------------------------------------- 1 | spring: 2 | application: 3 | name: orders 4 | rabbitmq: 5 | host: ${RABBITMQ_SERVICE_HOST} 6 | username: guest 7 | password: guest 8 | 9 | server: 10 | port: 8080 11 | 12 | 13 | hystrix: 14 | threadpool: 15 | default: 16 | # Maximum number of concurrent requests when using thread pools (Default: 10) 17 | coreSize: 100 18 | # Maximum LinkedBlockingQueue size - -1 for using SynchronousQueue (Default: -1) 19 | maxQueueSize: -1 20 | # Queue size rejection threshold (Default: 5) 21 | queueSizeRejectionThreshold: 5 22 | command: 23 | default: 24 | circuitBreaker: 25 | sleepWindowInMilliseconds: 30000 26 | requestVolumeThreshold: 2 27 | execution: 28 | isolation: 29 | # strategy: SEMAPHORE, no thread pool but timeout handling stops to work 30 | strategy: THREAD 31 | thread: 32 | timeoutInMilliseconds: 4000 33 | 34 | eureka: 35 | instance: 36 | preferIpAddress: true 37 | leaseRenewalIntervalInSeconds: 10 38 | metadataMap: 39 | instanceId: ${vcap.application.instance_id:${spring.application.name}:${spring.application.instance_id:${random.value}}} 40 | client: 41 | registryFetchIntervalSeconds: 5 42 | serviceUrl: 43 | defaultZone: http://${DISCOVERY_SERVICE_HOST}:${DISCOVERY_SERVICE_PORT}/eureka/ 44 | 45 | logging: 46 | level: 47 | com.elipcero: INFO -------------------------------------------------------------------------------- /KubernetesMicroservices/TurbineService/bin/application.yml: -------------------------------------------------------------------------------- 1 | server: 2 | port: 8989 3 | 4 | management: 5 | port: 8990 6 | 7 | spring: 8 | application: 9 | name: turbine 10 | rabbitmq: 11 | host: ${RABBITMQ_SERVICE_HOST} 12 | username: guest 13 | password: guest 14 | 15 | 16 | info: 17 | component: Turbine 18 | 19 | endpoints: 20 | restart: 21 | enabled: true 22 | shutdown: 23 | enabled: true 24 | 25 | eureka: 26 | instance: 27 | preferIpAddress: true 28 | client: 29 | serviceUrl: 30 | defaultZone: http://${DISCOVERY_SERVICE_HOST}:${DISCOVERY_SERVICE_PORT}/eureka/ -------------------------------------------------------------------------------- /KubernetesMicroservices/TurbineService/build.gradle: -------------------------------------------------------------------------------- 1 | jar { 2 | baseName = 'TurbineService' 3 | version = '0.0.1-SNAPSHOT' 4 | } 5 | 6 | group = 'elipcero' 7 | applicationName = 'turbineservice' 8 | 9 | mainClassName = 'com.elipcero.demo.kubernetes.microservice.TurbineServiceApplication' 10 | 11 | dependencies { 12 | compile("org.springframework.boot:spring-boot-starter-undertow") 13 | compile("org.springframework.boot:spring-boot-starter-actuator") 14 | compile('org.springframework.cloud:spring-cloud-starter-turbine-amqp') 15 | compile('com.netflix.turbine:turbine-core:2.0.0-DP.2') 16 | } -------------------------------------------------------------------------------- /KubernetesMicroservices/TurbineService/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davsuapas/KubernetesMicroservices/bb25f7d862601915c6c74f437fbf4055fe3e6c7a/KubernetesMicroservices/TurbineService/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /KubernetesMicroservices/TurbineService/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | zipStoreBase=GRADLE_USER_HOME 4 | zipStorePath=wrapper/dists 5 | distributionUrl=https\://services.gradle.org/distributions/gradle-2.9-bin.zip 6 | -------------------------------------------------------------------------------- /KubernetesMicroservices/TurbineService/gradlew: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | ############################################################################## 4 | ## 5 | ## Gradle start up script for UN*X 6 | ## 7 | ############################################################################## 8 | 9 | # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. 10 | DEFAULT_JVM_OPTS="" 11 | 12 | APP_NAME="Gradle" 13 | APP_BASE_NAME=`basename "$0"` 14 | 15 | # Use the maximum available, or set MAX_FD != -1 to use that value. 16 | MAX_FD="maximum" 17 | 18 | warn ( ) { 19 | echo "$*" 20 | } 21 | 22 | die ( ) { 23 | echo 24 | echo "$*" 25 | echo 26 | exit 1 27 | } 28 | 29 | # OS specific support (must be 'true' or 'false'). 30 | cygwin=false 31 | msys=false 32 | darwin=false 33 | case "`uname`" in 34 | CYGWIN* ) 35 | cygwin=true 36 | ;; 37 | Darwin* ) 38 | darwin=true 39 | ;; 40 | MINGW* ) 41 | msys=true 42 | ;; 43 | esac 44 | 45 | # Attempt to set APP_HOME 46 | # Resolve links: $0 may be a link 47 | PRG="$0" 48 | # Need this for relative symlinks. 49 | while [ -h "$PRG" ] ; do 50 | ls=`ls -ld "$PRG"` 51 | link=`expr "$ls" : '.*-> \(.*\)$'` 52 | if expr "$link" : '/.*' > /dev/null; then 53 | PRG="$link" 54 | else 55 | PRG=`dirname "$PRG"`"/$link" 56 | fi 57 | done 58 | SAVED="`pwd`" 59 | cd "`dirname \"$PRG\"`/" >&- 60 | APP_HOME="`pwd -P`" 61 | cd "$SAVED" >&- 62 | 63 | CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar 64 | 65 | # Determine the Java command to use to start the JVM. 66 | if [ -n "$JAVA_HOME" ] ; then 67 | if [ -x "$JAVA_HOME/jre/sh/java" ] ; then 68 | # IBM's JDK on AIX uses strange locations for the executables 69 | JAVACMD="$JAVA_HOME/jre/sh/java" 70 | else 71 | JAVACMD="$JAVA_HOME/bin/java" 72 | fi 73 | if [ ! -x "$JAVACMD" ] ; then 74 | die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME 75 | 76 | Please set the JAVA_HOME variable in your environment to match the 77 | location of your Java installation." 78 | fi 79 | else 80 | JAVACMD="java" 81 | which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 82 | 83 | Please set the JAVA_HOME variable in your environment to match the 84 | location of your Java installation." 85 | fi 86 | 87 | # Increase the maximum file descriptors if we can. 88 | if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then 89 | MAX_FD_LIMIT=`ulimit -H -n` 90 | if [ $? -eq 0 ] ; then 91 | if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then 92 | MAX_FD="$MAX_FD_LIMIT" 93 | fi 94 | ulimit -n $MAX_FD 95 | if [ $? -ne 0 ] ; then 96 | warn "Could not set maximum file descriptor limit: $MAX_FD" 97 | fi 98 | else 99 | warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" 100 | fi 101 | fi 102 | 103 | # For Darwin, add options to specify how the application appears in the dock 104 | if $darwin; then 105 | GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" 106 | fi 107 | 108 | # For Cygwin, switch paths to Windows format before running java 109 | if $cygwin ; then 110 | APP_HOME=`cygpath --path --mixed "$APP_HOME"` 111 | CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` 112 | JAVACMD=`cygpath --unix "$JAVACMD"` 113 | 114 | # We build the pattern for arguments to be converted via cygpath 115 | ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` 116 | SEP="" 117 | for dir in $ROOTDIRSRAW ; do 118 | ROOTDIRS="$ROOTDIRS$SEP$dir" 119 | SEP="|" 120 | done 121 | OURCYGPATTERN="(^($ROOTDIRS))" 122 | # Add a user-defined pattern to the cygpath arguments 123 | if [ "$GRADLE_CYGPATTERN" != "" ] ; then 124 | OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" 125 | fi 126 | # Now convert the arguments - kludge to limit ourselves to /bin/sh 127 | i=0 128 | for arg in "$@" ; do 129 | CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` 130 | CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option 131 | 132 | if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition 133 | eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` 134 | else 135 | eval `echo args$i`="\"$arg\"" 136 | fi 137 | i=$((i+1)) 138 | done 139 | case $i in 140 | (0) set -- ;; 141 | (1) set -- "$args0" ;; 142 | (2) set -- "$args0" "$args1" ;; 143 | (3) set -- "$args0" "$args1" "$args2" ;; 144 | (4) set -- "$args0" "$args1" "$args2" "$args3" ;; 145 | (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; 146 | (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; 147 | (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; 148 | (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; 149 | (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; 150 | esac 151 | fi 152 | 153 | # Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules 154 | function splitJvmOpts() { 155 | JVM_OPTS=("$@") 156 | } 157 | eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS 158 | JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME" 159 | 160 | exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@" 161 | -------------------------------------------------------------------------------- /KubernetesMicroservices/TurbineService/gradlew.bat: -------------------------------------------------------------------------------- 1 | @if "%DEBUG%" == "" @echo off 2 | @rem ########################################################################## 3 | @rem 4 | @rem Gradle startup script for Windows 5 | @rem 6 | @rem ########################################################################## 7 | 8 | @rem Set local scope for the variables with windows NT shell 9 | if "%OS%"=="Windows_NT" setlocal 10 | 11 | @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. 12 | set DEFAULT_JVM_OPTS= 13 | 14 | set DIRNAME=%~dp0 15 | if "%DIRNAME%" == "" set DIRNAME=. 16 | set APP_BASE_NAME=%~n0 17 | set APP_HOME=%DIRNAME% 18 | 19 | @rem Find java.exe 20 | if defined JAVA_HOME goto findJavaFromJavaHome 21 | 22 | set JAVA_EXE=java.exe 23 | %JAVA_EXE% -version >NUL 2>&1 24 | if "%ERRORLEVEL%" == "0" goto init 25 | 26 | echo. 27 | echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 28 | echo. 29 | echo Please set the JAVA_HOME variable in your environment to match the 30 | echo location of your Java installation. 31 | 32 | goto fail 33 | 34 | :findJavaFromJavaHome 35 | set JAVA_HOME=%JAVA_HOME:"=% 36 | set JAVA_EXE=%JAVA_HOME%/bin/java.exe 37 | 38 | if exist "%JAVA_EXE%" goto init 39 | 40 | echo. 41 | echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 42 | echo. 43 | echo Please set the JAVA_HOME variable in your environment to match the 44 | echo location of your Java installation. 45 | 46 | goto fail 47 | 48 | :init 49 | @rem Get command-line arguments, handling Windowz variants 50 | 51 | if not "%OS%" == "Windows_NT" goto win9xME_args 52 | if "%@eval[2+2]" == "4" goto 4NT_args 53 | 54 | :win9xME_args 55 | @rem Slurp the command line arguments. 56 | set CMD_LINE_ARGS= 57 | set _SKIP=2 58 | 59 | :win9xME_args_slurp 60 | if "x%~1" == "x" goto execute 61 | 62 | set CMD_LINE_ARGS=%* 63 | goto execute 64 | 65 | :4NT_args 66 | @rem Get arguments from the 4NT Shell from JP Software 67 | set CMD_LINE_ARGS=%$ 68 | 69 | :execute 70 | @rem Setup the command line 71 | 72 | set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar 73 | 74 | @rem Execute Gradle 75 | "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% 76 | 77 | :end 78 | @rem End local scope for the variables with windows NT shell 79 | if "%ERRORLEVEL%"=="0" goto mainEnd 80 | 81 | :fail 82 | rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of 83 | rem the _cmd.exe /c_ return code! 84 | if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 85 | exit /b 1 86 | 87 | :mainEnd 88 | if "%OS%"=="Windows_NT" endlocal 89 | 90 | :omega 91 | -------------------------------------------------------------------------------- /KubernetesMicroservices/TurbineService/src/main/java/com/elipcero/demo/kubernetes/microservice/TurbineServiceApplication.java: -------------------------------------------------------------------------------- 1 | package com.elipcero.demo.kubernetes.microservice; 2 | 3 | import org.slf4j.Logger; 4 | import org.slf4j.LoggerFactory; 5 | import org.springframework.amqp.rabbit.connection.ConnectionFactory; 6 | import org.springframework.beans.factory.annotation.Autowired; 7 | import org.springframework.boot.CommandLineRunner; 8 | import org.springframework.boot.SpringApplication; 9 | import org.springframework.boot.autoconfigure.SpringBootApplication; 10 | import org.springframework.cloud.client.discovery.EnableDiscoveryClient; 11 | import org.springframework.cloud.netflix.turbine.amqp.EnableTurbineAmqp; 12 | 13 | @SpringBootApplication 14 | @EnableTurbineAmqp 15 | @EnableDiscoveryClient 16 | public class TurbineServiceApplication implements CommandLineRunner { 17 | 18 | private static final Logger LOG = LoggerFactory.getLogger(TurbineServiceApplication.class); 19 | 20 | @Autowired 21 | private ConnectionFactory connectionFactory; 22 | 23 | public void run(String... args) { 24 | LOG.info("Create RabbitMqCF for host: {}", connectionFactory.getHost()); 25 | } 26 | 27 | public static void main(String[] args) { 28 | SpringApplication.run(TurbineServiceApplication.class, args); 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /KubernetesMicroservices/TurbineService/src/main/resources/application.yml: -------------------------------------------------------------------------------- 1 | server: 2 | port: 8989 3 | 4 | management: 5 | port: 8990 6 | 7 | spring: 8 | application: 9 | name: turbine 10 | rabbitmq: 11 | host: ${RABBITMQ_SERVICE_HOST} 12 | username: guest 13 | password: guest 14 | 15 | 16 | info: 17 | component: Turbine 18 | 19 | endpoints: 20 | restart: 21 | enabled: true 22 | shutdown: 23 | enabled: true 24 | 25 | eureka: 26 | instance: 27 | preferIpAddress: true 28 | client: 29 | serviceUrl: 30 | defaultZone: http://${DISCOVERY_SERVICE_HOST}:${DISCOVERY_SERVICE_PORT}/eureka/ -------------------------------------------------------------------------------- /KubernetesMicroservices/build.gradle: -------------------------------------------------------------------------------- 1 | buildscript { 2 | ext { 3 | springBootVersion = '1.2.6.RELEASE' 4 | } 5 | repositories { 6 | mavenCentral() 7 | } 8 | dependencies { 9 | classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}") 10 | classpath('io.spring.gradle:dependency-management-plugin:0.5.2.RELEASE') 11 | classpath 'se.transmode.gradle:gradle-docker:1.2' 12 | } 13 | } 14 | 15 | subprojects { 16 | 17 | apply plugin: 'java' 18 | apply plugin: 'eclipse' 19 | apply plugin: 'idea' 20 | apply plugin: 'spring-boot' 21 | apply plugin: 'io.spring.dependency-management' 22 | apply plugin: 'docker' 23 | 24 | sourceCompatibility = 1.8 25 | targetCompatibility = 1.8 26 | 27 | repositories { 28 | mavenCentral() 29 | } 30 | 31 | docker { 32 | maintainer = 'David Suarez ' 33 | baseImage = 'java:8' 34 | } 35 | 36 | dependencies { 37 | compile('org.springframework.boot:spring-boot-starter-web') 38 | testCompile('org.springframework.boot:spring-boot-starter-test') 39 | } 40 | 41 | dependencyManagement { 42 | imports { 43 | mavenBom "org.springframework.cloud:spring-cloud-starter-parent:Angel.SR3" 44 | } 45 | } 46 | 47 | eclipse { 48 | classpath { 49 | containers.remove('org.eclipse.jdt.launching.JRE_CONTAINER') 50 | containers 'org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8' 51 | } 52 | } 53 | 54 | task wrapper(type: Wrapper) { 55 | gradleVersion = '2.7' 56 | } 57 | } -------------------------------------------------------------------------------- /KubernetesMicroservices/kubernete-config/createpods.sh: -------------------------------------------------------------------------------- 1 | kubectl create -f rabbitmq.yaml 2 | kubectl create -f rabbitmqservice.yaml 3 | kubectl create -f discover.yaml 4 | kubectl create -f discoverservice.yaml 5 | kubectl create -f edge.yaml 6 | kubectl create -f turbine.yaml 7 | kubectl create -f monitor.yaml 8 | kubectl create -f orderline.yaml 9 | kubectl create -f order.yaml 10 | -------------------------------------------------------------------------------- /KubernetesMicroservices/kubernete-config/deletepods.sh: -------------------------------------------------------------------------------- 1 | kubectl delete, services pods --all 2 | -------------------------------------------------------------------------------- /KubernetesMicroservices/kubernete-config/deletepods.sh~: -------------------------------------------------------------------------------- 1 | kubectl delete services,pods --all 2 | -------------------------------------------------------------------------------- /KubernetesMicroservices/kubernete-config/discover.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Pod 3 | metadata: 4 | name: discovery 5 | labels: 6 | name: discovery 7 | spec: 8 | containers: 9 | - name: discovery 10 | image: "elipcero/discoveryservice" 11 | ports: 12 | - containerPort: 8761 13 | -------------------------------------------------------------------------------- /KubernetesMicroservices/kubernete-config/discoverservice.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: discovery 5 | spec: 6 | selector: 7 | name: discovery 8 | ports: 9 | - port: 8761 10 | -------------------------------------------------------------------------------- /KubernetesMicroservices/kubernete-config/edge.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Pod 3 | metadata: 4 | name: edge 5 | spec: 6 | containers: 7 | - name: edge 8 | image: "elipcero/edgeservice" 9 | ports: 10 | - containerPort: 8765 11 | -------------------------------------------------------------------------------- /KubernetesMicroservices/kubernete-config/monitor.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Pod 3 | metadata: 4 | name: monitor 5 | spec: 6 | containers: 7 | - name: monitor 8 | image: "elipcero/monitorservice" 9 | ports: 10 | - containerPort: 7979 11 | -------------------------------------------------------------------------------- /KubernetesMicroservices/kubernete-config/order.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: ReplicationController 3 | metadata: 4 | name: order 5 | labels: 6 | name: order 7 | spec: 8 | replicas: 1 9 | selector: 10 | name: order 11 | template: 12 | metadata: 13 | labels: 14 | name: order 15 | spec: 16 | containers: 17 | - name: order 18 | image: "elipcero/orderservice" 19 | ports: 20 | - containerPort: 8080 21 | -------------------------------------------------------------------------------- /KubernetesMicroservices/kubernete-config/orderline.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: ReplicationController 3 | metadata: 4 | name: orderline 5 | labels: 6 | name: orderline 7 | spec: 8 | replicas: 1 9 | selector: 10 | name: orderline 11 | template: 12 | metadata: 13 | labels: 14 | name: orderline 15 | spec: 16 | containers: 17 | - name: orderline 18 | image: "elipcero/orderlineservice" 19 | ports: 20 | - containerPort: 8080 21 | -------------------------------------------------------------------------------- /KubernetesMicroservices/kubernete-config/rabbitmq.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Pod 3 | metadata: 4 | name: rabbitmq 5 | labels: 6 | name: rabbitmq 7 | spec: 8 | containers: 9 | - name: rabbitmq 10 | image: "rabbitmq" 11 | ports: 12 | - containerPort: 5672 13 | -------------------------------------------------------------------------------- /KubernetesMicroservices/kubernete-config/rabbitmqservice.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: rabbitmq 5 | spec: 6 | selector: 7 | name: rabbitmq 8 | ports: 9 | - port: 5672 10 | -------------------------------------------------------------------------------- /KubernetesMicroservices/kubernete-config/turbine.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Pod 3 | metadata: 4 | name: turbine 5 | spec: 6 | containers: 7 | - name: turbine 8 | image: "elipcero/turbineservice" 9 | ports: 10 | - containerPort: 8989 -------------------------------------------------------------------------------- /KubernetesMicroservices/settings.gradle: -------------------------------------------------------------------------------- 1 | include "DiscoveryService" 2 | include "EdgeService" 3 | include "TurbineService" 4 | include "MonitorService" 5 | include "OrderService" 6 | include "OrderLineService" 7 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # KubernetesMicroservices 2 | Spring Cloud Netflix + Kubernetes + Docker 3 | 4 | Documentation: http://davidsuarez-architecture-development.blogspot.com.es/2016/04/spring-cloud-netflix-kubernetes-docker.html 5 | 6 | [The power of Spring Cloud Pipeline and Spring Cloud Contract to deploy microservices on kubernetes](https://davidsuarez-architecture-development.blogspot.com/2019/01/the-power-of-spring-cloud-pipeline-and.html) 7 | --------------------------------------------------------------------------------