AWS ( https://jinlabs.signin.aws.amazon.com/console )를 킨 후
1. Bastion 만들기
2. Auto Scaling에 들어갈 시작템플릿의 이미지를 만들고 이미지로 시작템플릿 만들기
3. Jenkins 만들기
4. 로드밸런싱할 대상 그룹 2개 만들기
Jenkins
- 우분투 : 도커 > 젠킨스 컨테이너 : 도커
ㄴ젠킨스 작동 위함 ㄴ도커이미지 만들기 위함
ㄴ깃허브에서 소스를 받아서 이미지를 만들고 빌드하여 도커 허브로 다시 보내며 보낸 것 AutoScaling 그룹으로 보냄
Bastion 제작
ㄴ이렇게 베스천 인스턴스를 완성
교재 p.131의 그림 6.4
ㄴ젠킨스가 해당 코드와 yml 파일을 깃허브에 보내서 코드를 가져오고,
젠킨스가 코드디플로이에게 명령을 내려 에이전트가 가져오는 형식
ㄴS3에 보관된 작업 스크립트파일과 AppSpec.yml파일을 가져와서 작업
ㄴ보면 .yml로 업로드하는 데 .yaml은 인식하지 못한다는 주의점 존재
이러한 작업을 하기위해서는 역할과 정책 즉 권한이 필요 (AWS cli)
API : 직접적으로 명령을 입력하지 않고 다른 프로그램이나 인스턴스에서 명령어를 던져서 연결된 해당 프로그램에 원격으로 명령을 전달하는 경우
먼저 AWS CLI를 위한 엑세스 키 등록
등록이 완료되면 jenkins를 만들어 줘야 하기에 인스턴스를 만들어 준 후
VirtualBox에서 aws-client에 접속하여 config 파일의 내용을 수정하여 각각 bastion과 jenkins에 접속할 수 있도록 한다
각각 접속하여 키값을 받아온 후 jenkins에서 $ git --version 확인 후 명령어를 입력하여 준다
먼저 깃허브에서 도커 설치를 위한 기본코드들을 다운로드 한 후
도커설치에 대한 명령어가 담긴 파일의 실행권한 부여 후 실행
완료되면 exit로 나갔다가 다시 접속해야 제대로 인식이 됨
그 후 젠킨스 컨테이너를 만드는 과정을 실행하여 준다
ㄴDockerfile 등 의 파일들이 있는 디렉토리 안에서 실행하여 주는 것
이후 컨테이너로 접속하면 awscli는 완료된 것을 볼 수 있는 데 해당 파일을 살펴보면 cli파일을 .zip파일로 다운 받은 후 압축, 압축해제 프로그램을 설치한 후 압축해제하여 aws 디렉토리를 생성하고 안의 설치파일을 실행하는 구조임을 알 수 있다
그 후 command-line의 명령어를 한줄씩 실행하여 준다
ㄴ검은줄 부분은 에러로 실패시 exit로 나갔다가 다시 해보면 되는 것을 볼 수 있다
그리고 awscli 연결을 위해 명령어로 입력하여 등록하여 주면 된다
※그러나 확인용 명령어를 입력해도 등록되지 않았음으로 되어 있어 확인 중
ㄴ프로그램 하나를 추가설치하여 주면 정상적으로 출력되는 것을 볼 수 있다
로드밸런서를 만드는 데 있어서 이름과 기본적인 설정을 하여 준후 대상그룹 연결을 위해 새로 생성하여 준다
젠킨스 연결을 위한 대상그룹을 만들어서 jenkins-ec2와 연결하여 준다
이렇게 완성하게 되면 로드밸런싱에서 80번 포트를 사용하여 젠킨스로 열어놓는 방식의 형태이다
두가지 방식이 있는데 리스너를 만들어서 리스너 규칙을 바꾸면 원래 www.jinlabs.net으로 접속되는 것을 jenkins.jinlabs.net이나 target.jinlabs.net 등으로 변경할 수도 있으며,
각각 다른 포트를 지정하는 방식이 있다
여기서 우리는 Route 53 에서 호스팅영역에서 새 레코드를 생성하여 접속할 수 있도록 등록 후 웹으로 접속한다
이렇게 생성을 완료 하면 user09-jenkins.jinlabs.net으로 접속이 가능해지면서 접속 시 jenkins로 접속되는 것을 볼 수 있다
이후 비번을 확인하여 입력 후 PlugIn을 설치하여 주고 아이디 admin에 비번은 오픈되지 않게 주의하며 자신만의 비번을 등록하여 준다
이제 필수 시스템을 등록하여 준다
- Tools : Java, Maven
- PlugIn : Publish over SSH, GitHub Integration, Docker, Docker Pipeline, docker-build-step, AWS CodeDeploy, Pipeline: AWS Steps, Pipeline: Stage View
github와 jenkins가 서로 인증키로 연결되어 있는 상태로 만들기 위해 github에서 키를 만들어서 개인키를 jenkins에 공개키를 github로 하여 제작
이렇게 만든 공개 키를 복사하여 github의 settings에서 SSH 키를 등록하여 준 후 config파일에 github.com을 등록하여 준다
등록 한 후 테스트해보면 정상적으로 작동되는 것을 볼 수 있다
이제 spring-petclinic의 설정값에서 보이지 않도록 수정하여 준다
ㄴ해당 수정으로 private로 바꿔줌으로서 key가 없으면 접속할 수 없는 레포지토리가 된다
Jenkins에서 github와 aws credential을 제작하여 줄 건데
젠킨스 관리 > Security > Credential >> Add Credential로 클릭하여 github로 접속하기위해 등록하여 준다
이렇게 개인키를 jenkins에 등록하여 주어서 github와 양쪽의 인증키를 이어준다
★계정의 키는 모든 레포지토리로 접속할 수 있으며, 각 레포지토리 내의 디플로이 키는 해당 레포지토리에만 접속권한이 생기는 키
aws credential(플러그인 없으면 Kind에 뜨지 않음)을 등록하여 준다
ㄴ2차인증 필요시 이전에 했던 MFA을 활용하여 토큰을 등록할 수 있음
그후 새이미지를 만들기 위해 인스턴스를 하나더 만들어서 설정하여 준 후
원격으로 접속하여 도커 등을 설치하여 준다
ㄴgithub의 인스톨 도커파일을 복사하여 새로 만들어서 내용을 붙여넣어서 제작
ㄴ도커는 설치 시 항상 exit로 나갔다가 재접속해야 한다
도커 설치를 완료했으니 CDA를 설치하여 준다
이제 설치가 완료된 인스턴스로 이미지를 생성하여 준다
템플릿 제작 시 중요한 고급설정의 정책을 등록해야 하기에 먼저 제작해줄 정책 1가지와
2가지 역할을 생성하여 준다
역할도 다 만들었으니 다음단계로 시작템플릿을 제작할건데
고급 설정까지 전부 설정한 후 생성 완료하기
이렇게 시작템플릿까지 완료했으면 마지막단계인 Auto Scaling 그룹을 생성하여 준다
ㄴ로드밸런서는 다른 대상그룹에 연결하기 위해 현재는 없음으로 넘어간다
이제 로드밸런서와 오토스케일링그룹을 연결지어줄 대상 그룹을 생성하여 준다
ㄴ group는 입력 시 32자 초과하여 삭제함
생성을 완료했기에 각 대상그룹을 현재 로드밸런서로 조건을 추가 연결하여 준다
이렇게 로드밸런서에 기본값은 글관련이 출력되게 한 후 특정 호스트헤더를 붙여야 해당 연결된 인스턴스 등으로 갈 수 있도록 등록하여 준다
이후 대상그룹과 오토스케일링 그룹을 연결지어 준 후
젠킨스로 가서 New Item.. 으로 새 파이프라인 생성
이제 종료해줘야 하기에 AutoScaling그룹의 인스턴스를 0로 한 후 bastion과 jenkins를 중지하고 로그아웃
'AWS 교육 > Docker-AWS (월)' 카테고리의 다른 글
250210 ssh 키, Kubernetes (0) | 2025.02.10 |
---|---|
250120_AWS Jenkins, DockerHub, GitHub 연결 (0) | 2025.01.20 |
250106_AWS Code Deploy(CDA), project 초안 (0) | 2025.01.06 |
241230_AWS Jenkins-Docker, 로드 밸런스, 오토스케일링 그룹 (0) | 2024.12.30 |
241223_AWS Network, VPC(게이트웨이, 서브넷, 라우팅 테이블) (0) | 2024.12.23 |