1.키 생성

현재 실행중인 젠키스 사용자를 확인합니다. 특별하게 설정한 적이 없으면 jenkins 사용자로 사용중일 것이다.

ps aux | grep jenkins

현재 사용자를 jenkins로 전환한다.

sudo -u jenkins /bin/bash

전환이 완료되면 .ssh 디렉토리를 생성하고 해당 디렉토리로 이동한다.

mkdir /var/lib/jenkins/.ssh
cd /var/lib/jenkins/.ssh

이후 해당 디렉토리에 ssh 키를 생성한다.

ssh-keygen -t rsa -f /var/lib/jenkins/.ssh/github_ansible-in-action

생성이 되었다면 ls -al 명령어로 키가 잘 생성되었는지 확인한다.

2. Github 연동

Jenkins로 연동하고 싶은 Github의 Setting 페이지로 이동한다.

Add deploy key를 누르면 아래와 같은 화면이 나온다.

그리고 ec2로 이동하여 공개키를 받는다.

cat /var/lib/jenkins/.ssh/github_ansible-in-action.pub

이처럼 공개키를 받을 수 있다.

이제 비밀키를 받아야 한다.

3. Github

이제 젠킨스 화면에서 Credentials -> System -> Global credentials로 차례로 이동한다.

이후 Add Credentials를 누르면 아래와 같은 화면이 나오는데

cat /var/lib/jenkins/.ssh/github_ansible-in-action

명령어를 통해서 비밀키를 복사하고 OK를 누르면 된다.

 

CI (Continuous Integration)

  • CI는 지속적 통합으로 Build, Test를 실시 해주는 프로세스로 코드 품질의 관리를 위하여 이러한 통합 프로세스를 상시로 실시해 주는것을 CI라고 한다.

CD (Continuous Delivery or Continuous Deploy)

  • 소프트웨어를 신뢰 가능한 수준에서 짧은 주기로 배포하여 관리하는것을 의미한다.

수동으로 개발자가 직접 배포 하다보면 에러 발생의 소지가 있고 잘못 배포시 다시 배포하는 과정의 어려움이 있어 CI/CD를 하기위한 Travis CI, Circle CI, Jenkins 등이 있다. 이중 우린 Jenkins를 통하여 관리하는 것을 해본다.

 

1.EC2 생성

 

EC2를 이용하여 Jenkins를 설치 하려면 제일 먼저 EC2가 필요하다. https://aws.amazon.com/ko/ 사이트에 접속하여 가입 후 EC2를 생성한다.

Linux 서버에 설치를 기본으로 한다. 

이후에 EC2 보안 그룹에서 80번 포트가 열려 있는지 확인한다. 

 

2. Jenkins 설치

 

먼저 yum update 를 통해 최신화 시킨다.

sudo yum update

기본 패키지에는 Jenkins가 포함 되어있지 않다. 따라서 wget을 통해서 jenkins 저장소를 yum 저장소에 다운 받는다.

 

sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo

그리고 Jenkins 저장소 키를 등록한다.

sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key

이제 패키지가 저장소에 등록되어 yum install을 하면 된다.

sudo yum install jenkins

install이 끝나면 Jenkins를 실행 해본다.

sudo service jenkins start

위 사진처럼 동작되면 java8 버전을 다운받아야 한다. java8 버전을 다운 받고 난 뒤에 재 실행하면 아래와 같이 나오게 된다.

3. Nginx 설치

 

웹 서버인 Nginx도 설치해야한다.

sudo yum install nginx

설치 이후 

sudo vim /etc/nginx/nginx.conf

설정 파일을 열어서 내리면 아래 코드를 발견 할 수 있다. 그리고 location 부분에 해당 코드를 추가 한다.

proxy_pass http://localhost:8080;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;

4.Jenkins 설정

이후 해당 EC2의 퍼블릭 DNS(IPv4)를 복사하여 브라우저로 접속하면 아래ㅗ아 같은 화면이 나오게 된다.

패스워드는 cat으로 확인할 수 있다. 아래 코드를 작성하면 패스워드가 나오게 되는데 그 패스워드를 붙여넣기 하면 된다.

sudo cat /var/lib/jenkins/secrets/initialAdminPassword

그러면 아래와 같은 화면을 볼 수 있다. 그리고 jenkins에서 추천하는 플러그 인을 설치한다.

로그인 할 계정도 가입한다.

그럼 끝이다.

'AWS' 카테고리의 다른 글

[AWS] jenkins와 github 연동  (0) 2020.02.20
[AWS] AWS(Amazon Web Service) Cloud Computing의 기초  (0) 2020.01.27
[AWS] 데이터 베이스(Database)  (0) 2020.01.27
[AWS] MySQL 과 AWS RDS 연결  (0) 2020.01.27

Cloud Computing이란

인터넷을 통해 연결된 원격 컴퓨터를 활용하는 기술로 개인용 컴퓨터보다 성능이 뛰어난 저장장치 등의 컴퓨터 자원을 빌려서 사용할 수 있도록 처리해주는 기술이다.

클라우드 컴퓨팅의 장점

  1. 클라우드를 통해 빠른 서비스를 구현할 수 있다. (서버를 구매하여 구축할 시에는 개발자까지 제공하기까지 시간이 오래 걸리므로)
  2. 물리적 서버나 데이터 센터등의 비용을 가변 비용으로 전환하여 비용을 절감할 수 있다. 즉, 초기 투자 비용이 발생하지 않으며, 사용한만큼 지불하면 된다.
  3. 클라우드를 통해 넓은 지역에 애플리케이션을 배포할 수 있다.

AWS의 주요 서비스

1. 컴퓨팅 서비스 : Amazon EC2(가상화 서버의 제공), Amazon Auto Scaling(서버를 추가/삭제 할 수 있게 하는 서비스), Amazon WorkSpaces(문서 및 데이터를 서버에 보관 관리할 수 있도록 해주는 서비스)

2.네트워킹 서비스 : Amazon Route 53(AWS에서 실행되는 다양한 인프라에 효과적으로 연결할 수 있게 하는 서비스), Amazon VPC(가상 사설 네트워크 인프라를 클라우드 내에 생성/구성하여 보안성/안정성이 높은 네트워스 서비스 제공), AWS Direct Connect(낮은 지연시간으로 데이터/정보를 공유할 수 있게 하는 서비스), Amazon ELB(사용량이 많은 경우 트래픽에 대한 부하 분산을 제공)

3.스토리지 서비스 : Amazon S3(범용적인 스토리지 서비스 제공), Amazon Glacier(사용 빈도가 높지 않은 데이터를 저비용으로 장기 보관하는 서비스), Amazon EBS(데이터의 입출력 속도가 빠른 서비스), AWS Snowball(대용량 데이터 업로드 서비스)

4.데이터베이스 서비스 : Amazon RDS(아마존에서 제공하는 관계형 데이터베이스 이용), Amazon DynamoDB(대용량의 데이터를 저장하고 이를 분석하여 연계 활용할 수 있도록 확장할 수 있는 서비스), Amazon ElastiCache(빠르고 신뢰성 있는 서비스 제공)

5.분석 플랫폼 : Amazon Kinesis(대량의 데이터를 저장 분류할 수 있는 서비스), Amazon Redshift(효율적인 데이터 분석 서비스)

6.애플리케이션 서비스 : Amazon CloudSearch(검색 서비스), Amazon SES(외부로 대량의 이메일 발송), Amazon Elastic Transcoder(동영상 인코딩 서비스)

 

 

이 글은 코드프레소 DevOps Roasting 코스를 수강하면서 작성한 글입니다.

'AWS' 카테고리의 다른 글

[AWS] jenkins와 github 연동  (0) 2020.02.20
[AWS] AWS EC2에 Jenkins 설치하기  (0) 2020.02.20
[AWS] 데이터 베이스(Database)  (0) 2020.01.27
[AWS] MySQL 과 AWS RDS 연결  (0) 2020.01.27

Database(DB) : 여러사람에 의해 공유되어 사용될 목적으로 통합하여 관리되는 데이터의 집합

RDBMS : 관계형 데이터베이스로 가장 많이 사용되고 있는 데이터베이스의 한 종류로 데이터 간에 연관 관계가 있는 데이터 항목들의 모음을 말한다. 관계형 데이터베이스는 열과 행으로 이루어진 테이블(Table)로 이루어져 있다. 대표적인 관계형 데이터베이스로는 Oracle, MySQL, MariaDB 등이 있다.

RDS : 클라우드에서 관계형 데이터베이스를 더욱 간편하게 설정, 운영 및 확장할 수 있는 서비스이다. 즉, 고정적인 자원의 할당이 아닌 가변적으로 조절할 수 있는 데이터 서비스이다.

Amazon RDS : 여러개의 DB 인스턴스 유형으로 제공되며 RDBMS의 종류인 Oracle, MySQL, MariaDB, PostgreSQL을 비롯하여Amazon aurora, Microsoft SQL Server까지원하는 DBMS를 선택할 수 있다.

AWS에서 데이터 베이스 서비스를 사용하는 두 가지 방법

  1. 직접 Amazon EC2에 데이터 베이스를 설치 : On-Premise에서 사용하던 데이터베이스를 그대로 사용하여 이질감 없이 사용할 수 있는 장점이 있다. 단, EC2에 설치 운용 전에 미리 마트너사를 통해 기존 라이선스를 사용할 수 있는지 여부를 확인해야 한다.
  2. AWS에서 직접 제공해주는 데이터 베이스 서비스를 이용 : 데이터베이스의 설치 및 운영/관리를 Amazon에서 직접 제공하므로 별도의 운영/관리가 필요하지 않는다는 장점이 있다.

Amazon RDS의 주요 특징

  1. 유연한 인스턴스 및 스토리지 확장 : 데이터 저장공간인 스토리지는 필요에 의해 유연하게 관리할 수 있으며 Provisioned IOPS(SSD)를 통해 빠른 데이터 처리나 대용량의 데이터 처리를 할 수 있다. 접속이 빈번하지 않은 워크로드의 경우 Magnetic을 사용하여 저렴한 비용으로 서비스 이용이 가능하다.
  2. 손쉽게 사용 가능한 백업 및 복원 기능 : RDS는 자동 백업 설정을 통해 손쉽게 백업이 가능하다. 데이터 베이스는 최대 35일까지 데이터를 보존할 수 있으며, 스냅샷을 통해 DB를 생성할 수도 있다.
  3. 가용 영역의 멀티를 통한 고가용성 확보 : 가용 영역은 상호 간 물리적으로 분리된 독립적인 인프라를 제공하는데 주요 장애 상황 발생 시 자동으로 데이터베이스 장애 극복 기능을 수행할 수 있도록 고가용성을 지원한다. 또한 리전 간 데이터 이전이 쉽게 가능하다.
  4. 암호화 옵션을 통한 보안성 강화 : 옵션을 통해 One-Click을 통해 데이터에 대한 암호화 기능을 제공
  5. Database Migration 서비스 : 동종 혹은 다른 DB 엔진으로부터 RDS로 에이터에 대한 Migration 지원

이 글은 코드프레소 DevOps Roasting 코스를 수강하면서 작성한 글입니다.

'AWS' 카테고리의 다른 글

[AWS] jenkins와 github 연동  (0) 2020.02.20
[AWS] AWS EC2에 Jenkins 설치하기  (0) 2020.02.20
[AWS] AWS(Amazon Web Service) Cloud Computing의 기초  (0) 2020.01.27
[AWS] MySQL 과 AWS RDS 연결  (0) 2020.01.27
  1. MySQL 설치 후 실행

2. MySQL Connections 클릭

3. AWS Console RDS 페이지에서 엔드포인트 확인후 Hostname에 작성하고 RDS 생성 시에 작성한 마스터 계정과 비밀번호를 Username과 password에 작성

4.생성된 연결 정보를 클릭해 DB인스턴스에 접속한다.

 

이 글은 코드프레소 DevOps Roasting 코스를 수강하면서 작성한 글입니다.

+ Recent posts