❗Service로 프로젝트 배포하기
https://radiant515.tistory.com/666
해당 포스팅과 같은 환경에서 진행하였다.
❗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
반응형
'🔻DevOps > Kubernetes' 카테고리의 다른 글
[Kubernetes] Kubernetes의 service + Docker +SpringBoot 배포하기 (0) | 2024.09.03 |
---|---|
[kubernetes] minikube란? (0) | 2024.09.03 |
[Kubernetes] EC2에 kubernetes 설치하기 (0) | 2024.09.03 |
[Kubernetes] Kubernetes(쿠버네티스)란? (0) | 2024.07.18 |