🔻DevOps/Kubernetes

[Kubernetes] Kubernetes로 같은 pod 동시 생성하기(Deployment)

_니지 2024. 9. 3. 20:33

❗Service로 프로젝트 배포하기

https://radiant515.tistory.com/666

 

[Kubernetes] Kubernetes의 service + Docker +SpringBoot 배포하기

❗프로젝트 아키텍처   ❗EC2에 쿠버네티스 설치https://radiant515.tistory.com/665  ❗도커 허브에 리포지토리 생성docker-kubernetes-test라는 이름으로 생성하였다.  ❗스프링부트 프로젝트 구성@GetMappin

radiant515.tistory.com

해당 포스팅과 같은 환경에서 진행하였다.

 

 

❗CICD 파일

name: CI/CD Pipeline

on:
  push:
    branches:
      - main

jobs:
  build:
    runs-on: ubuntu-22.04

    steps:
      - name: Checkout code
        uses: actions/checkout@v2

      - name: Set up JDK 17
        uses: actions/setup-java@v2
        with:
          java-version: 17
          distribution: 'temurin'
          java-package: jdk

      - name: Set execute permission on gradlew
        run: chmod +x ./gradlew

      - name: Build with Gradle
        run: ./gradlew clean build -x test

      - name: Build Docker image
        run: docker build -t tokyj515/docker-kubernetes-test .

      - name: Log in to Docker Hub
        uses: docker/login-action@v2
        with:
          username: ${{ secrets.DOCKER_USERNAME }}
          password: ${{ secrets.DOCKER_PASSWORD }}

      - name: Push Docker image
        run: docker push tokyj515/docker-kubernetes-test

  deploy:
    runs-on: ubuntu-22.04

    steps:
      - name: Install SSH client
        run: sudo apt-get install -y openssh-client

      - name: Add SSH key
        run: echo "${{ secrets.AWS_EC2_SSH_KEY }}" > key.pem && chmod 600 key.pem

      - name: SSH and Apply Kubernetes Deployment on EC2
        run: |
          ssh -o StrictHostKeyChecking=no -i key.pem ubuntu@${{ secrets.AWS_EC2_HOST }} << 'EOF'
            # Ensure Docker is installed and running
            sudo systemctl start docker
            sudo usermod -aG docker ubuntu

            # Pull Docker image
            sudo docker pull tokyj515/docker-kubernetes-test

            # Check kubectl context (optional)
            sudo kubectl config current-context

            # Apply Kubernetes deployment with root privileges
            sudo kubectl apply -f /home/ubuntu/deploy.yaml
          EOF

Deploy를 위해 사용했던 CICD 파일에서 맨 마지막 부분에서 deploy.yaml 파일을 적용할 수 있도록 수정한다.

 

 

 

❗deploy.yaml 파일

apiVersion: apps/v1
kind: Deployment
metadata:
  name: testapi-deployment
spec:
  replicas: 2
  selector:
    matchLabels:
      app: testapi
  template:
    metadata:
      labels:
        app: testapi
    spec:
      containers:
        - name: testapi
          image: tokyj515/docker-kubernetes-test:latest
          ports:
            - containerPort: 8080

apiVersion: apps/v1
kind: Deployment
metadata:
  name: testapi-deployment
spec:
  replicas: 2
  selector:
    matchLabels:
      app: testapi
  template:
    metadata:
      labels:
        app: testapi
    spec:
      containers:
        - name: testapi
          image: tokyj515/docker-kubernetes-test:latest
          ports:
            - containerPort: 8080

replicas 항목에서 지정한 숫자를 통해 동일한 환경을 제공하는 pod를 동시에 생성할 수 있게 된다.

 

 

 

kubectl get deployments
kubectl get pods

위의 명령어를 사용하여 deploy.yaml 파일을 통해 실행 중인 pod의 개수를 확인할 수 있고, pods 명령을 통해 직접 어떤 이름을 가진 pod가 실행 중인지 확인할 수 있다.

 

 

 

 

 

728x90
반응형