Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Questions to enhance network features #1710

Closed
yunkon-kim opened this issue Aug 13, 2024 · 3 comments
Closed

Questions to enhance network features #1710

yunkon-kim opened this issue Aug 13, 2024 · 3 comments
Labels
question Further information is requested

Comments

@yunkon-kim
Copy link
Member

yunkon-kim commented Aug 13, 2024

배경

네트워크 feature의 변경은 여러 부분에 영향을 줄 수 있다고 생각합니다. 그래서 전체적으로 코드를 분석했고요. 이를 공유드리고 몇 가지 질문/논의드리고자 합니다.

본래 개선 방향/시나리오: 사용자로부터 Root/main 네트워크의 CIDR block을 입력 받아, 적절히 Subnetting하여, vNet 및 Subnet에 할당할 계획을 가지고 있었습니다.

관련하여 Top-down으로 접근해봤을 때, 아시는 것 처럼 CreateMcis와 CreateMcisDynamic으로 구분할 수 있었습니다. 이를 기준으로 이해한 바를 설명 드립니다. 그리고, Spider의 Region/zone 업데이트 반영을 위해 Tumblebug에서 예상되는 네트워크 수정 사항을 말씀드립니다.

가독성을 위해 질문/논의 부분에 🙌 표시해 두었습니다 :-)

분석 내용 및 문의 사항

CreateMcis

요약 프로세스:

  1. 사전에 각각의 리소스(예, vNet, Subnets)를 생성합니다.
  2. MCIS 생성 요청 시, 미리 생성한 리소스의 정보 (vNetId, subnetId)를 입력합니다.
  3. MCIS라는 (논리적인?) 객체에 리소스의 정보를 대입/매칭/매다는 형태로 MCIS를 생성합니다.

코드 분석 결과:

  • 사전에 리소스(vNet, subnet)를 생성하는 방식이므로, 사용자로부터 Root/main 네트워크의 CIDR를 받더라도 활용할 부분이 없어 보였습니다. 🙌
    • @seokho-son
    • 동의합니다. 사용자 편의를 위해서, 서로 다른 CSP들에 한번에 vNet 자원을 생성하는 피쳐를 추가하는 경우(정책/템플릿 기반 통합 vNet 생성)에만 의미가 있을 것 같네요.
    • 해당 기능은 편의 기능에 가까움으로 특별히 시급하게 제공할 필요는 없다고 생각합니다.
  • 따라서, 이번 네트워크 feature 개선과 관련한 직접적인 수정 대상은 아니라는 결론을 내렸습니다. (mcir의 vnet, subnet 개선시 간접적(?)으로 개선)

CreateMcisDynamic

요약 프로세스 :

  1. dynamicMCIS 생성 요청시, Default 리소스가 없으면 생성합니다.
  2. MCIS라는 (논리적인?) 객체에 리소스의 정보를 대입/매칭/매다는 형태로 MCIS를 생성합니다.

코드 분석 결과:

  • 코드를 따라가다 보면, Default 리소스 생성하기 위해 아래 함수가 실행 됩니다.
    • func mcir.LoadDefaultResource(nsId string, resType string, connectionName string) error {}
  • 관련 이슈, 이유, 방안을 말씀드립니다. 검토 바랍니다. 🙌
    • 이슈: LoadDefaultResource에 사용자로부터 입력받는 Root/main 네트워크 CIDR block를 매개변수로 넘기는 것은 적절하지 않아 보였습니다.
    • 이유: LoadDefaultResource는 "all", "vnet", "sshkey", "sg" 에 대한 default 자원 생성에 관여하기 때문에, 함수의 매개 변수를 늘리는 것은 적절하지 않다고 판단했습니다.
    • 방안: vnet, subnet에 대해서는 별도의 func으로 개발 및 처리 (param: Root/main 네트워크 CIDR block)하고자 합니다.
      • 별도의 func 에서 Subnetting 및 createVnet 호출하는 방식이 될 것 같습니다.
      • @seokho-son
      • 넵, 기존 LoadDefaultResource에 직접 해당 피쳐를 넣는 것 보다는, 공용 함수로 구분하여 구성하는 것도 좋아 보입니다.
      • 다만, LoadDefaultResource 도 향후에는 개선이 꼭 필요하며, LoadDefaultResource를 통해 생성될 리소스의 요청값이 코드상에서 고정으로 입력되는 것 보다는, 사용자(및 빌트인) 템플릿을 통해서 생성될 리소스의 형상을 지정하는 방식이 될 것이라고 생각하고 있습니다.

(참고) zone 지정 관련 정책을 어디에서 결정/지정할 것인가는 조금 더 고민해 보도록 하겠습니다.

  • @seokho-son
  • Subnet 생성 방식 관련:
    • vNet 초기 생성 요청값 또는 Subnet 추가시 사용자를 통해 지정하는 것이 우선일 것 같습니다. 어짜피 해당 시점에 CIDR도 지정하게 되므로, Zone을 지정하는 시점에도 잘 맞을 것 같네요.
    • Zone을 지정하는 방식을 단계별로 반 자동화를 지원해줄 수도 있을 것 같습니다.
        1. 사용자가 Zone 리스트 확인 후 직접 기입(사용자 요청이 없는 경우, 시스템 기본값),
        1. 사용자가 정책 지정1: (CSP가 허용하는 경우) vNet 내부 Subnet들은 모두 다른 Zone에 배치,
        1. 사용자가 요청한 CIDR/예상 node 수 등으로 자동 판단하여 구성 등
  • VM 생성시, Subnet에 할당 방식 관련:
    • VM 생성 요청 받는 시점에, 사용자에게 직접 할당 대상 zone을 입력 받거나, 정책(fist-fit, greedy, RR, 울트라슈퍼스마트(?) 알고리즘 등 다양)을 입력할 수 있도록 지원 등
    • 단 해당 항목은, Network에 대한 측면보다는 컴퓨팅 노드 할당에 해당하므로, 제가 처리할 수도 있으니 너무 신경쓰지 않으셔도 됩니다. (Network에서만 subnet이 지원된다면~ 특별히 어렵지 않습니다.)

Spider region, zone 업데이트 관련

Spider의 VPC, Subnet API 개선 사항을 Tumblebug에 반영 및 테스트 하는 작업입니다.

관련 현황 공유

  • Spider 현황: Zone을 지정하여 리소스(Subnet, 등)를 생성하는 기능과 관련하여 작업이 진행중

개선 방안 1안으로 추진하려고 합니다. 검토 및 의견을 부탁드립니다. 🙌

  • 개선 방안 1안) 현 버전으로 개선 추진, 이슈 발생 시 대응 및 Spider로 이슈 리포트
  • 개선 방안 2안) Spider에서 작업 완료 이후, 적용
    • @seokho-son
    • SP에 특별히 뭐가 많이 바뀌나요?

모호한 부분이 있어 문의 드립니다. 🙌
.../mcir/vnet.go, .../mcir/subnet.go에 보면 Spider와 관련된 구조체 들이 있는데요. Spider와 1:1 매칭되는 것 같지 않습니다.. 혹시 관련하여 알고 계시는 바가 있으신지요?

  • @seokho-son
  • 현재 CB-SP 관련 구조체들을 주기적으로 업데이트를 하고 있지는 않습니다.
  • CB-TB 피쳐상 구동에 문제가 없으면, CB-SP의 구조체를 상시 업데이트할 이유는 없기 때문입니다.
  • 사실, CB-SP의 구조체 자체를 코드상에 가지고 있을 필요도 없으나, 마셜링 편의를 위해서 가지고 있다고 생각하시면 됩니다.
  • 현황상, 구조체를 코드에 보유하고 있으므로, 관련 작업이 있을때, 최신(프리릴리스 기준)으로 구조체를 업데이트하고, 진행하시면 수월합니다. :)
  • (참고) 현재 CB-Spider latest와 0.9.1는 구동 오류가 있다고 메인테이너께서 알려주셨으며, 0.9.1 이상을 사용하면 안된다고 알려주셨습니다. (한시적) CB-Tumblebug은 0.9.0으로만 작업해야 하며, CB-Spider에서 오류 수정 후 0.9.2 를 프리릴리스하시면, 따라 올라갈 예정입니다.
@yunkon-kim yunkon-kim added the question Further information is requested label Aug 13, 2024
@seokho-son
Copy link
Member

@yunkon-kim @seokho-son 키워드로 의견을 첨부하였습니다. (해당 이슈 내용 자체를 업데이트)

@yunkon-kim
Copy link
Member Author

yunkon-kim commented Aug 14, 2024

@seokho-son 이슈 자체 수정을 통해 답을 달아주시는 방식이 좋은 것 같습니다 :-)

전체적으로 충분히 이해를 하였습니다. 두 가지만 추가로 말씀드리면 될 것 같습니다.

Subnet 생성 시 Zone을 지정하는 방식

: 현황을 파악해본 바로는, zone 이름이 다양하고, 1, 2 처럼 숫자로 표기되는 경우가 있었습니다.
: 사용자가 대상 Zone을 입력하는 것을 가장 기본이 되는 방식으로 보고 있습니다.
: 추가로, any, any1, any2, any3 의 지정 방식을 지원하려고 합니다. (참고: 제 활용 경험을 기준의 (안))
: 정책이 정리되면 공유 드리겠습니다.

개선 방안 2안) Spider에서 작업 완료 이후, 적용
@seokho-son
SP에 특별히 뭐가 많이 바뀌나요?

SP에서 모든 CSP를 대상으로 테스트를 진행하고 있어서요. 테스트 완료 시점에 적용하는 (안) 이었습니다. 변경 사항 유/무에 대해서는 예상이 어렵습니다.

@yunkon-kim
Copy link
Member Author

충분한 질의 응답이 진행된 이슈로 Close 하겠습니다. (PR의 레퍼런스로는 지속 활용)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
question Further information is requested
Projects
None yet
Development

No branches or pull requests

2 participants