0729[CI/CD;gtilab,jenkins,tomcat]

망지·2022년 7월 29일
0

📌Gitlab

📙 인스턴스 재시작

어제 중단해두었던 GCP서버(gitlab)시작 후 IP확인 -> 확인 결과 바뀌지 않음 그대로 진행.
-> 도메인으로 gitlab 진입하기

📙 (NEW)마이그레이션 방법 - git hub->git lab

root아닌 사용자계정에서 진행
git hub repository - gitbash (win) - git lab

✔️ 메뉴 - create new project -create blank project

✔️ 프로젝트 이름 : dev-site
Visibility Level : public
create project

✔️ git bash 열어서 아래 명령어 진행

r2com@DESKTOP-DD3FU43 MINGW64 ~
$ mkdir git-migration

r2com@DESKTOP-DD3FU43 MINGW64 ~
$ git clone --mirror https://github.com/mangjini/hello-world.git git-migration


미러 명령어로 인해 폴더에도 내용이 들어온 모습 확인 가능.

r2com@DESKTOP-DD3FU43 MINGW64 ~
$ cd git-migration/

r2com@DESKTOP-DD3FU43 MINGW64 ~/git-migration (BARE:master)
$ ls
HEAD  config  description  hooks/  info/  objects/  packed-refs  refs/

✔️ git lab에서 master브랜치 추가

✔️branch protect 해제
git lab 프로젝트 설정 - repository setting - Protected branches expand - main Unprotect

✔️다시 git hub에서 아래 명령어 진행.

r2com@DESKTOP-DD3FU43 MINGW64 ~/git-migration (BARE:master)
$ git push -uf http://gitlab.lovemj.shop/mangji/dev-site --all

git lab에서 마이그레이션 확인

📌 jenkins

📙 jenkins 서버 생성

이름 : jenkins-server
키페어 : 생성해둔 키페어
VPC:MY-VPC
서브넷 : PUBLIC-2A
보안그룹 : 기존보안그룹 ; DEV-SG
고급세부정보; 사용자데이터

#!/bin/bash
timedatectl set-timezone Asia/Seoul

나머지 default, 인스턴스 시작.

📙 생성한 인스턴스의 퍼블릭 IP에 도메인 할당(route53)

📙 서버에 jenkins 설치

mobaxterm으로 CLI환경 진입
✔️ 아래 설치 명령어 진행

$ sudo su -
# wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo ## 저장소 가져오기
# rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key ## 저장소 검증을 위한 키 가져오기 
# yum install -y fontconfig java-11-openjdk
# amazon-linux-extras install -y java-openjdk11
# yum install -y jenkins
# systemctl enable --now jenkins
# hostnamectl set-hostname jenkins-server
# exit
# sudo su -
# yum install -y git
# cat /var/lib/jenkins/secrets/initialAdminPassword ## 패스워드 수정하기위한 임시패스워드 확인

📙 웹브라우저에서 Jenkins 설정

✔️ 웹브라우저로 jenkins 접속 - http://도메인:8080 ; unlock Jenkins(임시 패스워드 입력)

✔️ getting started 오른쪽 상단 X , start using jenkins

✔️ 비밀번호 변경 , timezone 설정하기
admin- 설정 - 패스워드 입력 - 맨 하단 Timezone: Asia/Seoul - Apply , Save - ID:admin, 재설정한 패스워드로 로그인

📙 build연습 1

✔️ 왼쪽메뉴에서 새로운 ITEM -name: HelloWorldJob-Freestyle project- ok - 설명 : 안녕하세요 - build 드랍다운 - excute shell ; command :

echo "Hello world"
uptime
ip a
  • apply , 저장

✔️ 왼쪽메뉴 지금 빌드 클릭 - build history - #1 클릭 - console output

📌 jenkins와 gitlab 연동

📙 jenkins 플러그인 설치

✔️ jenkins - 대시보드 - jenkins 관리 - 플러그인 관리 - 설치가능 탭 클릭 -gitlab 검색 - Gitlab 체크하고 install without restart

✔️ jenkins 관리 - Global Tool Configuration - Git - Name : Git -Path to Git executable : git - Apply, Save

📙 빌드

✔️ 왼쪽메뉴에서 새로운 ITEM -name: PullCodeFromGitLab-Freestyle project- ok - 설명 : GitLab에서 코드 가져오기

✔️ 소스코드 관리 : Git 선택 - Repository URL :

✔️ apply , 저장 - 지금 빌드 - #1 클릭 - CONSOL OUTPUT-


이 경로로 잘 연동 되었는지 확인

[root@jenkins-server ~]# ll /var/lib/jenkins/workspace/PullCodeFromGitLab
total 28
-rw-r--r-- 1 jenkins jenkins  130 Jul 29 10:49 Dockerfile
-rw-r--r-- 1 jenkins jenkins 5970 Jul 29 10:49 pom.xml
-rw-r--r-- 1 jenkins jenkins    1 Jul 29 10:49 README.md
-rw-r--r-- 1 jenkins jenkins  479 Jul 29 10:49 regapp-deploy.yml
-rw-r--r-- 1 jenkins jenkins  195 Jul 29 10:49 regapp-service.yml
drwxr-xr-x 3 jenkins jenkins   32 Jul 29 10:49 server
-rw-r--r-- 1 jenkins jenkins    6 Jul 29 10:49 test.tml
drwxr-xr-x 3 jenkins jenkins   32 Jul 29 10:49 webapp

📌 jenkins와 maven 연동

jenkins,maven,gitlab

📙 maven 설치 (jenkins EC2)

✔️mobaxterm에서 아래 명령어 진행

# cd /opt
# wget https://dlcdn.apache.org/maven/maven-3/3.8.6/binaries/apache-maven-3.8.6-bin.tar.gz
# tar -xvzf apache-maven-3.8.6-bin.tar.gz
# mv apache-maven-3.8.6 maven
# cd maven
# cd bin
# ls
# cd ~
# find / -name java-11* ## java 경로 확인
# vi .bash_profile
M2_HOME=/opt/maven
M2=/opt/maven/bin
JAVA_HOME=/usr/lib/jvm/java-11-openjdk-11.0.13.0.8-1.amzn2.0.3.x86_64
# User specific environment and startup programs
PATH=$PATH:$HOME/bin:$JAVA_HOME:$M2_HOME:$M2

# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

# source .bash_profile ## bash_profile 수정사항적용

# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/root/bin:/usr/lib/jvm/java-11-openjdk-11.0.13.0.8-1.amzn2.0.3.x86_64:/opt/maven:/opt/maven/bin

# mvn -v

📙 jenkins와 maven연결

✔️ jenkins GUI에서 플러그인 설치
dashboard - jenkins 관리 - 플러그인 관리 - 설치 가능 - maven 검색 - maven integration 체크 - install without restart

✔️ dashboard - jenkins 관리 - global tool configuration - JDK(JAVA development kit) - Add JDK -Name : java-11 - JAVA_HOME: /usr/lib/jvm/java-11-openjdk-11.0.13.0.8-1.amzn2.0.3.x86_64 - 하단으로 내려서 Maven - Add Maven - Name : maven-3.8.6 - install automatically 체크 해제 (이미 customize로 설치하였음) - MAVEN_HOME : /opt/maven - apply, save

📙 빌드

✔️ 왼쪽메뉴에서 새로운 ITEM -name: FirstMavenProject-Maven project- ok - 설명 : 첫번째 메이븐 프로젝트 - 소스코드 관리 : Git - URL: http://gitlab.lovemj.shop/mangji/dev-site.git (gitlab URL) [gitlab repository를 퍼블릭으로 만들었기 때문에 크리덴셜 필요 없음] - Build ; Goals and options : clean install [기존 것이 있으면 삭제하고 설치하겠다.] - apply, 저장

✔️ 지금 빌드 - #1 - 확인

✔️ 대시보드 - FirstMavenProject 화면 - 작업공간
->제대로 연동되었는지 확인 가능

어제 넣어둔 부트스트랩 파일들 확인 가능 .

📌 Tomcat

📙 tomcat EC2 생성

이름 : tomcat-server
키페어 : 생성해둔 키페어
VPC:MY-VPC
서브넷 : PUBLIC-2C
보안그룹 : 기존보안그룹 ; DEV-SG
고급세부정보; 사용자데이터

#!/bin/bash
timedatectl set-timezone Asia/Seoul

나머지 default, 인스턴스 시작.

📙 생성한 인스턴스의 퍼블릭 IP에 도메인 할당(route53)

📙 서버에 tomcat 설치

mobaxterm으로 CLI환경 진입

$ sudo su -
# hostnamectl set-hostname tomcat-server
# exit
$ sudo su -
# amazon-linux-extras install -y java-openjdk11
# cd /opt

google에서 tomcat 9 download 검색해서 버전정보 확인하기

tar.gz 우클릭 , 링크주소 복사

# wget https://dlcdn.apache.org/tomcat/tomcat-9/v9.0.65/bin/apache-tomcat-9.0.65.tar.gz
# tar -xvzf apache-tomcat-9.0.65.tar.gz
# mv apache-tomcat-9.0.65 tomcat
# cd tomcat/bin/
# ./startup.sh

start확인

📙 manager app 탭 접근제어 해제하기

처음상태

# cd /opt/tomcat
# find / -name context.xml
# vi /opt/tomcat/webapps/host-manager/META-INF/context.xml ##접근제어 주석처리 해주기
<!--  <Valve className="org.apache.catalina.valves.RemoteAddrValve"
         allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" /> -->
         
# vi /opt/tomcat/webapps/manager/META-INF/context.xml ## 접근제어 주석처리 해주기
<!--  <Valve className="org.apache.catalina.valves.RemoteAddrValve"
         allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" /> -->
         

접근제어 해제 완료

아래명령어는 해줘도 되지만 안해줘도 접근제어 해제 됨.

# cd bin/
# ./shutdown.sh
# ./startup.sh

📙 role, username 설정

# /opt/tomcat/conf
# vi /opt/tomcat/conf/tomcat-users.xml
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<role rolename="manager-jmx"/>
<role rolename="manager-status"/>
<user username="admin" password="kosa0401" roles="manager-gui, manager-script, manager-jmx, manager-status"/>
<user username="deployer" password="kosa0401" roles="manager-script"/>
<user username="tomcat" password="kosa0401" roles="manager-gui"/>

아래와 같이 하단에 붙여줌.

저장하고 나오면 ,
아래 사용자 이름에 admin으로 로그인 가능해짐.

📙 start, shutdown 간소화

# ln -s /opt/tomcat/bin/startup.sh /usr/local/bin/tomcatup
# ln -s /opt/tomcat/bin/shutdown.sh /usr/local/bin/tomcatdown

# tomcatdown

# tomcatup

📌 Jenkins, Tomcat, Maven, GitLab

📙 Jenkins - tomcat 셋팅

✔️ jenkins - 대시보드 - jenkins 관리 - 플러그인 관리 - 설치가능 탭 클릭 - deploy to container 검색 - deploy to container 체크하고 install without restart

✔️ jenkins - 대시보드 - jenkins 관리 - Manage Credentials - Store ; Jenkins 클릭 - Global credentials 클릭

Add credentials 클릭

username: deployer , password 입력 , ID: tomcat_deployer - create

📙 빌드

✔️ 대시보드 - 왼쪽메뉴에서 새로운 ITEM -name: BuildAndDeployjob- maven project- ok
✔️설명 : 메이븐으로 코드를 빌드하고 톰캣서버로 배포하자
✔️소스코드 관리 : Git
-URL: http://gitlab.lovemj.shop/mangji/dev-site.git
✔️Build ; Goals and options : clean install
✔️빌드 후 조치 : Deploy war/ear to a container
WAR/EAR files : **/*.war
Add Container 드랍다운 - tomcat 9.x remote - Credential 드랍다운 - deployer/**** - Tomcat URL : http://tomcat.lovemj.shop:8080/

-apply, 저장

✔️ 지금 빌드 - #1

✔️ 톰캣 manager app에서 확인

📙 gitbash-소스코드 고쳐보기

✔️ git bash에 git lab리포지토리(branch-master) 내용물 가져오기

r2com@DESKTOP-DD3FU43 MINGW64 ~
$ git clone -b master http://gitlab.lovemj.shop/mangji/dev-site.git
Cloning into 'dev-site'...
remote: Enumerating objects: 568, done.
remote: Total 568 (delta 0), reused 0 (delta 0), pack-reused 568
Receiving objects: 100% (568/568), 800.63 KiB | 27.61 MiB/s, done.
Resolving deltas: 100% (157/157), done.

r2com@DESKTOP-DD3FU43 MINGW64 ~
$ cd dev-site/webapp/src/main/webapp/

r2com@DESKTOP-DD3FU43 MINGW64 ~/dev-site/webapp/src/main/webapp (master)
$ ls
WEB-INF/  css/     images/    index.jsp.bak  js/
assets/   gcp.tar  index.jsp  index.jsp.old  test.txt

r2com@DESKTOP-DD3FU43 MINGW64 ~/dev-site/webapp/src/main/webapp (master)
$ vi index.jsp

📙 업데이트

r2com@DESKTOP-DD3FU43 MINGW64 ~/dev-site/webapp/src/main/webapp (master)
$ git add index.jsp

r2com@DESKTOP-DD3FU43 MINGW64 ~/dev-site/webapp/src/main/webapp (master)
$ git commit -m "mangji"
[master cf6f83e] mangji
 1 file changed, 1 insertion(+), 1 deletion(-)

r2com@DESKTOP-DD3FU43 MINGW64 ~/dev-site/webapp/src/main/webapp (master)
$ git push -uf origin master

📙 jenkins-수정한 내용 빌드

대시보드 - BuildAndDeployjob - 지금 빌드

📙 자동으로 빌드

대시보드 - BuildAndDeployjob - 구성 - 빌드 유발 - poll SCM 체크 - Schedule : * * * * * - apply -저장

✔️ 자동 빌드 확인하기 위해 또 내용 수정하기

r2com@DESKTOP-DD3FU43 MINGW64 ~/dev-site/webapp/src/main/webapp (master)
$ git add index.jsp

r2com@DESKTOP-DD3FU43 MINGW64 ~/dev-site/webapp/src/main/webapp (master)
$ git commit -m "new"


r2com@DESKTOP-DD3FU43 MINGW64 ~/dev-site/webapp/src/main/webapp (master)
$ git push -uf origin master

자동 확인

변경 내용 확인

📌 쿠버네티스

📙 VM virtualbox- centos7

✔️파일 - 가상시스템 가져오기 - centos7.ova - CPU: 2, RAM 4G, -DVD,USB 해제 - 가져오기
✔️ 해당 서버 선택 - 설정 - 네트워크 - NAT네트워크 - 어댑터1 : NATNetWor이름: NatNetwork (다같이 강의실 환경이라 브릿지 이용X 혼자하거나 프로젝트할 때 브릿지 사용하자) - 어댑태2: 호스트 전용 어댑터
-시작

IP : 192.168.56.106

# curl https://download.docker.com/linux/centos/docker-ce.repo -o /etc/yum.repos.d/docker-ce.repo
# sed -i -e "s/enabled=1/enabled=0/g" /etc/yum.repos.d/docker-ce.repo
# yum --enablerepo=docker-ce-stable -y install docker-ce-19.03.15-3.el7
# mkdir /etc/docker
# cat <<EOF | sudo tee /etc/docker/daemon.json
{
  "exec-opts": ["native.cgroupdriver=systemd"],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m"
  },
  "storage-driver": "overlay2"
}
EOF
# systemctl enable --now docker
# systemctl daemon-reload
# systemctl restart docker
# systemctl disable --now firewalld
# setenforce 0
# sed -i 's/^SELINUX=enforcing$/SELINUX=disabled/' /etc/selinux/config

# swapoff -a
# sed -i '/ swap / s/^/#/' /etc/fstab

# cat <<EOF > /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF

# sysctl --system
# reboot

# cat <<'EOF' > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-$basearch
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
EOF

# yum -y install kubeadm-1.19.16-0 kubelet-1.19.16-0 kubectl-1.19.16-0 --disableexcludes=kubernetes
# systemctl enable kubelet

📙 ✔️✏️📢⭐️📌

🎸 기타

⭐️ 포트번호 확인 명령어

# ss -ant

⭐️ git 특정 브랜치 clone

git clone -b master http://gitlab.lovemj.shop/mangji/dev-site.git
profile
꾸준히, 차근차근

0개의 댓글