DevOps/k8s 6

Kubernetes에서 MySQL과 연동하여 볼륨(Persistent Volume) 사용하기

쿠버네티스(Kubernetes)에서 MySQL을 배포할 때, 데이터를 지속적으로 유지하려면 Persistent Volume (PV) 및 **Persistent Volume Claim (PVC)**를 활용해야 합니다. 이 글에서는 MySQL을 쿠버네티스에서 운영하면서 볼륨을 연동하는 방법을 설명합니다.1. Persistent Volume (PV) 생성PV는 클러스터 내에서 사용할 수 있는 스토리지 자원을 정의하는 객체입니다. MySQL 데이터를 유지하기 위해 PV를 생성합니다.apiVersion: v1kind: PersistentVolumemetadata: name: mysql-pvspec: capacity: storage: 10Gi accessModes: - ReadWriteOnce p..

DevOps/k8s 2025.02.06

쿠버네티스 ConfigMap과 Secret 완벽 정리

쿠버네티스에서 애플리케이션의 설정을 분리하여 관리하는 두 가지 주요 리소스가 ConfigMap과 Secret입니다. 이 두 가지는 환경 설정 값을 Pod에 주입하는 데 사용되지만, 중요한 차이점이 있습니다. 이번 포스팅에서는 ConfigMap과 Secret의 차이점, 사용 방법, 주의할 점 등을 정리해 보겠습니다.  🔹 1. ConfigMap이란?ConfigMap은 애플리케이션에서 사용하는 설정 데이터를 저장하는 쿠버네티스 리소스입니다. 일반적으로 환경 변수, 설정 파일, 커맨드라인 인자 등을 저장하는 용도로 사용됩니다.✅ 특징비밀 데이터가 아닌 일반적인 설정 값을 저장함 (예: 데이터베이스 URL, 서비스 포트)Key-Value 형태로 데이터를 저장Pod 내에서 환경 변수, 파일, 커맨드라인 인자로 ..

DevOps/k8s 2025.02.05

Kubernetes에서 Service란?

서비스(Service) : 외부로부터 요청을 받는 역할 / 외부로부터 들어오는 트래픽을 받아, 파드에 균등하게 분배해주는 로드밸런서 역할을 하는 기능  spring-service.yamlapiVersion: v1kind: Service# Service 기본 정보metadata: name: spring-service # Service 이름 # Service 세부 정보spec: type: NodePort # Service의 종류 selector: app: backend-app # 실행되고 있는 파드 중 'app: backend-app'이라는 값을 가진 파드와 서비스를 연결 ports: - protocol: TCP # 서비스에 접속하기 위한 프로토콜 port: 8080 # 쿠버네티..

DevOps/k8s 2025.02.04

Docker + GitHub Actions 배포 vs 쿠버네티스 배포 비교

쿠버네티스를 이용한 배포 방식으로 변경하면 기존 Docker + GitHub Actions 기반 배포와 비교해서 차이가 많습니다.특히, 온프레미스(개발 서버 직접 운영) 환경이라면, 쿠버네티스를 적용하는 방식이 다소 달라질 수 있습니다. 배포 방식기존 Docker + GitHub Actions쿠버네티스 (K8s) 배포 대상EC2 또는 직접 구축한 서버에서 실행쿠버네티스 클러스터 (온프레미스 or 클라우드)실행 방식서버에서 Docker 컨테이너 직접 실행K8s의 Pod 단위로 컨테이너 관리배포 방식GitHub Actions에서 docker build → docker runGitHub Actions에서 kubectl apply확장 방식서버의 스펙을 높이거나, 새로운 서버 추가 후 수동 배포HPA(Pod 자동..

DevOps/k8s 2025.02.04

Kubernetes Deployment를 사용하여 여러 개의 Pod 실행하기

Kubernetes에서 동일한 Pod을 여러 개 실행하려면 Deployment를 활용하면 된다. Deployment는 여러 개의 Pod을 관리하고, 업데이트 및 롤백을 손쉽게 수행할 수 있도록 도와준다.  Deployment 작성 방법apiVersion: apps/v1 # Deployment의 API 버전kind: Deployment # Deployment 리소스를 생성한다.metadata: name: spring-deployment # Deployment의 이름spec: replicas: 3 # 동일한 Pod을 3개 실행한다. selector: matchLabels: app: backend-app # backend-app 레이블을 가진 Pod을 관리한다. template:..

DevOps/k8s 2025.02.04

쿠버네티스 기초 명령어

1. 매니페스트 생성 (nginx-pod.yaml)apiVersion: v1kind: Pod #Pod를 만들때는 apiVersion을 V1을 써야하는데 공식문서에서 이렇게 안내한다. 따로 이유를 알 필요는 없음metadata: name: nginx-podspec: containers: - name: nginx-container image: nginx ports: - containerPort: 80 imagePullPolicy: IfNotPresent 2. pod 시작kubectl apply -f nginx-pod.yaml  3. 실행중인 pod 확인kubectl get pods  4. pod 내부로 진입kubectl exec -it nginx-pod -- ..

DevOps/k8s 2025.01.22