From 165bd326cb3dd23305d55168051344ae658a8e91 Mon Sep 17 00:00:00 2001 From: Nana Janashia Date: Sun, 20 Dec 2020 14:31:29 +0100 Subject: [PATCH] add terraform config for kubectl config file --- .gitignore | 4 +++- Jenkinsfile | 33 ++++++++++++++++++++++++++------- terraform/eks-cluster.tf | 6 ++++++ 3 files changed, 35 insertions(+), 8 deletions(-) diff --git a/.gitignore b/.gitignore index 592238d..fb0fab5 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,5 @@ .idea/* target -terraform/.terraform/* \ No newline at end of file +terraform/.terraform/* +terraform/terraform.tfstate +terraform/kubeconfig* \ No newline at end of file diff --git a/Jenkinsfile b/Jenkinsfile index fe42ae6..da94290 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -6,10 +6,31 @@ pipeline { maven 'Maven' } environment { - DOCKER_REPO_SERVER = '664574038682.dkr.ecr.eu-west-3.amazonaws.com' - DOCKER_REPO = "${DOCKER_REPO_SERVER}/java-maven-app" + AWS_ACCESS_KEY_ID = credentials('jenkins_aws_access_key_id') + AWS_SECRET_ACCESS_KEY = credentials('jenkins_aws_secret_access_key') } stages { + stage('provision cluster') { + steps { + script { + 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 + ) + env.K8S_CLUSTER_URL = sh( + script: "terraform output cluster_url", + returnStdout: true + ) + env.KUBECONFIG=kubeconfig.yaml + sh "kubectl get node" + } + } + } + } stage('increment version') { steps { script { @@ -36,17 +57,15 @@ pipeline { script { echo "building the docker image..." withCredentials([usernamePassword(credentialsId: 'ecr-credentials', passwordVariable: 'PASS', usernameVariable: 'USER')]) { - sh "docker build -t ${DOCKER_REPO}:${IMAGE_NAME} ." - sh "echo $PASS | docker login -u $USER --password-stdin ${DOCKER_REPO_SERVER}" - sh "docker push ${DOCKER_REPO}:${IMAGE_NAME}" + sh "docker build -t ${DOCKER_REPO_URL}:${IMAGE_NAME} ." + sh "echo $PASS | docker login -u $USER --password-stdin ${DOCKER_REPO_URL}" + sh "docker push ${DOCKER_REPO_URL}:${IMAGE_NAME}" } } } } stage('deploy') { environment { - AWS_ACCESS_KEY_ID = credentials('jenkins_aws_access_key_id') - AWS_SECRET_ACCESS_KEY = credentials('jenkins_aws_secret_access_key') APP_NAME = 'java-maven-app' } steps { diff --git a/terraform/eks-cluster.tf b/terraform/eks-cluster.tf index 75cb399..c667913 100644 --- a/terraform/eks-cluster.tf +++ b/terraform/eks-cluster.tf @@ -40,4 +40,10 @@ module "eks" { asg_desired_capacity = 1 } ] +} + +resource "local_file" "kube_config_file" { + content = module.eks.kubeconfig + filename = "kubeconfig.yaml" + file_permission = "400" } \ No newline at end of file