
VM 가상머신 설정

이 글에서는 CentOS 9 가상환경에서 Docker를 설치하고, 다양한 설치 방법 및 각 서비스가 하는 역할을 설명한다. 또한, 기본적인 실행 및 검증을 진행하는 방법을 소개하여 VM 환경에서도 Docker를 원활하게 사용할 수 있도록 구성할 것이다.Docker는 여

가상머신(Virtual Machine, VM)은 하드웨어를 가상화하여 독립적인 운영체제를 실행하는 방식이다. 가상머신은 하이퍼바이저(Hypervisor)를 통해 호스트 OS 위에서 동작하며, 각 VM은 개별적인 OS를 포함하고 있다.호스트 OS(Host OS): 실제

Docker 이미지는 컨테이너를 생성하는 데 사용되는 읽기 전용 템플릿이다. 이미지에는 애플리케이션 실행에 필요한 파일과 설정이 포함되며, 운영체제 전체가 아닌 최소한의 환경만 포함되어 있어 가볍다.이미지는 읽기 전용이며 수정할 수 없다.Docker Hub에서 공식 이

위 명령어는 centos 이미지를 사용하여 새로운 컨테이너를 실행하고, /bin/cal 명령을 수행한 후 종료한다.\-i (--interactive): 표준 입력을 유지하여 키보드 입력을 받을 수 있도록 한다.\-t (--tty): 터미널을 활성화하여 대화형 셸을 사용

도커는 컨테이너 간의 네트워크 연결을 관리하기 위해 다양한 네트워크 드라이버를 제공한다. 기본적으로 다음과 같은 네트워크가 존재한다.Bridge (브리지, 기본 네트워크) 기본적으로 생성되는 네트워크 (docker0).동일한 브리지 네트워크에 속한 컨테이너 간 통신이

\--network=host 옵션을 사용하면 컨테이너가 별도의 네트워크 인터페이스를 생성하지 않고, 호스트의 네트워크를 그대로 사용한다.컨테이너 내부에서 실행되는 서비스가 호스트의 IP와 네트워크 인터페이스를 공유하므로, 포트 바인딩(-p) 없이도 호스트의 IP로 접근

ip address 명령어는 리눅스 시스템의 네트워크 인터페이스(IP 주소, MAC 주소 등)를 확인하는 명령어이다.물리적/가상 네트워크 인터페이스에 대한 정보를 출력하며, 각 네트워크 인터페이스가 어떤 IP를 가지고 있는지 확인할 때 사용한다.127.0.0.1/8 →

컨테이너 간 네트워크 격리기본적으로 같은 브리지 네트워크 내 컨테이너들끼리만 통신 가능.다른 브리지 네트워크에 있는 컨테이너들과는 기본적으로 통신 불가능.게이트웨이를 통한 외부 네트워크 연결브리지 네트워크의 게이트웨이를 통해 인터넷과 연결 가능.컨테이너가 인터넷에 접근

\-d bridge: 브리지 네트워크 드라이버 사용.my_bridge: 새롭게 생성할 네트워크 이름.네트워크 리스트 확인:출력 예시:my_bridge 네트워크가 생성됨.생성된 네트워크 게이트웨이에도 IP 주소가 자동 할당됨.네트워크 인터페이스 확인:출력 예시:같은 네트

Docker 이미지는 컨테이너를 실행하기 위한 기본 템플릿 같은 개념. 미리 필요한 설정을 정의한 후 빌드하면 동일한 환경의 컨테이너를 지속적으로 만들 수 있음. .FROM : 어떤 기본 이미지를 사용할지 지정 (예: FROM ubuntu:latest)RUN : 컨테이

Dockerfile은 하나의 컨테이너 이미지를 정의할 때 사용. 즉, 컨테이너를 실행하기 전에 필요한 패키지 설치, 환경 변수 설정, 실행할 기본 명령어 지정 등을 미리 정의. 이렇게 하면 같은 설정을 반복해서 실행할 필요 없이, Dockerfile을 기반으로 동일한

도커에서 컨테이너나 이미지를 파일로 저장할 수 있는데, export와 save의 차이를 이해하는 것이 중요하다. 컨테이너를 .tar 파일로 저장 (레이어 정보 없음) 저장한 컨테이너를 다시 가져오기이미지를 .tar 파일로 저장 (레이어 정보 포함) 이미지를 다시

멀티 스테이지 빌드는 빌드 환경과 실행 환경을 분리하여 컨테이너를 최적화하는 기법이다.Dockerfile에서 여러 개의 FROM 단계를 사용하여 불필요한 파일을 제거하고, 가벼운 실행 이미지를 생성할 수 있다.✅ 주요 장점빌드 과정에서만 필요한 도구(Golang, No

여러 개발자가 동일한 개발 환경을 구축하고 공유하려면, 각자 필요한 서비스를 쉽게 가져와서 사용할 수 있어야 한다. 예를 들어, Redis, MySQL, MongoDB와 같은 데이터베이스는 개발 시 필수적인 서비스이다. 도커를 사용하면 이 환경을 컨테이너로 쉽게 만들고

RUN은 Docker 이미지를 생성할 때 실행할 명령어를 정의하는 데 사용된다. 이 명령어는 이미지 빌드 과정에서 실행되며, 컨테이너 실행 시에는 영향을 미치지 않는다.OS 패키지 업데이트 및 업그레이드애플리케이션 및 미들웨어 설치서버 환경을 구축하는 명령어 실행 (서

최근 멀티 클라우드 환경에서 Kubernetes를 활용하는 방법을 익히기 위해 여러 실습을 진행 중이다. 쿠버네티스를 활용할 일이 많아지고 있고, 직접 클러스터를 구성하면서 내부 동작을 깊이 이해하는 것이 중요하다고 느꼈다.이 글에서는 EC2 인스턴스를 생성하고, Do

이전 포스팅에서는 EC2에 Docker와 Kubernetes를 설치하고 마스터 노드를 구성하는 과정을 다루었다. 이제 클러스터를 확장하기 위해 워커 노드를 추가하고 Kubernetes 클러스터에 연결하는 과정을 설명한다.워커 노드를 추가하면 클러스터에서 애플리케이션을

이전 포스팅에서는 EC2 인스턴스에 Docker와 Kubernetes를 설치하고, 마스터 노드와 워커 노드를 개별적으로 구성하는 과정을 다루었다. 이제 워커 노드를 마스터 노드에 연결하여 Kubernetes 클러스터를 완성하는 과정을 설명한다.마스터 노드와 워커 노드를

Kubernetes는 컨테이너 오케스트레이션을 위한 강력한 도구다. 하지만, 처음 시작할 때 직접 클러스터를 구축하는 것은 쉽지 않다. 이를 간단하게 실습할 수 있도록 돕는 것이 바로 Minikube이다. 이번 실습에서는 AWS EC2 인스턴스에서 Minikube를 설

쿠버네티스(Kubernetes)는 컨테이너화된 애플리케이션을 관리하는 강력한 오케스트레이션 도구다. 클러스터 내에서 실행되는 파드(Pod) 는 동적으로 배치되고, 이 과정에서 IP 주소가 변경될 수 있다. 이러한 변화 속에서도 안정적인 네트워크 접근을 제공하기 위해 서

ClusterIP는 쿠버네티스에서 기본적으로 제공하는 서비스 유형으로, 클러스터 내부에서만 접근 가능한 고정된 IP를 제공한다. 이 실습을 통해 ClusterIP의 동작 방식을 확인하고, 서비스 생성 및 네트워크 접근 방법을 테스트해볼 것이다.클러스터 내부에서만 접근

NodePort는 Kubernetes에서 외부에서 클러스터 내부의 서비스로 접근할 수 있도록 해주는 서비스 유형이다. 이 실습을 통해 NodePort의 동작 방식을 확인하고, 외부에서 서비스에 접근하는 방법을 테스트해볼 것이다.외부에서 클러스터 내부의 서비스로 접근 가

Kubernetes에서 리소스를 효율적으로 관리하기 위해 레이블(Label)과 어노테이션(Annotation)을 활용할 수 있다. 이번 글에서는 레이블과 어노테이션의 개념, 차이점, 그리고 실제 활용 사례에 대해 정리해보겠다.레이블은 Kubernetes 리소스를 식별하

쿠버네티스에서 애플리케이션을 실행할 때 필요한 환경변수나 설정 값을 코드에 직접 넣는 건 좋지 않다.이럴 때 사용하는 것이 ConfigMap이다.ConfigMap은 환경 변수, 설정 파일 경로, 디버그 모드 같은 민감하지 않은 설정 값을 분리해서 관리할 수 있도록

Secret은 비밀번호, 토큰, SSH 키 등 민감한 정보를 안전하게 관리하기 위한 쿠버네티스 리소스다.ConfigMap과 달리 base64로 인코딩된 형태로 저장되며, 중요한 정보를 코드에 하드코딩하지 않고 따로 관리할 수 있도록 해준다. 주의: Secret도 et

VPC, 퍼블릭 서브넷, 프라이빗 서브넷, NAT 게이트웨이, 인터넷 게이트웨이, EC2 인스턴스이름: MyVPC01CIDR: 10.0.0.0/16 (IP 범위를 넓게 잡아 여러 서브넷을 쪼갤 수 있게 한다)DNS 해석 및 DNS 호스트 이름 활성화: 퍼블릭 IP를 할

VPC, 퍼블릭 서브넷, 프라이빗 서브넷, NAT 게이트웨이, 인터넷 게이트웨이, ALB, 프라이빗 EC2 인스턴스 구성 및 테스트 완료이름: MyVPC02CIDR: 10.0.0.0/16DNS 해석 및 DNS 호스트 이름 활성화 (퍼블릭 IP 부여 시 DNS 이름 자동

MyVPC03 생성CIDR: 10.0.0.0/16 (넓은 주소 공간 확보)DNS 호스트 이름 활성화 (퍼블릭 DNS 자동 부여로 인스턴스 접근 및 테스트 편리)MyIGW 생성 후 VPC에 연결 (VPC가 외부 네트워크와 통신하도록 연결)MyPublicSubnet01 (

이번 실습의 핵심은 RDS 클러스터의 고가용성 설정과 장애 시 자동 승격 과정을 직접 확인하는 것이다.구성 요소:VPC: MyVPC01 (10.0.0.0/16), DNS 호스트 이름 활성화 필수. 이 기능이 활성화되어야 EC2 인스턴스가 퍼블릭/프라이빗 IP를 기반으로

CloudFormation은 AWS에서 공식으로 제공하는 서비스이고, Terraform은 써드파티 오픈소스 도구다. 따라서 CloudFormation은 AWS와의 통합성이 좋고, Terraform은 다양한 클라우드를 동시에 다룰 수 있다.Terraform은 AWS뿐 아

AWS에서는 인프라를 코드로 관리할 수 있는 서비스인 CloudFormation을 제공한다. 이걸 사용하면 수많은 리소스를 클릭해서 만들 필요 없이, 하나의 템플릿 파일만으로도 여러 개의 리소스를 한 번에 생성할 수 있다.이번 실습에서는 VPC와 인터넷 게이트웨이(IG

CloudFormation은 AWS 리소스를 코드로 선언하고 자동으로 배포할 수 있는 강력한 도구다.하지만 처음 시작할 때는 템플릿의 구조가 다소 낯설게 느껴질 수 있다. 이 글에서는 CloudFormation 템플릿이 어떻게 구성되어 있고, 각 섹션이 어떤 역할을 하

AWS CloudFormation은 우리가 AWS에서 사용하는 인프라를 코드로 정의하고 자동으로 만들어주는 서비스다.예를 들어, EC2 인스턴스 하나를 만들려고 콘솔에서 클릭 몇 번씩 하지 않아도, CloudFormation 템플릿 파일 한 장이면 클릭 한 번으로 서버

– VPC, Subnet, 인터넷 게이트웨이, 라우팅 테이블 설정EC2 인스턴스를 만든다고 해서 바로 인터넷에 연결되는 건 아니다. 서버가 외부와 통신하려면 그 전에 네트워크 리소스들이 먼저 준비돼 있어야 한다. 가장 기본적으로 필요한 건 VPC, 서브넷, 인터넷 게이

– 보안 그룹 설정과 UserData를 활용한 자동 웹 서버 설치까지앞선 글들에서 VPC, 서브넷, 인터넷 게이트웨이, 라우팅 테이블까지 네트워크 인프라를 구성했다.이제 그 위에 EC2 인스턴스를 올릴 차례다. 이번 글에서는 EC2 인스턴스를 퍼블릭 서브넷에 생성하고,

– NAT Gateway를 통해 프라이빗 인스턴스의 외부 통신 열어주기지금까지 CloudFormation을 활용해 EC2 인스턴스를 퍼블릭 서브넷에 배치하고, IGW와 라우팅 테이블을 연결해서 외부와 통신 가능한 구조를 만들었다. 하지만 실제 운영 환경에서는 외부에서

– 서로 격리된 네트워크 환경을 만드는 기본 구조운영 환경에서는 하나의 VPC만 사용하는 경우도 있지만, 보안 분리, 서비스 경계, 테스트 환경 분리 등의 이유로 VPC를 여러 개 나누는 경우도 많다.예를 들어, 하나는 웹 서버용 퍼블릭 VPC, 다른 하나는 백엔드나

– EC2 인스턴스를 Target Group으로 묶어 로드밸런싱하기앞서 우리는 VPC07에 퍼블릭 서브넷을 만들고, 그 안에 MyWeb2, MyWeb3 두 개의 EC2 인스턴스를 배치했다.이제는 이 두 인스턴스 앞단에 NLB(Network Load Balancer) 를

Terraform은 클라우드 인프라를 코드로 선언하고 관리할 수 있게 해주는 도구로, AWS, GCP, Azure 같은 다양한 클라우드 환경을 지원한다. 이 글에서는 macOS(맥북) 환경에서 Terraform을 시작하기 위한 환경을 구성하고, Terraform 코드의

Terraform으로 인프라를 코드로 정의하면 반복 가능한 환경 구축이 가능하고, 수동 설정보다 훨씬 안정적이다. 특히 AWS 리소스를 수십 개 생성해야 하는 상황에서는 코드로 관리하는 것이 유지보수 측면에서도 유리하다.이번 글에서는 AWS에서 가장 기본이 되는 네트워

앞선 글에서는 AWS에 VPC, Public Subnet, Internet Gateway, Route Table을 구성해보았다. 이번 글에서는 해당 네트워크 인프라 위에 EC2 인스턴스를 Terraform을 통해 생성해보고, 웹 서버를 실행하는 과정을 다룬다. 이 실습

이전 글까지의 실습으로 우리는 VPC 내부에 퍼블릭/프라이빗 서브넷을 구성하고, 각각의 서브넷에 EC2 인스턴스를 배포했다. 이번 글에서는 외부 트래픽을 효율적으로 분산 처리하기 위한 로드 밸런서, ALB(Application Load Balancer)와 NLB(Net

현대 클라우드 인프라에서는 퍼블릭 서브넷과 프라이빗 서브넷을 함께 구성하는 것이 일반적이다. 예를 들어 웹 서버는 퍼블릭 서브넷에 두고, 데이터베이스나 백엔드 서비스는 프라이빗 서브넷에 배치하는 식이다. 이런 구조는 외부 노출을 줄여 보안을 높이고, 계층적인 시스템 아

IPSec VPN은 회사와 지점, 또는 재택근무자의 컴퓨터를 안전하게 연결할 때 사용한다. 인터넷으로 데이터를 주고받을 때 누군가 정보를 훔쳐보거나 데이터를 마음대로 바꾸지 못하도록 보호한다. 예를 들어, 집에서 회사 서버에 안전하게 접속해 업무를 처리하거나, 서로 다

AWS에서 제공하는 VPN 서비스를 정확하게 이해하기 위해서는 네트워크 관련 용어 몇 가지를 먼저 알고 있어야 한다. 이들은 VPN 연결이 실제로 어떻게 구성되고 동작하는지를 이해하는 데 필수적인 요소다.아래 다이어그램은 사무실 네트워크와 외부 사용자가 각각 어떻게 A

이 글은 AWS에서 Transit Gateway를 활용해 여러 VPC 간 네트워크 연결을 구성하고, 각 VPC의 EC2 인스턴스가 사설 IP를 통해 서로 통신할 수 있도록 구현한 실습 내용을 정리한 것이다.AWS 환경에서는 여러 서비스나 팀별로 VPC를 나누어 사용하게

AWS에서 여러 개의 VPC 간 통신을 구성할 때는 Transit Gateway(TGW)를 사용하는 것이 일반적인 접근 방식이다.Transit Gateway는 다양한 네트워크 연결을 중앙에서 관리할 수 있게 해주며, 라우팅 테이블(Route Table)을 통해 어떤 트

지금까지 진행했던 TGW 실습은 대부분 여러 VPC를 TGW에 연결하고, 라우팅 테이블을 하나만 만든 뒤, 각 VPC의 경로 정보를 TGW에 자동으로 전파(Propagation)하도록 설정하는 방식이었다. 이렇게 구성하면 TGW는 모든 VPC의 경로를 알고 있기 때문에

이번 실습은 AWS의 네트워크 보안 구성 요소인 보안 그룹(Security Group) 과 네트워크 ACL(Network ACL) 이 실제로 어떻게 동작하는지를 깊이 있게 이해하고자 한 과정이었다. 둘 모두 트래픽을 제어하는 기능을 제공하지만, 실제 구성 환경에서 어떤

시작하면서 이번 실습에서는 VPC Flow Logs를 CloudWatch Logs로 전송하는 설정을 진행한다. 이를 통해 VPC 내에서 발생하는 트래픽 데이터를 실시간으로 모니터링할 수 있으며, 향후 보안이나 네트워크 문제를 진단하는 데 유용하게 활용할 수 있다.