93 Commits

Author SHA1 Message Date
Nana Janashia
c03467bfdd print out the kube config file 2020-12-20 18:04:08 +01:00
Jenkins
ec25c85f9d ci: version bump 2020-12-20 16:52:18 +00:00
Nana Janashia
8bde0dae7d fix pushing to remote repo 2020-12-20 17:51:06 +01:00
Nana Janashia
8a5eca28bd fix setting kubeconfig 2020-12-20 17:43:37 +01:00
Nana Janashia
808024df04 fix setting env vars from tf output - trim() 2020-12-20 17:40:31 +01:00
Nana Janashia
c754ff2d60 fix ecr authentication config 2020-12-20 17:25:56 +01:00
Nana Janashia
92835a5b54 fix config 2020-12-20 16:29:01 +01:00
Nana Janashia
386fde3774 fix config 2020-12-20 16:04:49 +01:00
Nana Janashia
9f96f5fac1 add config for ecr repo and remote backend 2020-12-20 14:42:33 +01:00
Nana Janashia
165bd326cb add terraform config for kubectl config file 2020-12-20 14:31:29 +01:00
Nana Janashia
6566e1b821 add terraform config files 2020-12-20 13:28:58 +01:00
Nana Janashia
70fb6f1f11 add ecr repo stage 2020-12-05 16:53:42 +01:00
Jenkins
8c32984bfa ci: version bump 2020-12-05 14:39:01 +00:00
Nana Janashia
86b41c173d set git configs 2020-12-05 15:37:15 +01:00
Jenkins
ec07045f5b ci: version bump 2020-12-05 14:30:58 +00:00
Nana Janashia
a9ad429d59 set global config 2020-12-05 15:25:21 +01:00
Nana Janashia
69c20e807e set 1 replica 2020-12-05 15:18:49 +01:00
Nana Janashia
1c35a7f6c3 fix cred name 2020-12-05 15:08:13 +01:00
Nana Janashia
c22ccead98 add kubectl deploy stage 2020-12-05 10:12:03 +01:00
jenkins
d2bb88b269 ci: version bump 2020-11-29 08:01:53 +00:00
Nana Janashia
14af7f6928 removed target folder from repo and ignored 2020-11-29 09:00:54 +01:00
jenkins
0f16440c51 ci: version bump 2020-11-29 07:50:50 +00:00
jenkins
9e0883d626 ci: version bump 2020-11-29 07:50:06 +00:00
Nana Janashia
ad517593dd cleanup git push from Jenkinn 2020-11-29 08:49:01 +01:00
jenkins
96a0f80bec ci: version bump 2020-11-29 07:31:41 +00:00
Nana Janashia
0972181e49 add git push from Jenkins 2020-11-29 08:30:24 +01:00
Nana Janashia
a24c7c6f15 revert jenkins git commit 2020-11-28 19:18:40 +01:00
Nana Janashia
0907a4a9f6 fix next incr version 2020-11-28 15:03:50 +01:00
Nana Janashia
7e3d309037 fix next incr version 2020-11-28 15:02:21 +01:00
Nana Janashia
f83a7744b9 fix env var 2020-11-28 14:57:13 +01:00
Nana Janashia
d8a20f2ac9 Configure version increment in build 2020-11-28 14:51:17 +01:00
Nana Janashia
ab509b3b3c add patch version to maven version 2020-11-28 11:19:23 +01:00
Nana Janashia
6123875bc8 add changes 2020-11-22 15:03:10 +01:00
Nana Janashia
1f54931484 add changes 2020-11-22 14:46:01 +01:00
Nana Janashia
18ecdca204 fix 2020-11-22 14:35:13 +01:00
Nana Janashia
e1dbd4d042 fix 2020-11-22 14:32:48 +01:00
Nana Janashia
36b85d75cc pass image name to shell script 2020-11-22 14:30:13 +01:00
Nana Janashia
c120554c74 tag replacement in docker-compose 2020-11-22 14:19:34 +01:00
Nana Janashia
3e1d99e8d0 rm env set 2020-11-22 14:10:05 +01:00
Nana Janashia
e71aab1655 add shell script for executing 2020-11-22 14:04:09 +01:00
Nana Janashia
762a6a9ffb add shell script for executing 2020-11-22 13:59:25 +01:00
Nana Janashia
e14b7b7012 fix env var setup 2020-11-22 13:43:08 +01:00
Nana Janashia
106a7e447e fix ports 2020-11-22 13:28:47 +01:00
Nana Janashia
b28d6ff9d9 add docker-compose config 2020-11-22 13:27:04 +01:00
Nana Janashia
4e33b70b24 Delete test.sh 2020-11-22 11:48:37 +00:00
Nana Janashia
d41bcec12b Update Jenkinsfile 2020-11-22 11:46:58 +00:00
Nana Janashia
9dadc24128 Update test.sh 2020-11-22 11:46:37 +00:00
Nana Janashia
12f88937ab Update Jenkinsfile 2020-11-22 11:38:52 +00:00
Nana Janashia
8b1aa75d8e Update test.sh 2020-11-22 11:38:44 +00:00
Nana Janashia
339109ec86 Update Jenkinsfile 2020-11-22 11:14:16 +00:00
Nana Janashia
63f6c3d5bb Update Jenkinsfile 2020-11-22 11:10:37 +00:00
Nana Janashia
ba9f0882ca Update freestyle-build.sh 2020-11-22 11:00:46 +00:00
Nana Janashia
0b043899f9 Update Jenkinsfile 2020-11-22 11:00:27 +00:00
Nana Janashia
f31394abe3 Update Jenkinsfile 2020-11-22 11:00:15 +00:00
Nana Janashia
e2633b0888 Update freestyle-build.sh 2020-11-22 10:56:56 +00:00
Nana Janashia
a1b5946b6d fixed building jar file 2020-11-22 11:32:38 +01:00
Nana Janashia
45817d153a fixed port 2020-11-22 10:13:21 +01:00
Nana Janashia
0576e0033b fixed env var usage 2020-11-22 10:08:59 +01:00
Nana Janashia
44cf4ac38c adjustments 2020-11-22 09:58:37 +01:00
Nana Janashia
04f35ad918 Update Jenkinsfile 2020-11-08 15:26:35 +00:00
Nana Janashia
686259038b add shebang 2020-11-08 15:39:58 +01:00
Nana Janashia
1978bd1fc9 Update Jenkinsfile 2020-11-08 12:57:32 +00:00
Nana Janashia
b262ce98c8 Update Jenkinsfile 2020-11-08 12:56:40 +00:00
Nana Janashia
24fdad6aaa Update Jenkinsfile 2020-11-08 09:46:22 +00:00
Nana Janashia
e41eb6433d Update Jenkinsfile 2020-11-08 09:45:28 +00:00
Nana Janashia
1ce128d916 Update Jenkinsfile 2020-11-08 08:10:52 +00:00
Nana Janashia
2c6295012f Update Jenkinsfile 2020-11-08 08:10:25 +00:00
Nana Janashia
48b35c0308 Update Jenkinsfile 2020-11-08 08:09:54 +00:00
Nana Janashia
80ed88f4be Update Jenkinsfile 2020-11-08 08:09:11 +00:00
Nana Janashia
f8698fee42 Update Jenkinsfile 2020-11-07 17:43:27 +00:00
Nana Janashia
eea2109d66 Update Jenkinsfile 2020-11-07 17:43:18 +00:00
Nana Janashia
a71dd16df8 Update Jenkinsfile 2020-11-07 17:18:06 +00:00
Nana Janashia
8e3382a0ef Update Jenkinsfile 2020-11-07 17:07:02 +00:00
Nana Janashia
1d4aac4b5a Update Jenkinsfile 2020-11-07 17:04:52 +00:00
Nana Janashia
f65d9eb00e Update Jenkinsfile 2020-11-07 16:59:22 +00:00
Nana Janashia
a026af6e2f Update Jenkinsfile 2020-11-07 16:56:56 +00:00
Nana Janashia
02aef32659 Update Jenkinsfile 2020-11-07 16:53:58 +00:00
Nana Janashia
e68743b02d Update Jenkinsfile 2020-11-07 16:52:56 +00:00
Nana Janashia
ce28529588 Update Jenkinsfile 2020-11-07 16:51:48 +00:00
Nana Janashia
a0deb05e4e Update Jenkinsfile 2020-11-07 16:50:48 +00:00
Nana Janashia
126336f79e Update Jenkinsfile 2020-11-07 16:44:13 +00:00
Nana Janashia
19eeb818ca Update Jenkinsfile 2020-11-07 16:41:18 +00:00
Nana Janashia
ff51c37f0a Update Jenkinsfile 2020-11-07 16:40:39 +00:00
Nana Janashia
948fbb8f12 Update Jenkinsfile 2020-11-07 16:39:30 +00:00
Nana Janashia
679d67b80a Update Jenkinsfile 2020-11-07 16:37:49 +00:00
Nana Janashia
661a008faa Update Jenkinsfile 2020-11-07 16:36:06 +00:00
Nana Janashia
9cc6d90fe8 Update Jenkinsfile 2020-11-07 16:32:06 +00:00
Nana Janashia
61821c6ef7 Update Jenkinsfile 2020-11-06 12:47:14 +00:00
Nana Janashia
1fa470771d Delete script.groovy 2020-11-06 12:27:54 +00:00
Nana Janashia
9c56ddc553 Update Jenkinsfile 2020-11-06 12:26:25 +00:00
Nana Janashia
056eca7cf6 Update script.groovy 2020-11-06 11:26:50 +00:00
Nana Janashia
e637047b84 Update Jenkinsfile 2020-11-06 11:26:28 +00:00
Nana Janashia
845783dbc6 Update Jenkinsfile 2020-11-06 11:17:00 +00:00
25 changed files with 468 additions and 94 deletions

4
.gitignore vendored
View File

@@ -1 +1,5 @@
.idea/*
target
terraform/.terraform/*
terraform/terraform.tfstate*
terraform/kubeconfig*

View File

@@ -2,7 +2,7 @@ FROM openjdk:8-jre-alpine
EXPOSE 8080
COPY ./target/java-maven-app-1.0-SNAPSHOT.jar /usr/app/
COPY ./target/java-maven-app-*.jar /usr/app/
WORKDIR /usr/app
ENTRYPOINT ["java", "-jar", "java-maven-app-1.0-SNAPSHOT.jar"]
CMD java -jar java-maven-app-*.jar

95
Jenkinsfile vendored
View File

@@ -1,45 +1,102 @@
def gv
#!/usr/bin/env groovy
pipeline {
agent any
parameters {
choice(name: 'VERSION', choices: ['1.1.0', '1.2.0', '1.3.0'], description: '')
booleanParam(name: 'executeTests', defaultValue: true, description: '')
tools {
maven 'Maven'
}
environment {
AWS_ACCESS_KEY_ID = credentials('jenkins_aws_access_key_id')
AWS_SECRET_ACCESS_KEY = credentials('jenkins_aws_secret_access_key')
}
stages {
stage("init") {
stage('provision cluster') {
environment {
TF_VAR_env_prefix = "test"
TF_VAR_k8s_version = "1.18"
}
steps {
script {
gv = load "script.groovy"
dir('terraform') {
echo "creating ECR repository and EKS cluster"
sh "terraform init"
sh "terraform apply --auto-approve"
env.DOCKER_REPO_URL = sh(
script: "terraform output repo_url",
returnStdout: true
).trim()
env.K8S_CLUSTER_URL = sh(
script: "terraform output cluster_url",
returnStdout: true
).trim()
env.REPO_USER = sh(
script: "terraform output ecr_user_name",
returnStdout: true
).trim()
env.REPO_PWD = sh(
script: "terraform output ecr_user_password",
returnStdout: true
).trim()
}
env.KUBECONFIG="terraform/kubeconfig.yaml"
sh "kubectl get node"
}
}
}
stage("build") {
stage('increment version') {
steps {
script {
gv.buildApp()
echo 'incrementing app version...'
sh 'mvn build-helper:parse-version versions:set \
-DnewVersion=\\\${parsedVersion.majorVersion}.\\\${parsedVersion.minorVersion}.\\\${parsedVersion.nextIncrementalVersion} \
versions:commit'
def matcher = readFile('pom.xml') =~ '<version>(.+)</version>'
def version = matcher[0][1]
env.IMAGE_NAME = "$version-$BUILD_NUMBER"
}
}
}
stage("test") {
when {
expression {
params.executeTests
}
stage('build app') {
steps {
script {
echo "building the application..."
sh 'mvn clean package'
}
}
}
stage('build image') {
steps {
script {
gv.testApp()
echo "building the docker image..."
sh "docker build -t ${DOCKER_REPO_URL}:${IMAGE_NAME} ."
sh "echo ${REPO_PWD} | docker login -u ${REPO_USER} --password-stdin ${DOCKER_REPO_URL}"
sh "docker push ${DOCKER_REPO_URL}:${IMAGE_NAME}"
}
}
}
stage("deploy") {
stage('deploy') {
environment {
APP_NAME = 'java-maven-app'
}
steps {
script {
env.ENV = input message: "Select the environment to deploy to", ok: "Done", parameters: [choice(name: 'ONE', choices: ['dev', 'staging', 'prod'], description: '')]
gv.deployApp()
echo "Deploying to ${ENV}"
echo 'deploying docker image...'
sh 'envsubst < kubernetes/deployment.yaml | kubectl apply -f -'
sh 'envsubst < kubernetes/service.yaml | kubectl apply -f -'
}
}
}
stage('commit version update') {
steps {
script {
withCredentials([usernamePassword(credentialsId: 'gitlab-credentials', passwordVariable: 'PASS', usernameVariable: 'USER')]) {
sh 'git config user.email "jenkins@example.com"'
sh 'git config user.name "Jenkins"'
sh "git remote set-url origin https://${USER}:${PASS}@gitlab.com/nanuchi/java-maven-app.git"
sh 'git add .'
sh 'git commit -m "ci: version bump"'
sh "git push origin HEAD:${BRANCH_NAME}"
}
}
}
}

View File

@@ -1,2 +0,0 @@
# npm --version
# docker --version

View File

@@ -0,0 +1,24 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: $APP_NAME
labels:
app: $APP_NAME
spec:
replicas: 1
selector:
matchLabels:
app: $APP_NAME
template:
metadata:
labels:
app: $APP_NAME
spec:
imagePullSecrets:
- name: aws-registry-key
containers:
- name: $APP_NAME
image: $DOCKER_REPO:$IMAGE_NAME
imagePullPolicy: Always
ports:
- containerPort: 8080

11
kubernetes/service.yaml Normal file
View File

@@ -0,0 +1,11 @@
apiVersion: v1
kind: Service
metadata:
name: $APP_NAME
spec:
selector:
app: $APP_NAME
ports:
- protocol: TCP
port: 80
targetPort: 8080

19
pom.xml
View File

@@ -6,7 +6,24 @@
<groupId>com.example</groupId>
<artifactId>java-maven-app</artifactId>
<version>1.0-SNAPSHOT</version>
<version>1.1.7</version>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.3.5.RELEASE</version>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>

View File

@@ -1,14 +0,0 @@
def buildApp() {
echo 'building the application...'
}
def testApp() {
echo 'testing the application...'
}
def deployApp() {
echo 'deplying the application...'
echo "deploying version ${params.VERSION}"
}
return this

View File

@@ -1,5 +1,5 @@
#Generated by Maven
#Thu Oct 29 12:55:55 CET 2020
version=1.0-SNAPSHOT
#Sun Dec 20 16:52:05 UTC 2020
version=1.1.7
groupId=com.example
artifactId=java-maven-app

View File

@@ -1 +0,0 @@
com/example/Application.class

View File

@@ -1 +0,0 @@
/Users/nanajanashia/Demo-projects/Bootcamp/java-maven-app/src/main/java/com/example/Application.java

View File

@@ -1,4 +1,4 @@
-------------------------------------------------------------------------------
Test set: AppTest
-------------------------------------------------------------------------------
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.061 sec
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.07 sec

View File

@@ -1,69 +1,64 @@
<?xml version="1.0" encoding="UTF-8" ?>
<testsuite tests="1" failures="0" name="AppTest" time="0.003" errors="0" skipped="0">
<testsuite tests="1" failures="0" name="AppTest" time="0.005" errors="0" skipped="0">
<properties>
<property name="java.runtime.name" value="Java(TM) SE Runtime Environment"/>
<property name="sun.boot.library.path" value="/Library/Java/JavaVirtualMachines/jdk1.8.0_202.jdk/Contents/Home/jre/lib"/>
<property name="java.vm.version" value="25.202-b08"/>
<property name="user.country.format" value="AT"/>
<property name="gopherProxySet" value="false"/>
<property name="java.runtime.name" value="OpenJDK Runtime Environment"/>
<property name="sun.boot.library.path" value="/usr/local/openjdk-8/jre/lib/amd64"/>
<property name="java.vm.version" value="25.242-b08"/>
<property name="java.vm.vendor" value="Oracle Corporation"/>
<property name="maven.multiModuleProjectDirectory" value="/Users/nanajanashia/Demo-projects/Bootcamp/java-maven-app"/>
<property name="maven.multiModuleProjectDirectory" value="/var/jenkins_home/workspace/va-maven-app_feature_eks-tf-prep"/>
<property name="java.vendor.url" value="http://java.oracle.com/"/>
<property name="path.separator" value=":"/>
<property name="guice.disable.misplaced.annotation.check" value="true"/>
<property name="java.vm.name" value="Java HotSpot(TM) 64-Bit Server VM"/>
<property name="java.vm.name" value="OpenJDK 64-Bit Server VM"/>
<property name="file.encoding.pkg" value="sun.io"/>
<property name="user.country" value="GB"/>
<property name="sun.java.launcher" value="SUN_STANDARD"/>
<property name="sun.os.patch.level" value="unknown"/>
<property name="java.vm.specification.name" value="Java Virtual Machine Specification"/>
<property name="user.dir" value="/Users/nanajanashia/Demo-projects/Bootcamp/java-maven-app"/>
<property name="java.runtime.version" value="1.8.0_202-b08"/>
<property name="java.awt.graphicsenv" value="sun.awt.CGraphicsEnvironment"/>
<property name="java.endorsed.dirs" value="/Library/Java/JavaVirtualMachines/jdk1.8.0_202.jdk/Contents/Home/jre/lib/endorsed"/>
<property name="os.arch" value="x86_64"/>
<property name="java.io.tmpdir" value="/var/folders/y3/bvgmrxg950x0f1z4zt3pby3c0000gn/T/"/>
<property name="user.dir" value="/var/jenkins_home/workspace/va-maven-app_feature_eks-tf-prep"/>
<property name="java.runtime.version" value="1.8.0_242-b08"/>
<property name="java.awt.graphicsenv" value="sun.awt.X11GraphicsEnvironment"/>
<property name="java.endorsed.dirs" value="/usr/local/openjdk-8/jre/lib/endorsed"/>
<property name="os.arch" value="amd64"/>
<property name="java.io.tmpdir" value="/tmp"/>
<property name="line.separator" value="
"/>
<property name="java.vm.specification.vendor" value="Oracle Corporation"/>
<property name="os.name" value="Mac OS X"/>
<property name="classworlds.conf" value="/usr/local/Cellar/maven/3.6.0/libexec/bin/m2.conf"/>
<property name="os.name" value="Linux"/>
<property name="classworlds.conf" value="/var/jenkins_home/tools/hudson.tasks.Maven_MavenInstallation/Maven/bin/m2.conf"/>
<property name="sun.jnu.encoding" value="UTF-8"/>
<property name="java.library.path" value="/Users/nanajanashia/Library/Java/Extensions:/Library/Java/Extensions:/Network/Library/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java:."/>
<property name="maven.conf" value="/usr/local/Cellar/maven/3.6.0/libexec/conf"/>
<property name="java.library.path" value="/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib"/>
<property name="maven.conf" value="/var/jenkins_home/tools/hudson.tasks.Maven_MavenInstallation/Maven/conf"/>
<property name="java.specification.name" value="Java Platform API Specification"/>
<property name="java.class.version" value="52.0"/>
<property name="sun.management.compiler" value="HotSpot 64-Bit Tiered Compilers"/>
<property name="os.version" value="10.14.6"/>
<property name="library.jansi.path" value="/usr/local/Cellar/maven/3.6.0/libexec/lib/jansi-native"/>
<property name="http.nonProxyHosts" value="local|*.local|169.254/16|*.169.254/16"/>
<property name="user.home" value="/Users/nanajanashia"/>
<property name="user.timezone" value="Europe/Vienna"/>
<property name="java.awt.printerjob" value="sun.lwawt.macosx.CPrinterJob"/>
<property name="os.version" value="5.4.0-51-generic"/>
<property name="library.jansi.path" value="/var/jenkins_home/tools/hudson.tasks.Maven_MavenInstallation/Maven/lib/jansi-native"/>
<property name="user.home" value="/var/jenkins_home"/>
<property name="user.timezone" value="Etc/UTC"/>
<property name="java.awt.printerjob" value="sun.print.PSPrinterJob"/>
<property name="java.specification.version" value="1.8"/>
<property name="file.encoding" value="UTF-8"/>
<property name="user.name" value="nanajanashia"/>
<property name="java.class.path" value="/usr/local/Cellar/maven/3.6.0/libexec/boot/plexus-classworlds-2.5.2.jar"/>
<property name="user.name" value="jenkins"/>
<property name="java.class.path" value="/var/jenkins_home/tools/hudson.tasks.Maven_MavenInstallation/Maven/boot/plexus-classworlds-2.6.0.jar"/>
<property name="java.vm.specification.version" value="1.8"/>
<property name="sun.arch.data.model" value="64"/>
<property name="java.home" value="/Library/Java/JavaVirtualMachines/jdk1.8.0_202.jdk/Contents/Home/jre"/>
<property name="sun.java.command" value="org.codehaus.plexus.classworlds.launcher.Launcher test"/>
<property name="java.home" value="/usr/local/openjdk-8/jre"/>
<property name="sun.java.command" value="org.codehaus.plexus.classworlds.launcher.Launcher clean package"/>
<property name="java.specification.vendor" value="Oracle Corporation"/>
<property name="user.language" value="en"/>
<property name="awt.toolkit" value="sun.lwawt.macosx.LWCToolkit"/>
<property name="awt.toolkit" value="sun.awt.X11.XToolkit"/>
<property name="java.vm.info" value="mixed mode"/>
<property name="java.version" value="1.8.0_202"/>
<property name="java.ext.dirs" value="/Users/nanajanashia/Library/Java/Extensions:/Library/Java/JavaVirtualMachines/jdk1.8.0_202.jdk/Contents/Home/jre/lib/ext:/Library/Java/Extensions:/Network/Library/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java"/>
<property name="sun.boot.class.path" value="/Library/Java/JavaVirtualMachines/jdk1.8.0_202.jdk/Contents/Home/jre/lib/resources.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_202.jdk/Contents/Home/jre/lib/rt.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_202.jdk/Contents/Home/jre/lib/sunrsasign.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_202.jdk/Contents/Home/jre/lib/jsse.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_202.jdk/Contents/Home/jre/lib/jce.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_202.jdk/Contents/Home/jre/lib/charsets.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_202.jdk/Contents/Home/jre/lib/jfr.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_202.jdk/Contents/Home/jre/classes"/>
<property name="java.version" value="1.8.0_242"/>
<property name="java.ext.dirs" value="/usr/local/openjdk-8/jre/lib/ext:/usr/java/packages/lib/ext"/>
<property name="securerandom.source" value="file:/dev/./urandom"/>
<property name="sun.boot.class.path" value="/usr/local/openjdk-8/jre/lib/resources.jar:/usr/local/openjdk-8/jre/lib/rt.jar:/usr/local/openjdk-8/jre/lib/sunrsasign.jar:/usr/local/openjdk-8/jre/lib/jsse.jar:/usr/local/openjdk-8/jre/lib/jce.jar:/usr/local/openjdk-8/jre/lib/charsets.jar:/usr/local/openjdk-8/jre/lib/jfr.jar:/usr/local/openjdk-8/jre/classes"/>
<property name="java.vendor" value="Oracle Corporation"/>
<property name="maven.home" value="/usr/local/Cellar/maven/3.6.0/libexec"/>
<property name="maven.home" value="/var/jenkins_home/tools/hudson.tasks.Maven_MavenInstallation/Maven"/>
<property name="file.separator" value="/"/>
<property name="java.vendor.url.bug" value="http://bugreport.sun.com/bugreport/"/>
<property name="sun.cpu.endian" value="little"/>
<property name="sun.io.unicode.encoding" value="UnicodeBig"/>
<property name="socksNonProxyHosts" value="local|*.local|169.254/16|*.169.254/16"/>
<property name="ftp.nonProxyHosts" value="local|*.local|169.254/16|*.169.254/16"/>
<property name="sun.io.unicode.encoding" value="UnicodeLittle"/>
<property name="sun.cpu.isalist" value=""/>
</properties>
<testcase classname="AppTest" name="testApp" time="0.003"/>
<testcase classname="AppTest" name="testApp" time="0.005"/>
</testsuite>

Binary file not shown.

116
terraform/.terraform.lock.hcl generated Executable file
View File

@@ -0,0 +1,116 @@
# This file is maintained automatically by "terraform init".
# Manual edits may be lost in future updates.
provider "registry.terraform.io/hashicorp/aws" {
version = "3.22.0"
constraints = ">= 2.68.0, >= 3.3.0"
hashes = [
"h1:8aWXjFcmEi64P0TMHOCQXWws+/SmvJQrNvHlzdktKOM=",
"h1:f/Tz8zv1Zb78ZaiyJkQ0MGIViZwbYrLuQk3kojPM91c=",
"zh:4a9a66caf1964cdd3b61fb3ebb0da417195a5529cb8e496f266b0778335d11c8",
"zh:514f2f006ae68db715d86781673faf9483292deab235c7402ff306e0e92ea11a",
"zh:5277b61109fddb9011728f6650ef01a639a0590aeffe34ed7de7ba10d0c31803",
"zh:67784dc8c8375ab37103eea1258c3334ee92be6de033c2b37e3a2a65d0005142",
"zh:76d4c8be2ca4a3294fb51fb58de1fe03361d3bc403820270cc8e71a04c5fa806",
"zh:8f90b1cfdcf6e8fb1a9d0382ecaa5056a3a84c94e313fbf9e92c89de271cdede",
"zh:d0ac346519d0df124df89be2d803eb53f373434890f6ee3fb37112802f9eac59",
"zh:d6256feedada82cbfb3b1dd6dd9ad02048f23120ab50e6146a541cb11a108cc1",
"zh:db2fe0d2e77c02e9a74e1ed694aa352295a50283f9a1cf896e5be252af14e9f4",
"zh:eda61e889b579bd90046939a5b40cf5dc9031fb5a819fc3e4667a78bd432bdb2",
]
}
provider "registry.terraform.io/hashicorp/kubernetes" {
version = "1.13.3"
constraints = ">= 1.11.1"
hashes = [
"h1:iV0RArGM0KJ3n0ctwpNzcTkTAnx5G4wV3V3kYkRpJXU=",
"h1:whoGs/NeucMF8U/urPaeXdQUb+ppaO1Ae4r5aJRhfrU=",
"zh:11fd58df9c297a4f3cab82ce8eb2f54f1be27f78fa23be2273ecd545ab254b91",
"zh:5b9e6f352c5666d791e2658a1d18bf0990f3ab70c99c916c393a2ee7f385364c",
"zh:5c94f1350471a5c8e8ee6675874608c506a0bfd3164bdd91b802842723547e2c",
"zh:5d9c5c44dba9addbb86491339012096e74778bb4ea93b70f12333bffba3d05e6",
"zh:6336f9cbb0b580f247cebb97fb7d4cc5e7fe9cc734d8d958d84c4ea3f1e24041",
"zh:bca3b9d4dcbe6f804f5611a83add371dc03b5aa92271f60ebdc2216bfedfab28",
"zh:cbcdc87a593090f490f7899f4f2d302e0c7023155591fcf65e6fadd69f5452f0",
"zh:ec2886a1adbfe3c861b2deb9446369111b9c6116701ae73ef372dc7df5bb3c9e",
"zh:edb5b4172610672bb4d7425511961fda2047b8a00675b99ae6887cd2ece4bda9",
"zh:ff7ea7743246181ea739643d7751c37041c4016eb6bbc39beb1e3b4e99629112",
]
}
provider "registry.terraform.io/hashicorp/local" {
version = "2.0.0"
constraints = ">= 1.4.0"
hashes = [
"h1:EC6eh7avwx1rF56h3RZcxgEp/14ihi7Sk/4J3Hn4nIE=",
"h1:pO1ANXtOCRfecKsY9Hn4UsXoPBLv6LFiDIEiS1MZ09E=",
"zh:34ce8b79493ace8333d094752b579ccc907fa9392a2c1d6933a6c95d0786d3f1",
"zh:5c5a19c4f614a4ffb68bae0b0563f3860115cf7539b8adc21108324cfdc10092",
"zh:67ddb1ca2cd3e1a8f948302597ceb967f19d2eeb2d125303493667388fe6330e",
"zh:68e6b16f3a8e180fcba1a99754118deb2d82331b51f6cca39f04518339bfdfa6",
"zh:8393a12eb11598b2799d51c9b0a922a3d9fadda5a626b94a1b4914086d53120e",
"zh:90daea4b2010a86f2aca1e3a9590e0b3ddcab229c2bd3685fae76a832e9e836f",
"zh:99308edc734a0ac9149b44f8e316ca879b2670a1cae387a8ae754c180b57cdb4",
"zh:c76594db07a9d1a73372a073888b672df64adb455d483c2426cc220eda7e092e",
"zh:dc09c1fb36c6a706bdac96cce338952888c8423978426a09f5df93031aa88b84",
"zh:deda88134e9780319e8de91b3745520be48ead6ec38cb662694d09185c3dac70",
]
}
provider "registry.terraform.io/hashicorp/null" {
version = "3.0.0"
constraints = ">= 2.1.0"
hashes = [
"h1:V1tzrSG6t3e7zWvUwRbGbhsWU2Jd/anrJpOl9XM+R/8=",
"h1:ysHGBhBNkIiJLEpthB/IVCLpA1Qoncp3KbCTFGFZTO0=",
"zh:05fb7eab469324c97e9b73a61d2ece6f91de4e9b493e573bfeda0f2077bc3a4c",
"zh:1688aa91885a395c4ae67636d411475d0b831e422e005dcf02eedacaafac3bb4",
"zh:24a0b1292e3a474f57c483a7a4512d797e041bc9c2fbaac42fe12e86a7fb5a3c",
"zh:2fc951bd0d1b9b23427acc93be09b6909d72871e464088171da60fbee4fdde03",
"zh:6db825759425599a326385a68acc6be2d9ba0d7d6ef587191d0cdc6daef9ac63",
"zh:85985763d02618993c32c294072cc6ec51f1692b803cb506fcfedca9d40eaec9",
"zh:a53186599c57058be1509f904da512342cfdc5d808efdaf02dec15f0f3cb039a",
"zh:c2e07b49b6efa676bdc7b00c06333ea1792a983a5720f9e2233db27323d2707c",
"zh:cdc8fe1096103cf5374751e2e8408ec4abd2eb67d5a1c5151fe2c7ecfd525bef",
"zh:dbdef21df0c012b0d08776f3d4f34eb0f2f229adfde07ff252a119e52c0f65b7",
]
}
provider "registry.terraform.io/hashicorp/random" {
version = "3.0.0"
constraints = ">= 2.1.0"
hashes = [
"h1:grDzxfnOdFXi90FRIIwP/ZrCzirJ/SfsGBe6cE0Shg4=",
"h1:yhHJpb4IfQQfuio7qjUXuUFTU/s+ensuEpm23A+VWz0=",
"zh:0fcb00ff8b87dcac1b0ee10831e47e0203a6c46aafd76cb140ba2bab81f02c6b",
"zh:123c984c0e04bad910c421028d18aa2ca4af25a153264aef747521f4e7c36a17",
"zh:287443bc6fd7fa9a4341dec235589293cbcc6e467a042ae225fd5d161e4e68dc",
"zh:2c1be5596dd3cca4859466885eaedf0345c8e7628503872610629e275d71b0d2",
"zh:684a2ef6f415287944a3d966c4c8cee82c20e393e096e2f7cdcb4b2528407f6b",
"zh:7625ccbc6ff17c2d5360ff2af7f9261c3f213765642dcd84e84ae02a3768fd51",
"zh:9a60811ab9e6a5bfa6352fbb943bb530acb6198282a49373283a8fa3aa2b43fc",
"zh:c73e0eaeea6c65b1cf5098b101d51a2789b054201ce7986a6d206a9e2dacaefd",
"zh:e8f9ed41ac83dbe407de9f0206ef1148204a0d51ba240318af801ffb3ee5f578",
"zh:fbdd0684e62563d3ac33425b0ac9439d543a3942465f4b26582bcfabcb149515",
]
}
provider "registry.terraform.io/hashicorp/template" {
version = "2.2.0"
constraints = ">= 2.1.0"
hashes = [
"h1:0wlehNaxBX7GJQnPfQwTNvvAf38Jm0Nv7ssKGMaG6Og=",
"h1:94qn780bi1qjrbC3uQtjJh3Wkfwd5+tTtJHOb7KTg9w=",
"zh:01702196f0a0492ec07917db7aaa595843d8f171dc195f4c988d2ffca2a06386",
"zh:09aae3da826ba3d7df69efeb25d146a1de0d03e951d35019a0f80e4f58c89b53",
"zh:09ba83c0625b6fe0a954da6fbd0c355ac0b7f07f86c91a2a97849140fea49603",
"zh:0e3a6c8e16f17f19010accd0844187d524580d9fdb0731f675ffcf4afba03d16",
"zh:45f2c594b6f2f34ea663704cc72048b212fe7d16fb4cfd959365fa997228a776",
"zh:77ea3e5a0446784d77114b5e851c970a3dde1e08fa6de38210b8385d7605d451",
"zh:8a154388f3708e3df5a69122a23bdfaf760a523788a5081976b3d5616f7d30ae",
"zh:992843002f2db5a11e626b3fc23dc0c87ad3729b3b3cff08e32ffb3df97edbde",
"zh:ad906f4cebd3ec5e43d5cd6dc8f4c5c9cc3b33d2243c89c5fc18f97f7277b51d",
"zh:c979425ddb256511137ecd093e23283234da0154b7fa8b21c2687182d9aea8b2",
]
}

11
terraform/ecr-repo.tf Normal file
View File

@@ -0,0 +1,11 @@
resource "aws_ecr_repository" "myapp-repo" {
name = "myapp"
# defaults
image_tag_mutability = "MUTABLE"
image_scanning_configuration {
scan_on_push = true
}
}
data "aws_ecr_authorization_token" "token" {}

57
terraform/eks-cluster.tf Normal file
View File

@@ -0,0 +1,57 @@
terraform {
backend "s3" {
bucket = "myapp-cluster-bucket-new"
key = "myapp/state.tfstate"
region = "eu-west-3"
}
}
provider "kubernetes" {
load_config_file = "false"
host = data.aws_eks_cluster.myapp-cluster.endpoint
token = data.aws_eks_cluster_auth.myapp-cluster.token
cluster_ca_certificate = base64decode(data.aws_eks_cluster.myapp-cluster.certificate_authority.0.data)
}
data "aws_eks_cluster" "myapp-cluster" {
name = module.eks.cluster_id
}
data "aws_eks_cluster_auth" "myapp-cluster" {
name = module.eks.cluster_id
}
module "eks" {
source = "terraform-aws-modules/eks/aws"
version = "13.2.1"
cluster_name = var.cluster_name
cluster_version = var.k8s_version
subnets = module.myapp-vpc.private_subnets
vpc_id = module.myapp-vpc.vpc_id
tags = {
environment = var.env_prefix
application = "myapp"
}
worker_groups = [
{
instance_type = "t2.small"
name = "worker-group-1"
asg_desired_capacity = 2
},
{
instance_type = "t2.medium"
name = "worker-group-2"
asg_desired_capacity = 1
}
]
}
resource "local_file" "kube_config_file" {
content = module.eks.kubeconfig
filename = "kubeconfig.yaml"
file_permission = "400"
}

20
terraform/outputs.tf Normal file
View File

@@ -0,0 +1,20 @@
output repo_url {
value = aws_ecr_repository.myapp-repo.repository_url
}
output cluster_url {
value = module.eks.cluster_endpoint
}
output kubeconfig {
value = module.eks.kubeconfig
}
output ecr_user_name {
value = data.aws_ecr_authorization_token.token.user_name
}
output ecr_user_password {
value = data.aws_ecr_authorization_token.token.password
sensitive = true
}

27
terraform/variables.tf Normal file
View File

@@ -0,0 +1,27 @@
variable env_prefix {
default = "dev"
}
variable region {
default = "eu-west-3"
}
variable vpc_cidr_block {
default = "10.0.0.0/16"
}
variable private_subnet_cidr_blocks {
default = ["10.0.1.0/24", "10.0.2.0/24", "10.0.3.0/24"]
}
variable public_subnet_cidr_blocks {
default = ["10.0.4.0/24", "10.0.5.0/24", "10.0.6.0/24"]
}
variable k8s_version {
default = "1.17"
}
variable cluster_name {
default = "myapp-eks-cluster"
}

19
terraform/versions.tf Normal file
View File

@@ -0,0 +1,19 @@
terraform {
// pull latest version because of bug on destroy - aws_auth can't get removed
//required_version = ">= 0.12"
/*required_providers {
random = "~> 2.1"
local = "~> 1.2"
null = "~> 2.1"
template = "~> 2.1"
kubernetes = "~> 1.13"
}*/
}
/*
** Defining provider versions inside provider block deprecated in Terraform 0.13 and above
**
provider "random" {
version = "~> 2.1"
}
*/

35
terraform/vpc.tf Normal file
View File

@@ -0,0 +1,35 @@
provider "aws" {
region = var.region
}
data "aws_availability_zones" "available" {}
module "myapp-vpc" {
source = "terraform-aws-modules/vpc/aws"
version = "2.64.0"
name = "myapp-vpc"
cidr = var.vpc_cidr_block
private_subnets = var.private_subnet_cidr_blocks
public_subnets = var.public_subnet_cidr_blocks
azs = data.aws_availability_zones.available.names
enable_nat_gateway = true
single_nat_gateway = true
enable_dns_hostnames = true
tags = {
"kubernetes.io/cluster/${var.cluster_name}" = "shared"
}
public_subnet_tags = {
"kubernetes.io/cluster/${var.cluster_name}" = "shared"
"kubernetes.io/role/elb" = 1
}
private_subnet_tags = {
"kubernetes.io/cluster/${var.cluster_name}" = "shared"
"kubernetes.io/role/internal-elb" = 1
}
}