DevOps 30

[k8s] Namespace

네임스페이스는 쿠버네티스(Kubernetes) 클러스터에서 리소스를 그룹화하고 논리적으로 구분하는 방법을 제공하는 기능이다. 네임스페이스를 사용하면 동일한 클러스터 내에서 서로 다른 프로젝트, 팀, 또는 환경(예: 개발, 테스트, 프로덕션) 간에 리소스를 격리할 수 있다. 네임스페이스의 주요 기능리소스 격리:네임스페이스는 쿠버네티스 리소스를 논리적으로 구분하여 서로 간섭하지 않도록 한다. 예를 들어, 동일한 이름의 파드(Pod)나 서비스(Service)를 다른 네임스페이스에 중복 생성할 수 있다.접근 제어:RBAC(Role-Based Access Control)을 통해 네임스페이스별로 권한을 설정할 수 있다. 이를 통해 특정 사용자나 그룹이 특정 네임스페이스에서만 리소스를 관리하도록 제한할 수 있다.리소..

DevOps/K8S 2024.08.28

[k8s] Service

서비스는 쿠버네티스 클러스터 내의 여러 파드를 하나의 엔드포인트로 묶어주는 역할을 한다. 파드들은 클러스터 내에서 동적으로 생성되고 제거되기 때문에 IP 주소가 변할 수 있지만, 서비스는 일관된 IP 주소와 DNS 이름을 제공하여 파드들의 변경에도 불구하고 안정적인 네트워크 접속을 보장한다. 서비스의 유형ClusterIP기본 서비스 유형으로, 클러스터 내부에서만 접근 가능한 IP 주소를 제공한다.클러스터 외부에서는 접근할 수 없으며, 내부 통신에 주로 사용된다.마이크로서비스 간의 내부 통신, 데이터베이스 접근 등 내부 네트워크에서의 통신.NodePort외부에서 노드 IP의 특정 포트(:)로 들어오는 요청을 감지하여, 해당 포트와 연결된 파드로 트래픽을 전달하는 유형의 서비스다.NodePort 서비스를 생..

DevOps/K8S 2024.08.28

[k8s] 배포 흐름

쿠버네티스는 선언적인 시스템(Declarative System)으로, 사용자가 원하는 시스템의 상태를 정의하고, 시스템이 이 상태를 유지하도록 하는 방식으로 동작한다.API 서버쿠버네티스 API 서버는 클러스터의 중앙 API 엔드포인트로, 사용자와 클러스터 간의 인터페이스 역할을 한다.사용자가 쿠버네티스 클러스터에 요청을 보내면, API 서버가 이 요청을 처리하고 클러스터의 상태를 업데이트한다.API 서버는 모든 리소스의 현재 상태를 관리하고, 이를 etcd에 기록한다.etcdetcd는 쿠버네티스의 분산 키-값 저장소로, 클러스터의 구성 정보를 영구적으로 저장한다.모든 쿠버네티스 리소스의 상태는 etcd에 저장되며, API 서버는 이 정보를 읽고 쓴다.etcd는 클러스터의 현재 상태와 목표 상태를 저장한..

DevOps/K8S 2024.08.28

[VM] 네트워크 설정 방식

브리지 모드 (Bridged Network)브리지 모드는 가상 머신(VM)이 호스트 네트워크와 동일한 서브넷에 배치되며, 네트워크 장비는 VM을 물리적 장치와 동일하게 처리하는 네트워크 구성 방식이다. VM의 MAC 주소와 IP 주소는 호스트 네트워크 내의 다른 장치와 동일하게 취급된다.MAC 주소: VM은 가상 네트워크 어댑터를 통해 호스트의 물리적 네트워크 인터페이스(예: Ethernet 카드, Wi-Fi 어댑터)와 연결된다. VM의 MAC 주소는 물리적 네트워크 상의 다른 장치들과 동일하게 사용된다.IP 주소: VM은 호스트 네트워크의 DHCP 서버로부터 IP 주소를 할당받거나, 수동으로 IP 주소를 설정할 수 있다. 이 IP 주소는 호스트 네트워크의 서브넷 내에 위치한다.트래픽 처리: VM이 전송..

DevOps/VM 2024.08.27

[K8s] 설치 시 스왑 비활성화의 필요성

Kubernetes는 컨테이너 관리와 리소스 할당을 엄격하게 제어하는 시스템이다. 스왑이 활성화된 경우, Kubernetes의 메모리 관리 로직이 예상대로 작동하지 않을 수 있으며, 이는 시스템 불안정성으로 이어질 수 있다.스왑 비활성화 이유메모리 관리 일관성: Kubernetes는 노드의 물리적 메모리만을 기준으로 리소스를 할당하며, 스왑 메모리를 포함하지 않는다. 스왑이 활성화된 경우 메모리 부족 상황을 정확히 감지하지 못할 수 있다.안정성: 스왑 사용으로 인해 컨테이너의 메모리 사용량이 증가하면, Kubernetes가 이를 적절히 관리하지 못할 수 있으며, 이는 전체 클러스터의 안정성에 부정적인 영향을 미칠 수 있다.스왑 비활성화 방법Kubernetes 설치 전에 스왑을 비활성화하려면 다음 명령어를..

DevOps/K8S 2024.08.26

X-Ray

AWS X-RayAWS X-Ray는 애플리케이션을 추적하고 분석하는 데 도움을 주는 서비스이다. 이를 통해 애플리케이션의 성능 문제를 식별하고, 애플리케이션의 동작 방식을 더 잘 이해할 수 있다. X-Ray는 애플리케이션의 요청을 추적하고, 각 요청이 어떻게 처리되는지에 대한 자세한 정보를 제공한다.주요 기능트레이스 수집 및 분석: 요청이 애플리케이션을 통해 어떻게 이동하는지 시각화한다.트랜잭션 오류 및 성능 병목 현상 식별: 어디에서 오류가 발생하고 지연이 발생하는지 파악할 수 있다.종단 간 뷰 제공: 프런트엔드 서비스에서 백엔드 서비스까지 전체 애플리케이션 스택을 추적할 수 있다.구성요소Segment: 애플리케이션의 개별 작업을 나타낸다.Subsegment: 세그먼트 내의 더 작은 작업을 나타내어 더..

DevOps/AWS 2024.07.16

CloudWatch

AWS에서는 애플리케이션 성능 모니터링(APM, Application Performance Monitoring)을 위해 여러 도구와 서비스를 제공한다. 또한 외부 APM 도구(New Relic, Datadog, Dynatrace)와의 통합도 지원한다. 이러한 도구들은 AWS 인프라와 애플리케이션의 메트릭을 수집하고, 이를 기반으로 다양한 성능 분석 기능을 제공한다. 그중 주요 AWS 서비스는 Amazon CloudWatch와 AWS X-Ray이다.Amazon CloudWatchAWS CloudWatch는 AWS 리소스 및 애플리케이션의 성능 및 상태를 모니터링하는 서비스이다.메트릭 및 로그 데이터의 수집, 이벤트 기반 알림 설정, 자동화된 작업 실행 등의 기능을 통해 클라우드 인프라의 관리와 운영 효율성..

DevOps/AWS 2024.07.15

OWASP Top 10 공격 패턴

OWASP(Open Web Application Security Project)는 매년 발표하는 OWASP Top 10 보안 취약점 목록을 통해 주요 웹 애플리케이션 보안 취약점을 정리하고 있다. 이들 취약점은 공격자가 웹 애플리케이션을 공격할 때 자주 이용하는 패턴들을 반영하고 있다.1. 인젝션 (Injection)공격 원리: 악의적인 코드를 웹 애플리케이션의 입력 파라미터에 주입하여 실행되게 하여 시스템을 손상시키거나 정보를 유출시키는 공격예를 들어 SQL Injection(SQL 쿼리에 악의적인 SQL 코드를 삽입하는 것)이 있다.방어 방법:Prepared Statement 및 Parameterized Query 사용입력 데이터의 검증 및 이스케이핑(Escaping)2. 인증 및 세션 관리 취약점 ..

DevOps/AWS 2024.07.14

RabbitMQ, Apache Kafka, AWS SQS 비교

메시지 저장 및 전달 방식RabbitMQ는 메시지를 큐에 안전하게 저장하고 전달하며, Kafka는 영속적으로 메시지를 저장하고 여러 소비자에게 전달하고, SQS는 안전하게 메시지를 큐에 저장하고 전달한다. RabbitMQ메시지를 큐에 저장하고, 이를 소비자에게 전달한다. RabbitMQ는 메시지를 저장하는 역할을 중요하게 여긴다. 따라서 일시적인 네트워크 문제 또는 소비자가 메시지를 처리하지 못할 경우에도 안전하게 메시지를 보관한다.KafkaKafka는 메시지를 영속적으로 저장하고, 이를 여러 소비자 그룹에게 동시에 전달할 수 있다. 메시지는 토픽에 기록되며, 이를 구독하는 모든 소비자에게 전달된다. 또한, Kafka는 일반적으로 디스크에 메시지를 저장하여 데이터의 장기 보존이 가능하다.SQSSQS는 메..

DevOps 2024.01.13

Apache Kafka

Kafka 카프카는 분산 스트리밍 플랫폼으로, 대량의 데이터를 높은 처리량으로 실시간으로 처리할 수 있도록 설계된 오픈 소스 메시지 브로커이다. Jay Kreps, Neha Narkhede, 그리고 Jun Rao가 LinkedIn에서 개발한 후에 Apache 소프트웨어 재단에 기증되어 오픈 소스 프로젝트로 진화했다. 카프카는 대용량의 데이터 스트림을 효율적으로 수집, 저장, 처리 및 전달하는 데 사용되며 이벤트 주도 아키텍처 구축에 적합하다. 주로 로그 및 이벤트 스트리밍, 데이터 파이프라인, 실시간 데이터 분석 등의 분야에서 활용된다. 분산 아키텍처 및 확장성: Kafka는 분산 아키텍처로 설계되어 있어 수평 확장이 용이하며, 새로운 브로커를 추가하여 클러스터를 쉽게 확장할 수 있다. 내구성 및 복제:..

DevOps 2023.12.30