일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
- 1차원 DP
- 2차원 dp
- 99클럽
- @BeforeAll
- @BeforeEach
- @Builder
- @Entity
- @GeneratedValue
- @GenericGenerator
- @NoargsConstructor
- @Query
- @Table
- @Transactional
- Actions
- Amazon EFS
- amazon fsx
- Android Studio
- ANSI SQL
- api gateway 설계
- api gateway 필터
- ApplicationEvent
- argocd
- assertThat
- async/await
- AVG
- AWS
- aws autoscaling
- aws eks
- aws iam role
- AWS KMS
- Today
- Total
목록DevOps (35)
기록
도커는 클라이언트-서버 구조로 동작한다겉으로 보기에는 docker라는 명령어 하나로 모든 게 처리되는 것처럼 보이지만, 사실 도커는 내부적으로 두 가지 컴포넌트로 나뉘어 작동하는 클라이언트-서버 아키텍처를 따른다.이 구조를 구성하는 핵심 요소는 다음과 같다:구성 요소설명docker도커 CLI. 사용자의 명령을 입력받아 서버에 전달하는 클라이언트 도구dockerd도커 데몬. 실제 컨테이너 실행, 이미지 다운로드, 네트워크 연결 등을 담당하는 서버 프로세스/var/run/docker.sock클라이언트와 데몬 사이를 연결하는 유닉스 도메인 소켓. 요청과 응답이 오가는 통신 경로 이 구조에서 docker는 사용자와 상호작용하는 클라이언트에 해당하며, dockerd는 실제로 모든 무거운 일을 처리하는 서버라고 할..

도커를 설치할 때 크게 두 가지 방법이 있다. 하나는 Docker Desktop을 이용하는 방식이고, 다른 하나는 순수 리눅스 환경에서 도커를 직접 설치하고 관리하는 방식이다. 이 두 방식은 도커를 사용하는 목적은 동일하지만 내부적으로 작동하는 방식과 사용자 경험 측면에서 상당한 차이가 있다. 이번 글에서는 Docker Desktop과 순수 리눅스 도커 환경이 각각 어떤 특징을 갖고 있는지, 두 환경의 차이점과 각각의 장단점을 명확하게 비교해본다.Docker Desktop 환경의 특징과 장단점Docker Desktop은 도커사(Docker Inc.)가 제공하는 공식 GUI 기반의 도커 관리 도구이다. Docker Desktop을 설치하면, 도커 엔진과 Docker Compose는 물론이고, GUI 기반 ..

1. 프로젝트 개요이번 실습에서는 K3s 기반의 소규모 쿠버네티스 클러스터에 ArgoCD를 설치하고, 퍼블릭 IP를 통해 외부에서 바로 접속할 수 있는 환경을 구축한다.목표는 불필요한 리소스를 최대한 배제하여 설치를 최소화하고, 간편한 외부 접속 환경을 만드는 것이다.2. 사전 준비: Helm 저장소 추가ArgoCD를 설치하기 위해 Helm Chart를 사용한다.Helm 저장소를 추가하고 최신 버전으로 업데이트한다.helm repo add argo https://argoproj.github.io/argo-helmhelm repo update3. 설치 커스터마이징: Values 파일 작성설치에 앞서 K3s 환경에 맞게 ArgoCD 구성을 최적화했다.작성한 argocd-values.yaml 파일은 다음과 같..

1. 시작하면서Spring Boot 멀티모듈 프로젝트를 기반으로, 자동화된 CI 파이프라인을 구성하고 AWS ECR에 최적화된 Docker 이미지를 푸시하는 것을 목표로 한다. 단순한 배포가 아니라, 가능한 최소한의 메모리, 스토리지, 네트워크 리소스를 사용하는 이미지를 만드는 데 집중하였다. 이를 위해 빌드 도구나 소스코드를 최종 이미지에 포함시키지 않고, 필요한 실행 파일만을 남기는 Multi-stage Build를 적용하고, eclipse-temurin:21-jre-alpine과 같은 경량화된 베이스 이미지를 선택했다.2. 인프라 기본 구성먼저, GitHub Actions가 AWS에 직접 접근할 수 있도록 OpenID Connect(OIDC)를 이용해 인증을 구성하였다. IAM Role을 생성하여 ..

쿠버네티스 환경에 CI/CD 파이프라인을 구축하기 위해 Jenkins를 설치하고자 한다. 이번 글에서는 Helm Chart를 활용해 Jenkins를 설치하는 과정을 자세히 다루고, 설치 후 접속까지 정상적으로 되는지 확인하는 흐름을 정리한다. 이 실습은 Infra 계정과 Dev 계정 간 VPC Peering을 완료한 상태에서 진행된다.1. 설치 배경개발/운영 파이프라인을 체계적으로 관리하기 위해 Jenkins를 기반으로 CI/CD 환경을 구성하려 한다. Jenkins는 오픈 소스 기반으로 매우 강력한 기능을 제공하는 툴이며, Helm을 이용해 빠르고 손쉽게 쿠버네티스 클러스터에 배포할 수 있다. 이번 작업은 Jenkins 설치 및 초기 설정까지를 목표로 삼는다.2. Jenkins 설치 준비Helm Rep..

이번 글에서는 서로 다른 AWS 계정의 VPC 간에 Private IP를 이용해 통신하는 과정을 자세히 살펴본다. 실습은 "VPC Peering 생성 → 수락 → 라우팅 테이블 수정 → 통신 테스트" 순서로 진행되었으며, 이를 통해 Private 네트워크 상에서 계정이 다른 private 인스턴스끼리도 직접 통신할 수 있다는 점을 명확히 확인할 수 있었다.1. 시작하면서현재 인프라 구성은 다음과 같다. Control Plane은 Infra 계정에, Worker Node는 Dev 계정에 각각 배치되어 있으며, 두 계정의 VPC는 물리적으로 분리되어 있다.기본적으로는 서로 다른 VPC이기 때문에 직접 통신이 불가능한 상황이었다. 그러나 퍼블릭 IP를 이용한 통신은 보안과 비용 측면에서 부담이 있었고, 가능하..

들어가며개발을 하다 보면 환경 변수나 설정 파일에 비밀번호, API 키, DB 접속 정보 같은 민감한 데이터를 넣어야 할 때가 자주 있다. 초기에는 .env 파일에 그대로 두거나, Git에 커밋되지 않게만 조심하면 된다고 생각하기 쉽다.하지만 운영 환경에 배포하거나 여러 명이 협업하는 상황에서는 그 접근이 너무 위험할 수 있다. 나는 이 문제를 보다 안전하게 해결하기 위해 AWS의 Key Management Service(KMS) 를 활용해보기로 했다.이번 글에서는 다음 내용을 중점적으로 정리한다:AWS 콘솔에서 KMS 키를 생성하는 방법로컬에서 AWS CLI로 암복호화를 테스트하는 절차KMS 과금 정책과 주의할 점실습을 위한 단계부터 실제 운영 적용까지 이어질 수 있는 기반을 마련하는 것이 목표다.KM..

시작하면서이번 글에서는 K3s 마스터와 에이전트 노드 구성이 완료된 상태에서, 클러스터의 노드 및 파드 상태를 실시간으로 시각화하는 오픈소스 도구 kube-ops-view를 설치하고 활용하는 방법을 설명한다. Grafana를 사용할 수도 있지만, kube-ops-view는 경량이며 NodePort로 노출하기에 적합해 프리티어 환경에서 간편하게 운영할 수 있는 대시보드 도구이다. 이전글K3s 기반 멀티 노드 클러스터 구축기 (1) - 컨트롤 플레인 자동화와 Helm 설치까지K3s 기반 멀티 노드 클러스터 구축기 (2) - dev 계정에서 워커 노드 연결하기목표kube-ops-view를 마스터 노드(K3s 서버)에서 설치한다.클러스터 전체 노드와 파드 상태를 실시간으로 시각화한다.외부에서 웹 브라우저로 접근..