- 도메인주소도 업데이트해준다.
- 개발자가 개인 git환경에서 개발한다.
- 완성본을 github에 push하게 되면, jenkins에서 리스너로 확인하여 변화가 있으면 코드를 Pull한다.
- Poll(여론조사), Poll SCM으로 설정했다.
- 그러나 Jenkins에서는 Build기능이 없다. Jenkins에서 Maven API를 사용해 빌드해준다.
- Maven에서 WAR파일로 빌드해주면, Tomcat에서 최종적으로 Deployment 해준다.
- 이름: dev-site
- 퍼블릭으로 올려야 다른 팀원과 같이 작업할 수 있다.
- gitbash를 켜준다.
mkdir git-migration
git clone --mirror https://github.com/jo1132/hello-world.git git-migration
cd git-migration/
git push -uf http://gitlab.cocudeny.shop/cocudeny/dev-site --all
- 잘 push되고 있다.
- master 브랜치에 잘 올라가있다.
만약 Permission때문에 Branch에러가 난 경우
- 다음과같이 Unprotected Branch설정을 해준다.
#!bin/bash
timedatectl set-timezone Asia/Seoul
hostnamectl set-hostname jenkins-server
sudo su -
- root계정으로 이동
wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
- Repository설정
rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
- jenkins 설치에 대한 key를 가져와야 한다.
- 우린 수상한 사용자가 아니라는 키
yum install -y fontconfig java-11-openjdk
- 친절하게 java-openjdk11을 추가 설치하는 코드를 보여준다.
- 이후에는 이 코드를 사용자데이터에 추가할 수 있다.
amazon-linux-extras install -y java-openjdk11
yum install -y jenkins git
- 젠킨스 설치
- 오래 걸리기 때문에, 사용자데이터에 넣기는 힘들 것이다.
- git도 같이 설치해준다.
systemctl enable --now jenkins
- jenkins를 기동시킨다.
- jenkins초기 비밀번호가 존재하는 폴더가 이때 생성된다.
- 그래서 이러한 과정이 필요하기 때문에 시간이 오래걸리게된다.
- cat /var/lib/jenkins/secrets/initialAdminPassword # 젠킨스 임시 패스워드
Jenkin 페이지에 접속
- 도메인주소로 접속하니 아무것도 안나온다.
ss -ant
명령어를 입력하면 현재*:8080
으로 접근을 받고있다.
- 8080를 붙혀주니 접속되었다.
- 아래 임시 비밀번호를 입력해 들어가준다.
- 플러그인을 우리가 직접 설치할 것이기 때문에 x로 나가준다.
- 시작해준다.
- 먼저 비밀번호를 바꿔줘야한다.
- admin -> 설정으로 가서 변경해준다.
- 비밀번호 변경하며, 타임존도 맞춰준다.
프로젝트 생성
- HelloWorldJob로 프로젝트를 만들어준다.
설명
- 나중에는 넣지 않겠지만, 지금은 설명을 간단하게 추가해본다.
Build
- Excute shell으르 추가해주고, 명령어를 넣어준다.
echo "Hello World" uptime ip a
프로젝트 빌드
- 지금빌드를 한번만 눌러 실행해준다.
- 코드가 간단해 바로 빌드되었다.
http://gitlab.cocudeny.shop/cocudeny/dev-site.git
버전확인
- 최신버전은 3.8.6으로 되어있다.
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
tar.gz
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
- Maven 플러그인을 철치해준다.
Global Tool Configuration
- 여기서 java설치할 때의 이름, jdk의 버전명을 넣어주고, JAVAHOME을 입력해준다.
- 만약 버전이 달라진다면, 그 버전명과 JAVAHOME을 맞춰줘야 한다.
- Maven도 설정해준다.
- Maven의 폴더명을 넣어준다.
- Maven활용 프로젝트를 생성해준다.
General
소스코드관리
Build
Apply and Save
지금빌드
- Success!
- 잘 빌드됬다.
#!bin/bash
timedatectl set-timezone Asia/Seoul
hostnamectl set-hostname jenkins-server
sudo su
hostnamectl set-hostname tomcat-server
amazon-linux-extras install -y java-openjdk11
- 자바 설치
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
- tar파일 압축 해제
mv apache-tomcat-9.0.65 tomcat
- 폴더 이름을 줄여준다.
cd tomcat/bin
- 실행파일 폴더로 이동
./startup.sh
: tomcat을 부팅하는 명령어이다.
- Tomcat도 역시 8080포트에서 열려있다.
Tomcat 페이지 접근
- 8080포트를 붙혀 접근하면 페이지가 나온다.
- 여기서 Manage App에 403에러가 나온다.
context.xml파일 수정
find / -name context.xml
- context.xml파일을 찾는다.
- 먼저
/opt/tomcat/webapps/host-manager/META-INF/context.xml
를 수정한다.vi /opt/tomcat/webapps/host-manager/META-INF/context.xml
vi /opt/tomcat/webapps/manager/META-INF/context.xml
Manage App
- context수정 후, Manage App에 들어가면 로그인할 수 있다.
Tomcat 계정 추가하기
- 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계정으로 로그인하니 들어갈 수 있다.
Tomcat up/down명령어 단축
ln -s /opt/tomcat/bin/startup.sh /usr/local/bin/tomcatup
ln -s /opt/tomcat/bin/shutdown.sh /usr/local/bin/tomcatdown
Jenkins에서 Tomcat 플러그인설치
Tomcat Credential
프로젝트 생성
General
Git
Build
Build 후 조치
- 모든 경로, 모든 이름의 war파일을 의미한다.
Build후 조치 아래에 Containers를 추가
- Tomcat 9.X Remote를 추가해준다.
- Credentail은 deployer의 계정을 넣어주고, Tomcat URL에 Tomcat-server 주소를 올려준다.
확인
- 페이지가 잘 나온다.
git clone -b master http://gitlab.cocudeny.shop/cocudeny/dev-site.git
master
이다. 그래서 -b
브랜치옵션을 주고 master만 찾아 clone한다.빌드 유발
- PollSCM에 체크해준다.
* * * * *
를 안에 Schedule에 넣어준다.
- 는 리스닝하는 간격을 지정하는데, 다섯개는 최소시간 1분을 뜻한다.
- 각 *들은 띄어쓰기로 구별되어있어야 한다.
- 빌드를 누르지 않았는데, 자동으로 빌드가 시작되었다.
Import
네트워크
- 첫번째 랜카드는 NAT로 한다.
- NAT는 수신전용 랜카드라고 생각할 수 있다.
- AWS에서 VPC를 보면, NAT게이트웨이와 송신전용 인터넷 게이트웨이가 있다.
- 여기서 NAT게이트웨이는 트래픽을 수신할 때 사용하는 게이트웨이이고, 송신전용인터넷 게이트웨이는 송신전용 인터넷 게이트웨이라고 할 수 있다.
- 두번째 랜카드는 호스트 전용 어댑터로 해준다.
- 호스트PC와 통신하기 위한 전용 어댑터 랜카드이다.
추가
- site-to-site VPN도 VPN연결할 수 있고, Trainsit Gateway도 VPN을 연결할 수 있다.
- 그런데 왜 site-to-site VPN을 사용하는가?
- sts VPN이 더 저렴하다. Trainsit Gateway는 더 비싸지만 다양한 기능을 지원한다.
- 피어링 연결도 있다. IP대역이 다른 영역끼리 연결하는 것이 피어링 연결이다.
- 그러나 Trainsit Gateway는 피어링 연결도 해줄 수 있다.
- VPC내의 통신 게이트웨이들의 역할을 어느정도 넓게 사용할 수 있는 것이 Trainsit Gateway이다.
공통
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
- swap은 디스크공간의 일부를 메모리가 부족할 떄, 메모리를 대체해서 사용하는 공간이다.
sed -i '/ swap / s/^/#/' /etc/fstab
- fstab에서 swap이라는 문구 앞에 #을 넣어 주석처리하겠다.
cat <<EOF > /etc/sysctl.d/k8s.conf net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 EOF
- /etc/sysctl.d/k8s.conf라는 파일 안에 내용을 넣는 방법이다.
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
- repository를 설정한다.
yum -y install kubeadm-1.19.16-0 kubelet-1.19.16-0 kubectl-1.19.16-0 --disableexcludes=kubernetes
systemctl enable kubelet