Container/Kubernetes

[Kubernetes] 데브옵스 환경 구축

busylee 2024. 6. 24. 18:01
728x90
반응형
item name : 2121-deploy
Copy from : 2121-container-build

> 전체 설치 순서

 

 

> Vagrantfile로 설치 되는 내용

 

> 설치 시작

1. Vagrant 스크립트 실행

# Vagrant 폴더 생성
C:\Users\사용자> mkdir cicd
C:\Users\사용자> cd cicd

# Vagrant 스크립트 다운로드
C:\Users\사용자\cicd> curl -O https://raw.githubusercontent.com/k8s-1pro/install/main/ground/cicd-server/vagrant-2.3.4/Vagrantfile

# Rocky Linux Repo 세팅
C:\Users\사용자\cicd> curl -O https://raw.githubusercontent.com/k8s-1pro/install/main/ground/cicd-server/vagrant-2.3.4/rockylinux-repo.json
C:\Users\사용자\cicd> vagrant box add rockylinux-repo.json

# Vagrant Vbguest 및 Disk Plugin 설치 
C:\Users\사용자\cicd> vagrant plugin install vagrant-vbguest vagrant-disksize

# Vagrant 실행
C:\Users\사용자\cicd> vagrant up

 

 

2. CI/CD 서버 접속 ( root/vagrant )

 

3. Jenkins 초기 설정

- dashboard 접속 후 비밀번호 입력

http://192.168.56.20:8080/login

[root@cicd-server ~]# cat /var/lib/jenkins/secrets/initialAdminPassword

 

 

- 플러그인 설치

 

- admin 계정 생성

 

 

4. 전역 설정(JDK, Gradle)

 

 

- jdk, gradle 세팅

 

 

- jdk 설치경로를 찾아 입력

[root@cicd-server ~]# find / -name java | grep java-17-openjdk
/usr/lib/jvm/java-17-openjdk-17.0.11.0.9-2.el8.x86_64/bin/java  // -->> /bin/java 제외하고 복사

 

 

- gradle 설정 후 save

 

 

 

5. Dockerhub 계정 생성

https://hub.docker.com/signup

* 컨테이너 이미지 명으로 1pro/app-tester가 <Username>/app-tester 이렇게 바뀝니다.

 

 

6. Docker 사용 설정

# jeknins가 Docker를 사용할 수 있도록 권한 부여
[root@cicd-server ~]# chmod 666 /var/run/docker.sock
[root@cicd-server ~]# usermod -aG docker jenkins

# Jeknins로 사용자 변경 
[root@cicd-server ~]# su - jenkins -s /bin/bash

# 자신의 Dockerhub로 로그인 하기
[jenkins@cicd-server ~]$ docker login
Username: 
Password:

* 자신의 Docker Hub Username Password 입력

아래 그림처럼 Login Succeeded 결과 확인

 

 

 

7. Master Node에서 인증서 복사

- CI/CD 서버에서 SCP 명령으로 인증서 가져오기

* Master Node의 VM은 실행 중인 상태여야 합니다.

* root가 아닌 Jenkins 유저 상태에서 작업 해주세요.

# 폴더 생성
[jenkins@cicd-server ~]$ mkdir ~/.kube

# Master Node에서 인증서 가져오기
[jenkins@cicd-server ~]$ scp root@192.168.56.30:/root/.kube/config ~/.kube/

 

- 인증서 가져오기 실행 후 [fingerprint] yes[password] vagrant 입력

 

 

8. GitHub 가입

https://github.com/signup

 

* https://github.com/k8s-1pro/kubernetes-anotherclass-sprint2 -> https://github.com/<username>/kubernetes-anotherclass-sprint2

 

- source 복사

https://github.com/k8s-1pro/kubernetes-anotherclass-sprint2

 

- Deployment yaml 파일 수정

* 1pro를 입력하지 마시고 자신의 DockerHub Username 입력해 주세요.

 

 

 

- 가끔씩 Sync fork 확인

 

9. 빌드/배포 스크립트 작성 및 실행

- jar build 프로젝트 생성 및 실행

 

 

Project url : https://github.com/k8s-1pro/kubernetes-anotherclass-api-tester/

 

 

Repository URL : https://github.com/k8s-1pro/kubernetes-anotherclass-api-tester.git
Branch Specifier : */main

 

Gradle Version : gradle-7.6.1
Tasks : clean build

 

 

# jar 파일 확인
[jenkins@cicd-server ~]$ ll /var/lib/jenkins/workspace/2121-source-build/build/libs
-rw-r--r--. 1 jenkins jenkins 19025350 Oct 19 11:19 app-0.0.1-SNAPSHOT.jar
-rw-r--r--. 1 jenkins jenkins    16646 Oct 19 11:19 app-0.0.1-SNAPSHOT-plain.jar

 

 

 

- 컨테이너 빌드 : docker

 

item name : 2121-container-build

 

 

# <Your-Github-Uesrname> 에 본인의 github username 적기
Project url : https://github.com/<Your-Github-Uesrname>/kubernetes-anotherclass-sprint2/

 

 

Repository URL : https://github.com/<Your-Github-Uesrname>/kubernetes-anotherclass-sprint2.git
Branch Specifier : */main

 

 

 

Path : 2121/build/docker

 

 

# jar 파일 복사
cp /var/lib/jenkins/workspace/2121-source-build/build/libs/app-0.0.1-SNAPSHOT.jar ./2121/build/docker/app-0.0.1-SNAPSHOT.jar

# 도커 빌드
docker build -t <Your_DockerHub_Username>/api-tester:v1.0.0 ./2121/build/docker
docker push <Your_DockerHub_Username>/api-tester:v1.0.0

 

 

 

# Dockerfile 내용확인
cat /var/lib/jenkins/workspace/2121-container-build/2121/build/docker/Dockerfile

 

FROM openjdk:17
COPY ./app-0.0.1-SNAPSHOT.jar /usr/src/myapp/app.jar
ENTRYPOINT ["java", "-Dspring.profiles.active=${spring_profiles_active}", "-Dapplication.role=${application_role}", "-Dpostgresql.filepath=${postgresql_filepath}", "-jar", "/usr/src/myapp/app.jar"]
EXPOSE 8080
WORKDIR /usr/src/myapp

 

 

- 배포하기 : kubectl

 

 

item name : 2121-deploy
Copy from : 2121-container-build

 

 

Path : 2121/deploy/k8s

 

 

kubectl apply -f ./2121/deploy/k8s/namespace.yaml
kubectl apply -f ./2121/deploy/k8s/pv.yaml
kubectl apply -f ./2121/deploy/k8s/pvc.yaml
kubectl apply -f ./2121/deploy/k8s/configmap.yaml
kubectl apply -f ./2121/deploy/k8s/secret.yaml
kubectl apply -f ./2121/deploy/k8s/service.yaml
kubectl apply -f ./2121/deploy/k8s/hpa.yaml
kubectl apply -f ./2121/deploy/k8s/deployment.yaml

 

 

 

 

- Dashoboard 확인

 

 

- Pod Error 과제

기본 설정으로 진행하면 path "/root/k8s-local-volume/2121" does not exist 다음과 같은 에러가 나온다.

k8s 노드에 접속하여 해당 경로를 생성하면 해결.

728x90
반응형