본문 바로가기
-----ETC2-----/네트워크 프로그래밍

[네트워크 프로그래밍] Week 11: 컨테이너 네트워크

by cogito21_python 2024. 6. 5.
반응형

컨테이너 네트워크

 

Day 1: Docker 네트워크 개념 및 설정

 

강의 내용:

  1. Docker 네트워크 개요
    • Docker 네트워크의 정의와 중요성
    • Docker 네트워크 모드 (bridge, host, overlay 등)
  2. Docker 네트워크 설정
    • 기본 bridge 네트워크 설정
    • 사용자 정의 네트워크 생성 및 관리
  3. 컨테이너 간 통신 설정
    • 네트워크를 통한 컨테이너 간 통신
    • 네트워크 이름을 통한 서비스 디스커버리

실습:

  • Docker 네트워크 설정
### 실습: Docker 네트워크 설정
1. 기본 bridge 네트워크를 사용하여 컨테이너 실행
2. 사용자 정의 네트워크 생성 및 컨테이너 연결
3. 네트워크 이름을 통한 컨테이너 간 통신 설정
# 기본 bridge 네트워크를 사용하여 컨테이너 실행
docker run -d --name container1 nginx
docker run -d --name container2 nginx

# 사용자 정의 네트워크 생성 및 컨테이너 연결
docker network create mynetwork
docker run -d --name container3 --network mynetwork nginx
docker run -d --name container4 --network mynetwork nginx

# 네트워크 이름을 통한 컨테이너 간 통신 설정
docker exec -it container3 ping container4

 

Day 2: Docker Compose와 네트워크 설정

강의 내용:

  1. Docker Compose 개요
    • Docker Compose의 정의와 사용 사례
    • Docker Compose 파일 구성 요소
  2. Docker Compose를 통한 네트워크 설정
    • Docker Compose를 사용한 멀티 컨테이너 애플리케이션 구성
    • 네트워크 설정을 포함한 Docker Compose 파일 작성
  3. Docker Compose를 사용한 네트워크 관리
    • Docker Compose로 네트워크 생성 및 관리
    • 네트워크 이름을 통한 서비스 디스커버리

실습:

  • Docker Compose를 사용한 네트워크 설정
# docker-compose.yml 파일 작성 예제
version: '3'
services:
  web:
    image: nginx
    networks:
      - mynetwork
  app:
    image: myapp
    networks:
      - mynetwork

networks:
  mynetwork:
# Docker Compose로 네트워크 생성 및 컨테이너 실행
docker-compose up -d
docker-compose ps

# 네트워크 상태 확인
docker network ls
docker network inspect mynetwork

 

Day 3: Kubernetes 네트워크 개념 및 설정

강의 내용:

  1. Kubernetes 네트워크 개요
    • Kubernetes 네트워크의 정의와 중요성
    • Kubernetes 네트워크 모델
  2. Kubernetes 네트워크 구성 요소
    • Pod 네트워크
    • Service 네트워크
    • Ingress 네트워크
  3. Kubernetes 네트워크 플러그인
    • 주요 네트워크 플러그인 (Flannel, Calico, Weave 등)
    • 네트워크 플러그인 설정 및 관리

실습:

  • Kubernetes 네트워크 설정
# Pod 네트워크 설정 예제 (Flannel 사용)
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx
        ports:
        - containerPort: 80
# Flannel 네트워크 플러그인 설치 및 설정
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

# Deployment 생성 및 네트워크 확인
kubectl apply -f nginx-deployment.yml
kubectl get pods -o wide
kubectl get svc

 

Day 4: Kubernetes Service 및 Ingress 설정

강의 내용:

  1. Kubernetes Service 개요
    • Service의 정의와 역할
    • Service 타입 (ClusterIP, NodePort, LoadBalancer)
  2. Service 설정 및 관리
    • ClusterIP 서비스 설정
    • NodePort 서비스 설정
    • LoadBalancer 서비스 설정
  3. Ingress 개요 및 설정
    • Ingress의 정의와 역할
    • Ingress 컨트롤러 설정
    • Ingress 리소스 설정

실습:

  • Kubernetes Service 및 Ingress 설정
# ClusterIP 서비스 설정 예제
apiVersion: v1
kind: Service
metadata:
  name: nginx-service
spec:
  selector:
    app: nginx
  ports:
    - protocol: TCP
      port: 80
      targetPort: 80
  type: ClusterIP
# Ingress 리소스 설정 예제
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: nginx-ingress
spec:
  rules:
  - host: nginx.local
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: nginx-service
            port:
              number: 80
# 서비스 및 Ingress 설정 적용
kubectl apply -f nginx-service.yml
kubectl apply -f nginx-ingress.yml

# 서비스 및 Ingress 상태 확인
kubectl get svc
kubectl get ingress

 

Day 5: Docker와 Kubernetes 네트워크 통합

강의 내용:

  1. Docker와 Kubernetes 네트워크의 통합
    • Docker 네트워크와 Kubernetes 네트워크의 차이점
    • Docker와 Kubernetes 네트워크 통합 방법
  2. 컨테이너 네트워크 보안
    • 네트워크 보안 위협과 대응 방법
    • 네트워크 정책 설정 (Network Policies)
  3. 네트워크 최적화
    • 네트워크 성능 모니터링
    • 네트워크 성능 최적화 기법

실습:

  • Docker와 Kubernetes 네트워크 통합 및 보안 설정
# 네트워크 정책 설정 예제
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: allow-nginx
spec:
  podSelector:
    matchLabels:
      app: nginx
  policyTypes:
  - Ingress
  ingress:
  - from:
    - podSelector:
        matchLabels:
          app: frontend
    ports:
    - protocol: TCP
      port: 80
# 네트워크 정책 적용 및 확인
kubectl apply -f network-policy.yml
kubectl get networkpolicies

 

Day 6: 프로젝트 준비

강의 내용:

  1. 프로젝트 주제 선정 및 요구사항 분석
    • 컨테이너 네트워크를 활용한 프로젝트 주제 논의
    • 팀 구성 및 역할 분담
  2. 프로젝트 계획 수립
    • 프로젝트 목표 및 요구사항 정의
    • 프로젝트 타임라인 설정
    • 프로젝트 도구 및 환경 설정

실습:

  • 프로젝트 계획서 작성 및 공유
### 실습: 프로젝트 계획서 작성
1. 프로젝트 목표 정의
2. 기능 명세서 작성
3. 개발 일정 및 마일스톤 설정
4. 역할 분담 및 작업 계획 수립
5. GitHub 저장소 생성 및 초기화

 

이 강의는 Docker와 Kubernetes의 네트워크 설정 및 관리 방법을 다루며, 컨테이너 네트워크의 개념과 실습을 통해 실제 환경에서의 네트워크 구성 및 관리를 익히는 것을 목표로 합니다. 각 주제별로 실습 예제를 통해 개념을 명확히 이해하고, 실제 환경에서 적용해보는 기회를 제공합니다.

반응형