Post

01 Container infra 전체 흐름

01 Container infra 전체 흐름

1. 흐름 (빌드 - push - 실행)

1. 컨테이너 기반 표준 흐름

  • 베이스 이미지로 Docker/Podman에서 이미지를 빌드
  • 이미지를 레지스트리에 push
  • Kubernetes(OpenShift)가 레지스트리에서 pull해서 실행

2. 단일 서버 컨테이너 흐름

  • 베이스 이미지로 Docker/Podman에서 이미지를 빌드
  • 이미지를 레지스트리에 push
  • 서버에서 docker run / podman run 으로 실행

3. 컨테이너 미사용(WAS 전통 방식)

  • 서버에 WildFly를 직접 설치
  • WAR/EAR 배포
  • 레지스트리/도커 개념 없음

2. 단계별 Point

1. 생성 (이미지 빌드)

  • 소스 코드와 설정을 묶어 컨테이너 이미지를 만듬
  • 이 단계에서는 실행이 일어나지 않음
  • 결과물은 항상 “이미지”
  • 종류

    종류(도구)주요 특징
    Docker가장 대중적, Dockerfile 표준, 로컬 개발에 최적
    Podman데몬리스 구조, rootless 실행 가능, 보안 친화적
    Buildah이미지 빌드에 특화, CI/CD에서 자주 사용
    OpenShift S2I소스 코드 기반 자동 빌드, Dockerfile 없이도 이미지 생성

2. 저장 (이미지 레지스트리)

  • 빌드된 이미지를 저장하고 버전/접근을 관리
  • 저장만 한다, 실행 기능 없음
  • pull / push가 전부
  • 운영 환경에서는 대부분 private 레지스트리 사용
  • 종류

    종류(레지스트리)주요 특징
    Docker Hub퍼블릭 기본 레지스트리, 설정 없으면 기본 사용
    AWS ECRIAM 기반 인증, EKS/ECS와 강결합
    GCP Artifact RegistryGKE 연동, 멀티 아티팩트 지원
    Azure ACRAKS 연동, VNet 통합 쉬움
    Harbor사내 구축, 권한/프로젝트/취약점 스캔 강점
    NexusMaven/npm/Docker 통합 관리 가능
    OpenShift Internal Registry클러스터 내부 전용, OpenShift와 일체화

3. 실행 (배포 / 런타임)

  • 레지스트리에서 이미지를 가져와 실제로 애플리케이션을 실행
  • 서비스가 뜸 / 장애 복구, 스케일링 책임이 있음
  • Docker/Podman은 “개별 실행”, Kubernetes/OpenShift는 “집단 관리”
  • 종류

    종류(실행 주체)주요 특징
    docker run단일 서버 실행, 가장 단순
    podman rundocker run과 유사, 보안 규칙 엄격
    Kubernetes다수 컨테이너 관리, 스케일링/복구 자동화
    OpenShiftKubernetes + 보안/운영 표준 내장
    AWS ECSAWS 관리형 실행 환경, 쿠버네티스 비의존

3. 단계별 조합

1. 조합 특징

  • 생성 / 저장 / 실행은 완전히 분리된 책임 / 생성 도구 ≠ 저장소 ≠ 실행 주체
  • 생성은 “빌드 도구 문제” / 저장은 “레지스트리 선택 문제” / 실행은 “운영 플랫폼 문제”

2. 자주 사용하는 조합

조합(생성 → 저장 → 실행)자주 쓰는 이유
Docker → Docker Hub → docker run로컬 개발·테스트, 설정 최소, 진입 장벽 낮음
Docker → ECR → EKSAWS 표준 조합, IAM 인증, 운영 안정성
Podman → ECR → EKS보안 강화(rootless), Docker 호환 유지
Docker → Harbor → Kubernetes사내망, 이미지 통제·취약점 관리
Podman → Harbor → OpenShiftRed Hat 계열 표준, 보안 규정 대응
S2I → Internal Registry → OpenShift소스→배포 자동화, 개발자 편의
Docker(GitHub Actions) → GHCR → KubernetesCI/CD 연계 쉬움, 깃허브 중심 조직

4. 오픈시프트(OpenShift)

1. 오픈시프트

  • 쿠버네티스를 기업 환경에서 바로 운영 가능하게 만든 Red Hat의 컨테이너 플랫폼
  • 쿠버네티스 “엔진”에 보안, 빌드, 배포, 운영 규칙을 얹은 완성형 플랫폼

2. 레이어

  • 쿠버네티스는 “안에 들어 있고”, 오픈시프트는 “그걸 감싼 운영 플랫폼”
  • 구성
    • 애플리케이션 (컨테이너)
    • OpenShift 기능 (보안, 빌드, 배포 자동화)
    • Kubernetes
    • 컨테이너 런타임 (CRI-O)
    • Linux (RHEL 계열)

3. 구성

계층핵심 역할
엔진Kubernetes + CRI-O
실행Pod / Service / Route
빌드·저장S2I / Registry / ImageStream
보안SCC / RBAC
운영Console / Operator

4. 쿠버네티스와 오픈시프트

구분KubernetesOpenShift
설치 난이도구성 요소 직접 선택표준 아키텍처 제공
보안 기본값느슨함매우 엄격
컨테이너 실행root 가능기본적으로 root 불가
이미지 빌드외부 도구 필요S2I/BuildConfig 내장
레지스트리외부 구성내부 레지스트리 포함 가능
운영 도구조합 필요웹 콘솔/CLI 기본 제공
지원커뮤니티 중심Red Hat 엔터프라이즈 지원

5. 체크(쿠버네티스-자바/오픈시프트-스프링)

KubernetesJavaOpenShiftSpring
Pod/ServiceJVM/BytecodeSCC/RouteSecurity/Dispatcher
yaml 구성main 메서드표준 배포 흐름Auto Configuration
애드온 선택라이브러리 선택내장 기능Starter 의존성
운영 설계JVM 튜닝운영 정책 기본값Opinionated 설계
This post is licensed under CC BY 4.0 by the author.