Skip to content

bridge network의 container IP 할당과 회수 관리하기 #7

Description

@SuperSon7

Context

현재 네트워크 구현은 bridge에 gateway IP를 부여하고, container-side interface에는 사용자가 지정한 ContainerAddress를 붙이는 방향으로 진행 중이다. 같은 bridge에 여러 container가 붙으면 각 container는 같은 bridge subnet 안에서 서로 다른 IP를 가져야 한다.

예를 들어 bridge가 10.0.0.1/24라면 container들은 10.0.0.2/24, 10.0.0.3/24처럼 고유한 주소를 받아야 한다. 같은 IP를 중복 할당하면 ARP 충돌과 통신 오류가 발생한다. 또한 container가 삭제되면 그 IP를 다시 사용할 수 있도록 회수해야 한다.

지금처럼 static IP를 직접 넘기는 방식은 학습 단계에서는 단순하지만, 여러 container를 안정적으로 다루려면 최소한의 IP allocation/validation 경계가 필요하다.

Goal

bridge network별로 container IP를 중복 없이 할당하고, container 삭제 시 회수할 수 있는 최소한의 IP 관리 흐름을 만든다.

Scope

  • bridge gateway CIDR에서 usable container IP 범위를 계산한다.
  • 이미 사용 중인 container IP와 새로 할당할 IP가 충돌하지 않도록 검증한다.
  • Config.ContainerAddress를 직접 받는 방식과 자동 할당 방식 중 현재 단계에 맞는 경계를 정한다.
  • container cleanup 시 할당한 IP를 회수하는 흐름을 설계한다.
  • 영구 저장소 기반 IPAM이나 multi-host networking은 이 이슈 범위에서 제외한다.

Acceptance Criteria

  • 같은 bridge network에 두 container가 같은 IP를 받지 않는다.
  • gateway IP는 container IP로 할당되지 않는다.
  • container IP가 bridge subnet 밖이면 설정 단계에서 에러가 난다.
  • container cleanup 시 해당 IP를 재사용 가능한 상태로 돌릴 수 있다.
  • cd mini-container && GOCACHE=/tmp/mini-container-go-build go test ./...가 통과한다.

Notes

network namespace는 각 container의 network stack을 분리하지만, 같은 bridge에 붙은 container들은 일반적으로 같은 L2 segment와 같은 subnet을 공유한다. 따라서 bridge에는 gateway IP 하나를 붙이고, container마다 고유한 IP를 container-side interface에 붙이는 모델로 이해하면 된다.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

enhancementNew feature or request

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions