Skip to content

Conversation

@jc-programs
Copy link

PRA06

Mi imagen docker de SpringConference deployada a AWS: http://3.66.219.45:8080/

Tasks

  1. Create an AWS Account
    1. Visit the AWS website and click "Create an AWS Account"
    2. Follow the registration process, providing necessary information
    3. Choose a support plan (Basic is free and sufficient for this exercise)
  2. [4/5] Set Up AWS Budget and Billing Alerts
    1. Navigate to AWS Budgets in the AWS Management Console
    2. Click "Create budget" and choose "Customize (advanced)"
    3. Select "Cost budget" and set a monthly fixed budget
    4. Configure alerts for 80% of your budgeted amount
    5. Set up an action to automatically apply an IAM policy restricting resource creation when the budget is exceeded
  3. Create AWS Services for Spring Boot Docker Deployment
    1. Set up Amazon Elastic Container Registry (ECR)
    2. Configure Amazon Elastic Container Service (ECS)
    3. Set up AWS Fargate
  4. Update Jenkins Pipeline for AWS Deployment
  5. Deploy Spring Boot Application

Execution

login to aws

aws ecr get-login-password --region eu-central-1 | docker login --username AWS --password-stdin 183631312119.dkr.ecr.eu-central-1.amazonaws.com/jcprograms/spring-conference

pull del docker de github y luego subirlo a ECR

docker pull jcprograms/springconference 
docker tag jcprograms/springconference 183631312119.dkr.ecr.eu-central-1.amazonaws.com/jcprograms/spring-conference
docker push 183631312119.dkr.ecr.eu-central-1.amazonaws.com/jcprograms/spring-conference

Mi pipeline de Jenkins que crea el docker y hace pull a docker hub

pipeline {
    agent any

    environment {
        IMAGE_NAME = 'jcprograms/springconference'
        IMAGE_TAG = "${BUILD_NUMBER}"
    }

    tools {
        maven "MAVEN3"
        jdk 'JDK17'
    }

    stages {
        stage ('Checking java version') {
            steps {
                sh 'java --version'
            }
        }
        
        stage ('Checking maven version') {
            steps {               
                sh 'mvn --version'
            }
        }
        
        stage ('Checking docker version') {
            steps {               
                sh 'docker --version'
            }
        }
        
        
        stage('Checkout git') {
            steps {
                // set repository url and branch
                git branch: 'docker-version', url: 'https://github.com/jc-programs/SpringConference.git'
            }
        }

        stage ('build app skiping test') {
            steps {               
                sh 'mvn clean package -DskipTests=true -Pproduction'
            }
        }

        stage('Archive .jar') {
            steps {
                archiveArtifacts artifacts: '**/target/*.jar', fingerprint: true
            }
        }
        
        stage('Build Docker Image') {
            steps {
                script {
                    docker.build("${IMAGE_NAME}:${IMAGE_TAG}")
                }
            }
        }
 
 
        stage('Login to Docker Hub') {
            steps {
                script {
                    docker.withRegistry('', 'dockerhub_id') {
                        // This block will log in using the credentials specified
                        sh 'echo loged in docker'
                    }
                }
            }
        }

        stage('Push Image to Docker Hub') {
            steps {
                script {
                    docker.withRegistry('', 'dockerhub_id') {
                        docker.image("${IMAGE_NAME}:${IMAGE_TAG}").push()
                        docker.image("${IMAGE_NAME}:${IMAGE_TAG}").push('latest')
                    }
                }
            }
        }
    }
 
    post {
        always {
            sh "docker rmi ${IMAGE_NAME}:${IMAGE_TAG}"
            sh "docker rmi ${IMAGE_NAME}:latest"
        }
    }
}

Screenshots

  1. Alertas

Asignar región por defecto

  1. Asignar región por defecto

Download mi docker a ECR

  1. Download mi docker a ECR

Push de mi docker a ECR

  1. Push de mi docker a ECR

Docker en ECR

  1. Docker en ECR

Inicio de ECS

  1. Inicio de ECS

Definición de task 1

  1. Definición de task 1

Definición de task 2

  1. Definición de task 2

Definición de task 3

  1. Definición de task 3

Task creada

  1. Task creada

Task deployment definición 1

  1. Task deployment definición 1

Task deployment definición 2

  1. Task deployment definición 2

Task deployment 1

  1. Task deployment 1

Task deployment 2

  1. Task deployment 2

Network configuration

  1. Network configuration

Network configuration

  1. Security Group Networking

Fargate is working

  1. Fargate is working

@AlbertProfe
Copy link
Owner

ECS Service with load Balancer

Documentation published:

Architecture

How to create a ECS service with LoadBalancer

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants