K8s Rolling Update

Yuno·2025년 4월 3일

쿠버네티스 K8s

목록 보기
3/7

🚀 K8s Rolling Update 를 하여 V2 배포

기존 K8s 실습 에 이어 업데이트 된 버전 배포하기

🎯 목표
1️⃣ Spring Boot 앱의 코드를 살짝 수정해서 버전2 만들기
2️⃣ 새 이미지를 빌드하여 Minikube 에 올리기
3️⃣ Deployment 만 수정해서 서비스 다운 없이 교체되는 걸 확인하기


🛠️ Step 1: 코드 수정 (버전 표시 추가)

기존 HelloController 수정

package com.springk8sdemo;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloController {

  @GetMapping("/hello")
  public String hello() {
    return "Hello K8s! 🚀 this is version2!!";
  }
}

🛠️ Step 2: 빌드 이미지 & 빌드 확인하기

✅ Minikube 에 이미지 넣기

eval $(minikube docker-env)
./gradlew build

✅ Docker 로 V2 이미지 생성

docker build -t spring-k8s-demo:v2 .

🛠️ Step 3: Deployment 에 새로운 이미지 반영

✅ 기존 spring-k8s-deployment.yaml 파일 수정

spec:
  containers:
    - name: spring-k8s-demo
      image: spring-k8s-demo:v2
      imagePullPolicy: Never
      ports:
        - containerPort: 8080
  • image 부분 v2 로 수정 (이미지 빌드 명과 동일하게)

✅ 적용 하기

kubectl apply -f spring-k8s-deployment.yaml

→ 반환

deployment.apps/spring-k8s-demo configured
service/spring-k8s-service unchanged

💡 Step 4: Service 에 접속해서 결과 확인

✅ 해당 커맨드로 확인

minikube service spring-k8s-service

→ 반환

|-----------|--------------------|-------------|---------------------------|
| NAMESPACE |        NAME        | TARGET PORT |            URL            |
|-----------|--------------------|-------------|---------------------------|
| default   | spring-k8s-service |        8080 | http://192.168.49.2:30080 |
|-----------|--------------------|-------------|---------------------------|
🏃  spring-k8s-service 서비스의 터널을 시작하는 중
|-----------|--------------------|-------------|------------------------|
| NAMESPACE |        NAME        | TARGET PORT |          URL           |
|-----------|--------------------|-------------|------------------------|
| default   | spring-k8s-service |             | http://127.0.0.1:62867 |
|-----------|--------------------|-------------|------------------------|
🎉  Opening service default/spring-k8s-service in default browser...
❗  darwin 에서 Docker 드라이버를 사용하고 있기 때문에, 터미널을 열어야 실행할 수 있습니다

👉 제공받은 http://127.0.0.1:62867/hello 로 브라우저 에서 접근

  • HelloController 에 작성한 Hello K8s! 🚀 this is version2!! 가 출력된다.

🔄 기존 버전으로 되돌리기

✅ spring-k8s-deployment.yaml 파일을 바꾸고 싶은 버전으로 수정

spec:
  containers:
    - name: spring-k8s-demo
      image: spring-k8s-demo
      imagePullPolicy: Never
      ports:
        - containerPort: 8080
  • image: spring-k8s-demo:v2 에서 image: spring-k8s-demo 로 변경하고 싶은 이미지로 수정

✅ 다시 빌드 하기

kubectl apply -f spring-k8s-deployment.yaml

👉 기존에 제공받은 http://127.0.0.1:62867/hello 로 브라우저 에서 접근

  • 업데이트 이전 버전인 Hello K8s! 가 출력된다.
profile
Hello World

0개의 댓글