2025-07-10 aws, docker, ansible

sso·2025년 7월 10일

AWS

목록 보기
23/34

젠킨스, 도커, 앤서블 인스턴스 실행

도커 인스턴스

sudo su - ansibleadmin
docker ps

앤서블 인스턴스

vi /opt/devopsjob/4glapp_container.yaml

---
- hosts: docker

  tasks:

   - name: stop docker container
     shell: docker stop tomcat0709-con
     ignore_errors: yes

   - name: rm docker container
     shell: docker rm tomcat0709-con
     ignore_errors: yes

   - name: rm docker image
     shell: docker rmi sohyun2223/tomcat0709
     ignore_errors: yes

   - name: create docker container
     shell: docker run -d --name tomcat0709-con --restart always -p 8081:8080 sohyun2223/tomcat0709

cd /opt/devopsjob
ansible-playbook 4glapp_container.yaml --check
ansible-playbook 4glapp_container.yaml
▲ 나는 오류남

젠킨스 웹으로 접속하여 등록하기

ansible-playbook /opt/devopsjob/4glapp_build.yaml;
sleep 20;
ansible-playbook /opt/devopsjob/4glapp_container.yaml;

그리고 젠킨스에서 빌드하여 확인

docker 인스턴스 종료

4gl-eks 인스턴스 생성 (마스터 노드와 통신할 수 있는 노드)

  • 퍼블릭
  • 보안그룹: default, 22번 포트

EKS

  • 컨트롤 플레인은 aws에서 관리
  • 워커 노드는 사용자가 관리

eks 인스턴스

sudo su -
hostnamectl set-hostname eks
exec bash
clear
aws --version

kubectl 설치

(수동으로 설치하겠음)

https://docs.aws.amazon.com/ko_kr/eks/latest/userguide/install-kubectl.html

1단계: kubectl가 설치되어 있는지 확인

kubectl version --client

2단계: 설치 또는 kubectl 업데이트(Linux(AMD64))
Kubernetes 1.33

curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/1.33.0/2025-05-01/bin/linux/amd64/kubectl

실행 권한을 적용

chmod +x ./kubectl

바이너리를 PATH의 폴더에 복사

mkdir -p HOME/bin && cp ./kubectl $HOME/bin/kubectl && export PATH=HOME/bin:$PATH

버전 확인

kubectl version --client

eksctl 설치

https://eksctl.io/installation/

리눅스는 unix 설치와 동일

설치를 확인하면 다양한 권한이 필요함
다 주기가 힘드니까 그냥 관리자 권한을 부여하기로함

이미 관리자 권한을 부여해놓은 역할이 있으므로 해당 역할을 eks 인스턴스에 부여

다음과 같이 설치를 진행하겠음

ARCH=amd64
PLATFORM=(uname -s)_ARCH

변수 설정

파일 다운로드

curl -sLO "https://github.com/eksctl-io/eksctl/releases/latest/download/eksctl_$PLATFORM.tar.gz"

압축 풀고 압축 파일 지우기

tar -xzf eksctl$PLATFORM.tar.gz -C /tmp && rm eksctl$PLATFORM.tar.gz

install -m 0755 /tmp/eksctl /usr/local/bin && rm /tmp/eksctl

eksctl version

eksctl을 활용하여 eks 클러스터 생성

vpc부터 생성되는데 vpc가 기존에 5개 이상부터 돈이 나가므로 만들어질 vpc 제외 4개까지만 존재해야함

eksctl create cluster --name 4gl0710 --region ap-northeast-2 --node-type t2.small

파란색으로 나오면 현재 만들어 지고 있는 중임

AWS에서 확인하면 새로운 VPC가 만들어진것을 확인할 수 있음

EKS에서 확인하니 클러스터가 만들어져있음
그런데 버전이 1.32로 되어있긴 하지만 문제 없음

kubectl get nodes
kubectl get pod -A

설치 완료 후 확인

쿠버네티스 파드?

https://kubernetes.io/ko/docs/concepts/workloads/pods/

kubectl apply -f https://k8s.io/examples/pods/simple-pod.yaml
kubectl get pod

작업을 다 해봤으니 이제 돈많이 나가니까 지우자...

필수 삭제!

클러스터 삭제
(자동으로 다 지워진다.. 휴!)

eksctl delete cluster 4gl0710 --region ap-northeast-2

도커: 도커 이미지로 컨테이너 생성 후 외부와 연결이 바로 됨
쿠버네티스: 도커 이미지로 파드 생성 - 디플로이먼트로 감싸서 가용성을 향상 - 서비스로 외부와 연결

외부 연결 부위(포트)는 로드 밸런서와 연결 후 인증서 추가 등의 보안을 유지시키면 구색을 갖춘 서비스가 완성된다고 할 수 있음


연구과제

Server B를 초기화 하시오.
이후 원하는 역할을 하나씩 가지고 3~4명의 팀원이 다음 구성을 완료하시오.

  1. 젠킨스 서버를 구성하여 상대방에게 코드 풀링 및 아티팩트 빌드, SSH 전송을 제공하시오.

  2. 앤서블 서버를 구성하고 도커 이미지 업로드 작업을 수행한 후 도커 서버 1번 및 도커 서버 2번에 도커 컨테이너 생성을 수행하시오.

  3. 도커 서버 1번으로서 앤서블 서버가 도커 컨테이너를 생성할 수 있도록 준비하시오.

  4. 도커 서버 2번으로서 앤서블 서버가 도커 컨테이너를 생성할 수 있도록 준비하시오.

개발자 역할은 임의의 팀원이 수행하고, GitHub의 코드가 자동으로 서버에 구성되도록 만드시오.

빌드 1회에 도커 서버 1번, 2번에 컨테이너가 생성되어 어플리케이션이 업로드되고 구동되도록 만드시오.

(도전 과제 : ECR까지 활용할 수 있도록 하시오.) / (모두 완료 시 역할을 바꾸어 수행)


해야하는것
1. 젠킨스, 앤서블, 도커 설치

젠킨스 설치는 아래 문서 참고하여 설치 진행
https://www.jenkins.io/doc/book/installing/linux/#red-hat-centos

젠킨스는 8080 포트를 사용하여 실행

dnf -y install wget

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-2023.key
yum install -y fontconfig java-17-openjdk-devel
yum install -y jenkins
yum systemctl daemon-reload
systemctl --now enable jenkins
firewall-cmd --add-port=8080/tcp --permanent && firewall-cmd --reload

젠킨스 플러그인 설치

github
maven integration
Deploy to container

서버에 git, maven 설치

dnf -y install git maven
git --version
mvn -v

cd
vi .bash_profile

M2_HOME=/opt/maven
M2=/opt/maven/bin
JAVA_HOME=/usr/lib/jvm/java-17-openjdk-17.0.15.0.6-2.el8.x86_64
PATH=$PATH:$M2

source .bash_profile
echo $PATH

java-17
/usr/lib/jvm/java-17-openjdk-17.0.15.0.6-2.el8.x86_64

mvn -v

maven-3.5.4
/usr/share/maven

mvn archetype:generate -DgroupId=com.4gl.app -DartifactId=4glapp -DarchetypeArtifactId=maven-archetype-webapp -DinteractiveMode=false

https://templatemo.com/

무료 html 템플릿 제공 사이트에서 아무거나 하나 다운로드 후 /root/4glapp/src/main/webapp/ 내에 압축 해제하여 넣기

cd /root/4glapp
git init
git add .
git commit -m "0710"
ssh-keygen -t ed25519
cat /root/.ssh/id_ed25519.pub

git remote -v
git remote remove origin
git remote add origin git@github.com:nohsohyun0128/4glmyapp.git
git push -f origin master

이제 젠킨스에서 아이템 만들어야 되는데 계속 오류뜸 못하겠다 ㅋ

profile
오늘도 하나씩 해결해 나가자!

0개의 댓글