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에 붙이는 모델로 이해하면 된다.
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
Config.ContainerAddress를 직접 받는 방식과 자동 할당 방식 중 현재 단계에 맞는 경계를 정한다.Acceptance Criteria
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에 붙이는 모델로 이해하면 된다.