0부터 시작하는 Kubernetes 공부 - BGP & Service Mash & CI / CD

Jaehong Lee·2022년 10월 26일
1
post-thumbnail

BGP

Border Gateway Protocol 로 독립된 공인 IP Block 을 갖는 곳에서 사용한다. 서로 다른 자율 시스템(AS)의 라우터 간에 라우팅 정보를 교환하는 데 사용되는 외부 게이트웨이 프로토콜 이다

  • 잘못된 구성으로 인하여 내부 망이 Transat 하게 동작할 수 있다
  • 두 개 이상의 Isp 와 연결된 경우 사용한다
  • Path Vector

  • 트래픽이 갔다가 동일한 경로로 돌아로는 것이 보장되지 않는다
  • 경로 조정은 내부에서만 가능하고, Isp 에 대해서는 경로 조정이 안되기에 다수의 Isp 를 사용할 때, 보낼 때 동일한 Isp 로 돌아온다는 보장이 없다

그래서 BGP 란?

  • BGP 는 대기업, 규모가 큰 ( 지방 캠퍼스가 있는 ) 대학, ISP 와 같이 독립된 공인 주소 Block 을 갖는 곳에서 2 개 이상의 ISP 와 통신하는 경우 어느 경로를 통해 원격지 공인 주소 Block 과 통신할 것인지를 결정할 수 있다
  • 직접 연결되지 않은 ISP 뒤쪽의 경로에 대해서는 소유권이 없으므로 이에 대한 관여는 불가능 하다. 즉, 직접 연결된 2 개 이상의 ISP 와의 직접적인 통신에 대해서만 관여하고 경로를 선택할 수 있다
  • 독립된 공인 주소 끼리만의 통신을 위하여 별도의 AS 번호를 미리 등록, 할당 박도 사용해야 하는데, 이는 IANA 에 등록해야 한다
  • BGP 는 자체적으로 next-hop, loop 등의 문제를 갖고 있다. 이를 해결하기 위하여 사설 AS 번호, next-hop-self 등의 다양한 방법으로 이를 해결할 수 있다

Service Mash & SDN

SDN

  • Data Plane 은 트래픽 I/O 로 입력과 출력을 담당. Mac 을 통해 I/O 를 처리한다
  • Control Plane 은 경로 선택, NAT ( 주소 변경 ) , QoS ( 서비스의 품질 향상 - Policy, Shaping ) 을 담당. Routing Table, NAT Table, QoS Policy 등 주요 기능을 가진다
    • Policy 는 제한
    • Shaping 은 평균을 맞춘다

  • 이 Control Plane 을 한 곳으로 모아서 Control Plane 을 일일이 관리하는 것이 아닌 Controller 에서 한 번에 관리하게 할 수 있다. Controller 에서는 연결 구조를 다 확인할 수 있다
  • Controller 는 rule 을 각 agent 에게 보내어 관리한다
  • 이를 SDN 이라고 한다

Service Mash

K8S 의 경우 MSA 에 적합하여 최근 개발 방법을 위한 도구로 활용하고 있다

Service Mash 는 컨테이너의 쓰기 가능한 얇은 계층을 사용하여 MSA 를 관리하는데 사용된다. 위의 SDN 처럼 Service Mash 는 Data Plane 에 속한 각 Pod 의 Proxy 역활을 하는 SideCar 를 Service Mash Control Plane 에 모아서 한 번에 관리가 가능하다


CI & CD

CI

CI 는 기존 코드와 새로개발한 코드를 출시하기 위해 빌드, 테스트, 통합을 자동으로 하는 방법. '기능브랜치의 코드를 빌드하고 유닛 테스트를 실행하고, 통과하면 코드를 병합' 마지막으로 서비스 종류에 따라 바이너리, 컨테이너 이미지, 압축파일과 같은 아티팩트를 생성.

  • 우리는 코드 패키징->태그->컨테이너 이미지 저장소에 push
  • 빌드->테스트
  • 빌드 목적 : 저장소에 커밋한 모든 변경사항 받아서 코드에 에러가 없다는 것 확인하기 위해 build -> 실패하면 과정을 중지하고 코드 변경사항 반려후 개발자에게 통보 -> 성공하면 테스트로 넘어감
  • 테스트 : 유닛/기능 등의 테스트 진행. 테스트 실행 후 코드를 버전 숫자나 커밋 ID 로 패키지하고 태그해서 컨테이너이미지 저장소에 push

CD

CD 는 코드가 실 서비스에 배포될 준비가 되어있는지 추가테스트 진행 -> 자동으로 서비스 배포, 어떤 경우에는 수동으로 실서비스에 배포할 것인지 결정할 수 있음

  • 배포 - 출시 - 출시후 ( Service Mash 로의 연계 , 통보 )
  • 배포 : 빌드 / 테스트 된
profile
멋진 엔지니어가 될 때까지

0개의 댓글