본문 바로가기

⭐ CICD

(15)
ArgoCD + Docker hub 를 활용하여 Kubernetes에 배포하기 # 새로운 CI 방법과 CD방법이 계속해서 등장한다. 새로운 기술들이 그것도 오픈소스로 지속적으로 등장하기 때문에 트랜드를 빨리 파악하고 테스트 해보고 적용하여 필요한 부분을 적용하는 것이 중요할거 같다. - 대표적인? CD 방법인 요즘 핫한(나만 핫한가?) ArgoCD를 통해 Kubernetes 클러스터에 Docker 이미지를 배포하는 방법에 대해서 알아보자. - 일단 ArgoCD란? - CD(지속적 배포)의 배표적인 툴 이다. 직관적이고 사용성이 편리하여 최근에 가장 많이 쓰이고 있다. 그리고 ArgoCD를 사용하여 Kubernetes에 배포하면 Git에서 수정사항이 발생할 때, 자동으로 ArgoCD에서 수정하여 에러를 줄이고 지속적인 배포를 구현할 수 있다. 또한 각 버전들은 Git 저장소에 기록되..
간단한 CI/CD 구현 구성도 - 간단한 설명 : 개발자가 IDE에서 GitHub에 Commit 및 Push를 수행하면, 젠킨스에서 지정된 Rule을 통해 Build를 수행하고, Build가 완료되면 해당 War 파일 이나 Jar파일을 S3 버킷에 업로드 한다. upload된 War 및 Jar파일이 최종적으로 ElasticBeanstalk에 배포되어 실제 서비스에 배포 및 반영되는 로직이다. - 로직은 간단하나, 구현하는 과정은 Jenkins의 설치라든지 ElasticBeanstalk의 세팅 등 약간의 이해가 필요하다. - 위의 로직으로 구현을 하면 비교적 간단하게 CI/CD 구현을 할 수있고, 매우 편리하게 통합 배포가 가능하다.
gradlew 사용 시 permission denied 오류가 나는경우 해결방법 혹시 gradlew 사용 시 permission denied 오류가 나는경우... 아래 내용을 참조하자! gradlew를 사용하여 build 시 permission 오류가 발생하시는 분들은 아마 Window 환경에서 작업해서 소스를 push 하신 분들일 겁니다. Window 환경에서 파일 생성 시 기본 권한이 644로 설정되기 때문입니다. 아래 명령어로 입력해보면 git 인덱스에 잡혀 있는 권한이 나오게 됩니다. $ git ls-tree HEAD gradlew가 644로 되어있는경우 755로 변경이 필요합니다. 아래 명령어로 권한을 변경합니다. $ git update-index --add --chmod=+x gradlew - ./gradlew clean build 명령어를 실행합니다. ./gradlew ..
Elastic Beanstalk와 Jenkins로 CI/CD 구현(4) 이제부터는 S3를 추가하고 Jenkins Pipeline을 이용하여 S3에 war 파일을 업로드 후 Elastic Beanstalk에 Deploy 하는 실습을 해보도록 하겠습니다. - S3 생성 war 파일을 업로드할 S3를 하나 생성해보도록 하겠습니다. - S3 버킷 생성 AWS에서 S3 검색 후 버킷 만들기를 선택합니다. 버킷 이름을 입력 후 리전은 서울 리전으로 선택하고 생성을 합니다.(S3 리전은 ElasticBeanstalk의 리전과 동일하게 맞춰야함, 서울리전이 이상하게 ElasticBeanstalk가 업로드가 안되서 도쿄 리전으로 생성하고 진행함 > 도쿄리전은 참고로 northeast-1 임.) 생성되었습니다. - AWS CLI를 통한 업로드 권한을 가지기 위해 권한을 설정해보도록 하겠습니다..
Elastic Beanstalk와 Jenkins로 CI/CD 구현(3) - java와 jenkins 설치를 해봅시다. EC2에 접속하여 Java8 버전을 설치해보도록 하겠습니다. 참고로 Amazon Linux로 진행하신 분들은 기본으로 7 버전이 설치되어있기 때문에 8 버전 설치 후 설정을 변경해주시는 작업을 진행하셔야 합니다. Ubuntu 18로 생성하신 분들은 아래 내용을 그대로 따라 하시면 됩니다. - 일단 ec2에 ssh로 붙으신다음에 > 설치를 진행해 봅시다. - sudo apt update 명령어를 사용하여 최신버전으로 업데이트 합니다. $ sudo apt update - java 8 버전을 설치 합니다. $ sudo apt install openjdk-8-jdk - 자바 설치가 끝나셨으면 java의 버전을 확인해 보도록 하겠습니다. $ java -version ..
Elastic Beanstalk와 Jenkins로 CI/CD 구현(2) 1. IAM Role 생성 AWS CLI를 통해 S3와 Elastic Beanstalk에 접근하기 위해 역할을 생성하도록 하겠습니다. IAM > 역할로 이동 후 역할 만들기를 선택합니다. - AWS 서비스, EC2 등 차례로 선택 후 다음 권한을 클릭합니다. - 추가해야 될 정책은 두 가지입니다. 1) AmazonS3FullAccess 2) AmazonElasticBeanstalkFullAccess - ec2인스턴스를 생성 후 IAM Role을 연결해 주는 작업을 진행해 봅시다. - 첫번째로 ec2 인스턴서를 생성 합니다. - 보안 그룹을 설정합니다. - 보안 그룹 이름과 설명을 입력한 후 22 포트의 경우 내부에서만 접속 가능하도록 설정하고 80 포트는 Git으로부터 webhook을 받아야 하기 때문에..
Elastic Beanstalk와 Jenkins로 CI/CD 구현(1) - 일단 스프링 부트 프로젝트를 생성하기 위해 스프링 이니셜라이저 사이트로 이동한다. https://start.spring.io/ 아래와같이 서정하고 제너레이터를 클릭하여 파일을 다운받는다. - 인텔리J를 실행시키고, 스프링 이니셜라이저에서 다운받은 파일을 오픈한다. - java -> com.example.CI.CD -> HomeController.java 파일을 생성하고, 아래의 코드를 작성하여 넣는다. package com.example.CI.CD; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; @Controller public class HomeCont..