20220602 필기노트

강재민·2022년 6월 3일
0

필기노트

목록 보기
21/23

CI/CD

https://ko.wikipedia.org/wiki/%ED%8F%AD%ED%8F%AC%EC%88%98_%EB%AA%A8%EB%8D%B8

폭포수 모델의 단점은 앞선 단계가 실패하면 멈춘다는 단점이 있다.
그리고 생명주기가길어서 문제점 발견시에 빠른 조치가 어렵다.

그래서 최근에는 애자일 모델을 사용한다.

생명주기를 짧게 짧게 만들어서 요구사항을 조금씩 반영하는 순환구조를 만든다.
며칠에서 2~3주 기간을 잡는다고 한다.

이런 애자일 모델에서 필요해진게 CI/CD를 시작하게 되었다는 배경이 있다.

그래서 새로나온 개념이 DevOps임 개발부터 운영까지를 자동화하는 개념이 필요해졌다고 함

그러기위한 도구로
Jenkins
Ansible
Docker /Kubernetes

Code --> Kubernetes
-Git/Github
-Jenkins
-Ansible
-Docker Image
-Code (Java) - Tomcat (톰켓은 그냥 자바코드를 실행시켜주기위한 웹 컨테이너라고 하심)
이런식으로 구성을 하게 될것이다..

code를 package화 하는것을 CI라고 함

https://www.redhat.com/ko/topics/devops/what-is-ci-cd

Docker registry까지 올리는거를 Delivery라고 하심
아니면 패키지화해서 저장소에 apt나 yum pip등등으로 올리는 것을 Delivery라고 함

개발자가 git에 push를 하면 ci,cd가 되면서 서비스되는것까지.. 를 구축해야함


+모니터링

등등 개발자가 개발에 집중할 수 있도록 서포트하는거같음

Jenkins 는 Hudson에서 시작해서 상표권문제로 이름이 바뀐거임

결국엔 이런 구성들이 명령어를 실행함으로서 진행되는데 이 명령어실행을 대신해주는 것이 Jenkins라고 하심

Ubuntu에 패키지로 설치할것임 그리고 젠킨스는 Java로 되어있어서 Java11을 설치할 것임

https://pkg.jenkins.io/debian-stable/

apt search openjdk-11-jdk
apt install openjdk-11-jdk



https://plugins.jenkins.io/

다음장은 디폴트로 넘어감

vi .zshrc

JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64/

PATH=$PATH:$JAVA_HOME
source ~/.zshrc


save
start





구성에서 수정
buildNow에서 실행



Build Now 를 누를 때마다 실행하게 된다..

https://github.com/c1t1d0s7/source-java-maven-hello-world


Maven

pom.xf형태
자바 프로젝트 빌드 도구이다.
1. validate: 필요한 정보가 있는지 확인
2. compile: 소스코드 컴파일
3. test: 컴파일된 코드단위 테스트
4. package: JAR/WAR 파일로 생성
5. veryfy: 통합 테스트
6. install: 로컬 저장소에 배포
7. deploy: 원격 저장소에 배포

sudo apt install maven
mvn clean					#이전에 빌드된 정보를 지워줌
mvn package					#자바코드를 빌드해서 WAR파일로 만들어준다.


가장 핵심파일임
한번 더
mvn package하면 금방 끝나는데
매번 mvn clean을 해주고 해야한다.
mvn clean package로 실행하면 자동으로 지웠다가 패키지를 설치함


Maven에 관련된 환경변수 설정




체크하고 Install without restart 해주면 됨


소스코드는 가지고오고

Save하고 나옴


오류가 뜨지않음

메이븐 프로젝트 대쉬보드에서 만들고

깃 주소 넣어주고
브랜치는 main이고

apply하고 저장










작업공간 초기화를 하면 다 날아감
지금까지는 CI였음


웹서버와 웹애필리케이션서버의 차이

VM을 하나 더 추가..
나중에 앤서블, 도커, 쿠버네티스 등등 추가를 할 예정임..


Tomcat

tomcat9 tomcat9-admin




요게톰켓의 기본페이지

이게 문서 경로임







삭제

프리스타일로만 작업을 하면 명령어로만 작업을해서 너무 복잡하기 떄문에 플러그인의 도움을 받는것이다..

이건 톰켓서버를 관리하는 페이지

여기서 계정을 설정해주면 된다.

/etc/tomcat9/tomcat-user.xml

<role rolename="manager-gui"/>
        <role rolename="manager-script"/>
        <role rolename="manager-jmx"/>
        <role rolename="manager-status"/>
        <user username="admin" password="P@ssw0rd" roles="manager-gui, manager-script, manager-jmx, manager-status"/>


재시작해서 적용하고 확인
그럼에서 접속해서 초기페이지에서 tomcat에 webapp에 들어가면됨


Deploy to Container
인스톨 하기









apply, 저장

실패..



실패..

다시 빌드


여기에 풀린것임

작업공간이랑 모든 생성된파일들 지우고 다시 빌드 해보자


~~ 귀엽다..~~

빌드를 자동으로 트리거 하는것..
SCM Source contorl management

주기적으로 할 수 있음

apply

clone을 뜨고

이런식으로..



자동으로 커밋이 걸리는거 확인 가능





신기해신기해
다음시간에는 도커를 해볼것임
도커엔진에 컨테이너를 띄울것임
엔서블을 사용해서 쿠버네티스에 띄울것임


Docker를 이용

config.vm.define "docker" do |ubuntu|
		ubuntu.vm.box = "ubuntu/focal64"
		ubuntu.vm.hostname = "docker"
		ubuntu.vm.network "private_network", ip: "192.168.59.12"
		ubuntu.vm.provider "virtualbox" do |vb|
			vb.name = "docker"
			vb.cpus = 2
			vb.memory = 2000
		end
	end

https://docs.docker.com/engine/install/ubuntu/

우리나라에서는 Java를 많이 사용해서 알고 있어야한다..










안됨


슬러시를 붙여야함..



재시작 없이 설치 ㄱㄱ

도커 이미지 빌드는 다른 서버에서 해주는게 좋다

프로젝트 중지를 눌러서 일단 작동을하지 않게 함

새로운 프로젝트 만들어서...
깃헙 주소
/main


war파일들을 아티팩트라고 함..

젠킨스가 접속해야하는 시스템들을 관리해주는 것임



고급 눌러서..

패스워드인증으로 비밀번호: vagrant


여기로 아티팩트를 전송할 것이다.


하고 apply 저장


~는 제거하시길..



이렇게 디렉토리구조까지 받아오는걸 원치않는다면
remote prefix를 해주면 됨

도커파일을 저장소에 만들어야한다..




docker/Dockerfile
같은 디렉토리
해줘서 두 파일 다 받아오는걸로..

다시 구성에 들어가서


전송시키고 난 이후에 명령어를 실행시킬 수 있긴하다.
apply하고 저장
에러메시지


이렇게 하면 자세한 내용을 볼 수 있다.
apply 저장


아하
디렉토리 경로가 안맞아서 그랬던것임
실행을 무조건 홈디렉토리에서 하기때문에

#!/bin/bash
cd /home/vagrant/myweb
docker build -t myweb .
cd /home/vagrant/myweb; docker build -t myweb .



H를 하면 요령껏 편차를 둔다고 한다.


H**** => *****

포트 충돌이 일어남..
그래서 기존의 이미지를 지워주는 작업이 필요하다.
이게 멱등성의 문제임
앤서블을 이용해서 멱등성을 해결할 수 있음 !..

숙제) 한 번 솔루션을 만들어 보아라


1조
김건호 박능력 김대현 민현기 최지원

2조
신소희 김성미 성나영 강상구 홍성민

3조
도효주 선우지훈 전중석 오승우

4조
강재민 박민선 임재헌 박지연 김효진

5조
최성우 양경민 장현오 배지영 김지수

6월 3일까지 주제 선정해서 진행하기

6월9일에 맨토님들과 맨토링 멘토링 시간은 40일
6월 15일부터 8월9일까지

토요일에는 저녁에는 오프라인 강의실 이용불가
7월4일 오픈 예정
온오프라인 병행을 하기로 했다

줌이 공유된 화면으로 수업은 진행될 예정
6월 중순까지 온오프라인 원하는 수업일정을 생각해놓길 바람

마지막날은 오프라인으로 수료식을 하기도 한다. 같이 마무리하면 좋기는 하다.

평일에는 18시 이후 20시까지 가능
주말에는 멘토링만 09~18시 가능

0개의 댓글