손쉽게 데브옵스 환경을 구축하는 방법

appti·2024년 4월 10일
0

쿠버네티스 인강

목록 보기
10/15

서론

해당 글은 일프로 님의 인프런 강의 쿠버네티스 어나더 클래스 (지상편) - Sprint 1, 2의 내용을 정리한 글입니다.

해당 글에 사용된 내용, 사진 및 그림은 모두 강의와 강의 자료에 포함된 내용입니다.

전체 설치 순서

설치 실습

사전 준비

  • Virtualize 선택

  • Linux 선택

  • Rocky Linux iso 선택

  • 메모리 2048MB, CPU Cores 2

  • 스토리지 크기 32GB

  • 공유 폴더 선택 안함

  • 이름 cicd-server으로 설정

  • Rocky Linux 설치

  • 한국어 선택

  • 사용자 설정 - root 비밀번호 선택

  • root가 비밀번호로 SSH 로그인하도록 허용 체크

  • 시스템 - 설치 목적지 선택

  • 자동 설정 체크

  • 시스템 - 네트워크와 호스트 이름 선택

  • IPv4설정 - Method 수정
  • 다음과 같은 항목 추가
    • 주소 : 192.168.56.20
    • 넷마스크 : 255.255.255.0
    • 게이트웨이 : 192.168.56.1

  • 호스트 이름 cicd-server로 변경

  • 설치 시작

  • 시스템 재시작 선택

  • 강제 종료

  • CD/DVD 초기화
ssh root@192.168.56.20
  • SSH 접속
# 패키지 업데이트 
yum -y update

# 타임존 설정
timedatectl set-timezone Asia/Seoul

# 방화벽 해제
systemctl stop firewalld && systemctl disable firewalld

# 쿠버네티스 레포지토리 설정
cat <<EOF | sudo tee /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://pkgs.k8s.io/core:/stable:/v1.27/rpm/
enabled=1
gpgcheck=1
gpgkey=https://pkgs.k8s.io/core:/stable:/v1.27/rpm/repodata/repomd.xml.key
exclude=kubelet kubeadm kubectl cri-tools kubernetes-cni
EOF

# kubectl 설치 
yum install -y kubectl-1.27.2-150500.1.1.aarch64 --disableexcludes=kubernetes

# 도커 설치 
yum install -y yum-utils
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum install -y docker-ce-3:23.0.6-1.el9.aarch64 docker-ce-cli-1:23.0.6-1.el9.aarch64 containerd.io-1.6.21-3.1.el9.aarch64
systemctl daemon-reload
systemctl enable --now docker

# 자바 17 설치
yum install -y java-17-openjdk

# Gradle 설치 
yum -y install wget unzip
wget https://services.gradle.org/distributions/gradle-7.6.1-bin.zip -P ~/
unzip -d /opt/gradle ~/gradle-*.zip
cat <<EOF |tee /etc/profile.d/gradle.sh
export GRADLE_HOME=/opt/gradle/gradle-7.6.1
export PATH=/opt/gradle/gradle-7.6.1/bin:${PATH}
EOF
chmod +x /etc/profile.d/gradle.sh
source /etc/profile.d/gradle.sh

# git 설치
yum install -y git-2.39.3-1.el9_2

# jenkins 설치
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 java-11-openjdk jenkins-2.414.2-1.1
systemctl enable jenkins
systemctl start jenkins
  • jenkins 설치
# 권한 부여
chmod 666 /var/run/docker.sock

# 유저 추가
usermod -aG docker jenkins

# 유저 변경
su - jenkins -s /bin/bash

# DockerHub 로그인
docker login
  • 도커 설정 및 DockerHub 로그인
http://192.168.56.20:8080/login
  • jenkins 대시보드 접속

cat /var/lib/jenkins/secrets/initialAdminPassword
  • jenkins 임시 비밀번호 입력

  • Install Suggested Plugins 선택

  • admin 계정 설정

  • jenkins URL 설정

  • jenkins 설정 완료

  • Jenkins 관리 - Tools 선택

find / -name java | grep java-17-openjdk
  • jdk 경로 설정

/opt/gradle/gradle-7.6.1
  • gradle 경로 설정
# 디렉토리 생성
mkdir ~/.kube

# 마스터 노드에서 인증서 복사 
scp root@192.168.56.30:/root/.kube/config ~/.kube/
  • 쿠버네티스 인증서 복사

  • CI/CD 서버에서 kubectl 동작 확인
https://github.com/k8s-1pro/kubernetes-anotherclass-sprint2
  • 해당 깃허브 레포지토리 fork

  • 2121/deploy/k8s/deployment.yaml 내용 수정
    • spec.template.spec.containers.image에 DockerHub username 변경

프로젝트 생성

2121-source-build

  • freestyle project 생성
    • 프로젝트 이름 : 2121-source-build

  • github project url 설정

  • 소스 코드 관리 설정

  • Build Steps 설정

  • 해당 프로젝트가 정상적으로 동작하는지 확인
    • gradle clean build를 수행했으므로 jar 파일 생성

2121-container-build

  • freestyle project 생성
    • 프로젝트 이름 : 2121-container-build

  • github project url 설정

  • 소스 코드 관리 설정

# 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
  • Build Steps 설정

cat /var/lib/jenkins/workspace/2121-container-build/2121/build/docker/Dockerfile

  • 해당 프로젝트가 정상적으로 동작하는지 확인

2121-deploy

  • 2121-container-build 복사

  • 소스 코드 관리 변경

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
  • Build Steps 변경

  • 프로젝트 정상 동작 확인

과제

  • 파드가 정상적으로 실행되지 않는 상황

  • ContainerCreating 상태에서 진행되지 않는 것을 확인

  • Deployment, ReplicaSet 로그 확인 시 볼륨이 정상적으로 마운트되지 않는 것을 확인

  • deployment, pv에서 볼륨 디렉토리 관련 설정 확인
mkdir /root/k8s-local-volume/2121

  • 마스터 노드에 볼륨으로 사용할 디렉토리 추가

  • 정상적으로 파드가 생성된 것을 확인
profile
안녕하세요

0개의 댓글