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

[Azure] Fixed zone control issue #1311

Merged
merged 5 commits into from
Sep 9, 2024

Conversation

ish-hcc
Copy link
Contributor

@ish-hcc ish-hcc commented Aug 29, 2024

Azure

  • Fixed zone control issue for creating VM, K8S and disk attachment.
  • Azure dose not support zone for subnet and VPC.
  • Azure only can store tags to VPC.
  • Store zone information in VPC tags using the subnet name ID and zone
  • Azure has reserved tag prefixes, azure, microsoft and windows. So, if subnet name ID starts with azure it can't add the tag. So use subnet- prefix when adding the tags.
  • Hides the tags used to obtain zone information.

@ish-hcc ish-hcc self-assigned this Aug 29, 2024
@ish-hcc
Copy link
Contributor Author

ish-hcc commented Aug 29, 2024

Fix #1297

@powerkimhub powerkimhub self-requested a review August 30, 2024 01:32
@powerkimhub
Copy link
Member

@ish-hcc

| • Store zone information in VPC tags using the subnet name ID and zone

  • 수고 많으셨습니다.
  • 관련하여 문의 드립니다.
  • ConnectionInfo.RegionInfo.TargetZone 정보를 사용하지 않으시고 Tag를 활용하신 사유가 궁금합니다.
    • 구현에 이슈나 부족한 부분이 있으셨는지요?

@ish-hcc
Copy link
Contributor Author

ish-hcc commented Aug 30, 2024

@powerkimhub
말씀하신 TargetZone이 Disk 쪽에서만 모두 구현되어 있어 유효한 것으로 보입니다
Subnet 쪽에서는 생성, 삭제 시에만 GetZoneLevelCloudConnection() 를 호출 하는 것으로 보입니다
Subnet으로 부터 Zone 정보를 직접적으로 얻기 위해서는 DB에 접근 하는 방법이 유일해 보이는데
CSP Driver단에서 접근하는 것은 로직상 맞지 않는 것 같아 Tag를 이용하여 처리 하는 것으로 구성하였습니다

다른 CSP들에서도 Subnet에서 Zone 정보가 제공되지 않는 경우 같은 문제가 있을것으로 보여집니다.

@powerkimhub
Copy link
Member

@ish-hcc

  • 아, 그랬군요.
  • 관련하여 Subnet 보완 해드리도록 하겠습니다.

@powerkimhub
Copy link
Member

@ish-hcc

  • Azure Driver Subnet 파트를 수정할 필요는 없을 것 같습니다.
  • Subnet 생성시 사용자가 입력한 Subnet의 TargetZone 정보는 서버에서 메타DB에 관리하고 있다가
  • Subnet 정보 제공 시에 서버에서 TargetZone 정보를 채워서 사용자에게 제공하고 있습니다.
  • 다만, VM을 생성할 때 사용자가 subnet을 설정하는 데, 이때 Subnet NameId만 입력하므로
    • NameId 값만 Driver에 전달되게 됩니다.
    • 이때, 서버에서 ConnectionInfo.RegionInfo.TargetZone을 설정해서 내려 보내도록 하겠습니다.
    • ConnectionInfo.RegionInfo.TargetZone이 설정되어 있으면, TargetZone에 VM을 생성해주시고
    • 설정이 안되어 있으면, 기존 처럼 ConnectionInfo.RegionInfo.Zone에 VM을 생성해주시면 될 것 같습니다.
  • Azure:VM이 Zone-based로 운영이 가능하다는 전제 하에 시나리오 입니다.
  • Azure:VM의 경우 Zone을 지정해서 VM 생성이 가능한지 문의 드립니다.
  • 그렇다면, VM ConnectionInfo...TargetZone 값을 서버에서 반영해드리도록 하겠습니다.
    • VM 제공 정보 시에는 Azure가 Zone 정보를 제공할 터이니 그대로 활용하면 될 듯합니다.

@ish-hcc
Copy link
Contributor Author

ish-hcc commented Aug 31, 2024

@ish-hcc

  • Azure Driver Subnet 파트를 수정할 필요는 없을 것 같습니다.

  • Subnet 생성시 사용자가 입력한 Subnet의 TargetZone 정보는 서버에서 메타DB에 관리하고 있다가

  • Subnet 정보 제공 시에 서버에서 TargetZone 정보를 채워서 사용자에게 제공하고 있습니다.

  • 다만, VM을 생성할 때 사용자가 subnet을 설정하는 데, 이때 Subnet NameId만 입력하므로

    • NameId 값만 Driver에 전달되게 됩니다.
    • 이때, 서버에서 ConnectionInfo.RegionInfo.TargetZone을 설정해서 내려 보내도록 하겠습니다.
    • ConnectionInfo.RegionInfo.TargetZone이 설정되어 있으면, TargetZone에 VM을 생성해주시고
    • 설정이 안되어 있으면, 기존 처럼 ConnectionInfo.RegionInfo.Zone에 VM을 생성해주시면 될 것 같습니다.
  • Azure:VM이 Zone-based로 운영이 가능하다는 전제 하에 시나리오 입니다.

  • Azure:VM의 경우 Zone을 지정해서 VM 생성이 가능한지 문의 드립니다.

  • 그렇다면, VM ConnectionInfo...TargetZone 값을 서버에서 반영해드리도록 하겠습니다.

    • VM 제공 정보 시에는 Azure가 Zone 정보를 제공할 터이니 그대로 활용하면 될 듯합니다.

@powerkimhub
네 VM에서 Zone baesd 제어가 가능하기 때문에 말씀해주신 시나리오 대로 진행되면 구현이 가능해 보입니다
감사합니다

@ish-hcc
Copy link
Contributor Author

ish-hcc commented Aug 31, 2024

@powerkimhub
마찬가지로 k8s 관련문제도 VM 시나리오와 같이 동일하게 진행된다면 zone based 생성이 가능할 것 같습니다

@powerkimhub
Copy link
Member

@ish-hcc

  • Cluster도 zone과 영향이 있나요?
  • 초기에는 없었던 걸로 알고 있었는데 관련 부분 확인해보겠습니다.

@ish-hcc
Copy link
Contributor Author

ish-hcc commented Sep 9, 2024

@powerkimhub
책임님 안녕하세요? 혹시 subnet Target Zone 지원 관련해서 언제 추가 되는지 알 수 있을까요?
OpenStack 도 비슷한 방식으로 진행되어야 할꺼 같습니다 (NHN 은 아직 확인 필요.)

@powerkimhub
Copy link
Member

@powerkimhub 책임님 안녕하세요? 혹시 subnet Target Zone 지원 관련해서 언제 추가 되는지 알 수 있을까요? OpenStack 도 비슷한 방식으로 진행되어야 할꺼 같습니다 (NHN 은 아직 확인 필요.)

@ish-hcc

  • 지금 진행 중에 있습니다.
  • 오늘 중으로 배포 가능할 걸로 예상됩니다.

@ish-hcc
Copy link
Contributor Author

ish-hcc commented Sep 9, 2024

@powerkimhub 넵 확인해 주셔서 감사합니다!

@powerkimhub
Copy link
Member

powerkimhub commented Sep 9, 2024

@ish-hcc


  • 일단, 관련한 서버 코드를 반영하였습니다.
    • 부족한 부분 있으시면 남겨 주시기 바랍니다.
  • 현재, ConnectionInfo.RegionInfo.TargetZone을 설정 후 호출되는 API 목록은 아래와 같습니다.
  • 꼭, 사용하실 필요는 없고 Subnet, VM, Disk Get/Delete 등의 처리 시에 Zone 정보가 필요한데,
    • CSP에서 Zone 정보를 얻을 수 없을 때 활용하시면 되겠습니다.
    • Subnet, Disk는 Create 시에 사용자가 필요시 입력 인자로 Zone(TargetZone)을 설정하며, 이 정보를 활용
      • 사용자가 별도 설정안하면, 기존처럼 Zone(DefaultZone) 활용해서 처리.
  • 가급적 CSP에서 얻을 수 있는 Zone 정보 활용을 권고 드립니다.
    • Subnet 경우 대부분 VPC에 매달려서 CRUD가 처리 되므로, VPC 정보를 잘 활용.
    • StartVM 시에는 입력 인자로 사용자가 SubnetName을 입력, Subnet으로 부터 Zone 정보 획득하여 활용 등
    • Zone 정보 획득이 불가능한 CSP의 경우, 아래의 API에 대해서는 ConnectionInfo.RegionInfo.TargetZone 정보 활용
  • 아래 API 외에도 처리가 필요한 경우 공유해주시기 바랍니다.
  • List의 경우,
    • 대상 Region의 모든 Zone에 포함된 목록을 merge하여 올려주시면 되겠습니다.
  • ※ MyImage: 현재 이슈 완료 후 별도 추진

  • [Sever: TargetInfo 설정 지원 API]

    [VPCHandler]
        RemoveSubnet
    
    [VMHandler]
        ControlVM
        DeleteVM
        GetVM
        GetVMStatus
        StartVM 
    
    [DiskHandler]
        AttachDisk
        DetachDisk
        DeleteDisk
        GetDisk
        ChangeDiskSize
    

@ish-hcc
Copy link
Contributor Author

ish-hcc commented Sep 9, 2024

@powerkimhub
네 감사합니다 수고 많으셨습니다! 확인 후 반영해보도록 하겠습니다

@ish-hcc
Copy link
Contributor Author

ish-hcc commented Sep 9, 2024

Ready to merge.

@powerkimhub powerkimhub merged commit 583deff into cloud-barista:master Sep 9, 2024
3 checks passed
@ish-hcc ish-hcc deleted the azure_fix_zone_control branch September 9, 2024 15:19
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants