1. Multi-Cloud Region/Zone 제공 정보 개선 방안��2. 현재 CSP별 Region/Zone 정보 제공 현황
CB-Spider
2024.11.27.
※ 개선 반영 완료 결과 참고: #1389 (comment)
API는 그대로 유지하고, 제공 정보 변경 작업
2
type ZoneStatus string
const (
ZoneAvailable ZoneStatus = "Available"
ZoneUnavailable ZoneStatus = "Unavailable"
NotSupported ZoneStatus = "StatusNotSupported"
)
type RegionZoneInfo struct {
Name string
DisplayName string
ZoneList []ZoneInfo
KeyValueList []KeyValue
}
type ZoneInfo struct {
Name string
DisplayName string
Status ZoneStatus
KeyValueList []KeyValue
}
type RegionZoneHandler interface {
ListRegionZone() ([]*RegionZoneInfo, error)
GetRegionZone(Name string) (RegionZoneInfo, error)
ListOrgRegion() (string, error) // return string: json format
ListOrgZone() (string, error) // return string: json format
}
type ZoneStatus string
const (
ZoneAvailable ZoneStatus = "Available"
ZoneUnavailable ZoneStatus = "Unavailable"
NotSupported ZoneStatus = "StatusNotSupported"
)
type RegionZoneInfo struct {
Name string
DisplayName string # (1) DisplayName 추상화
CSPDisplayName string # (2) CSP 제공 정보 추가
ZoneList []ZoneInfo
KeyValueList []KeyValue
}
type ZoneInfo struct {
Name string
DisplayName string # (1) DisplayName 추상화
CSPDisplayName string # (2) CSP 제공 정보 추가
Status ZoneStatus
KeyValueList []KeyValue
}
type RegionZoneHandler interface {
ListRegionZone() ([]*RegionZoneInfo, error)
GetRegionZone(Name string) (RegionZoneInfo, error)
ListOrgRegion() (string, error) // return string: json format
ListOrgZone() (string, error) // return string: json format
}
TO-BE
(1) DisplayName 추상화: “COUNTRY, REGION/CITY”
3
(1) DisplayName 추상화: “COUNTRY, REGION/CITY”
4
(1) DisplayName 추상화: “COUNTRY, REGION/CITY”
5
<적용 방안>
(1) Driver 팀: Yaml 파일에 맵핑 정보 추가 작업 진행(Yaml 규격 7page 참고)
(2) Server: Region/Zone 목록은 기존 Driver API 호출로 획득, � Yaml 맵핑 정보 활용하여 DisplayName 값 설정 후 반환
※ 추후 리전 추가 변경 시 코드 수정 없이 운영자가 해당 Yaml 파일 수정 후 운영
(2) CSPDisplayName 정보 신규 추가
* 추상화 하지 않음, CSP가 공식 제공하는 이름을 제공, CSP가 API를 제공하지 않을 경우 공식 정보를 제공
<1순위 부터 가능한 방법으로 추가 작업>
6
<적용 방안>
(1순위 방법) 맵핑 정보 관리 불필요, API로 얻어온 정보 그대로 제공
(2~3순위 방법) 맵핑 정보 관리 필요(CSP가 제공하는 공식 정보 기반으로)
(a) Driver 팀: Yaml 파일에 맵핑 정보 추가 작업 진행(Yaml 규격 7page 참고)
(b) Server: 해당 맵핑 정보 존재시, 해당 정보로 CSPDisplayName 정보 설정 후 반환
※ 추후 CSP 리전 정보 변경시, 코드 수정 없이 운영자가 해당 Yaml 파일 수정 후 운영
Region/Zone 정보 맵핑을 위한 Yaml 파일 규격
7
<주의>
혹시라도, Driver API:ListRegionZone() 등 제공시, 작성해주신 Yaml 목록을 읽어서 Region List나 Zone List를 제공해주시면 안됩니다.
Region, Zone 목록은 기존처럼 API로 현재 시점에 제공되는 Region/Zone 목록을 올려 주셔야 합니다.
서버에서는 올려 주시는 목록을 기반으로 맵핑 정보를 참고해서 DisplayName만 업데이트 해서 제공 예정입니다.
# ref) https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-regions-availability-zones.html
DisplayName:
us-east-2: United States, Ohio # Region DisplayName
us-east-2a: United States, Ohio # Zone DisplayName, 1a, az1 등의 표시는 불필요(Zone Name에 이미 포함), � # - Region DisplayName과 같더라도 추가해주세요.(도시가 다른 Zone들로 구성된 Case 고려된 항목)
… 중략
CSPDisplayName:
us-east-1: US East (N. Virginia) # Region CSPDisplayName
us-east-1a: US East (N. Virginia) # Zone CSPDisplayName, 1a, az1 등의 표시는 불필요(Zone Name에 이미 포함), � # - Region CSPDisplayName과 같더라도 추가해주세요.
… 중략
DisplayName format & Examples
8
[DisplayName Format]
[DisplayName 예시]
South Korea, Busan
South Korea, Jeju-do
South Korea, Jeollabuk-do
South Korea, Busan
South Korea, Jeju-do
South Korea, Jeollabuk-do/Jeonju # Jeonju-si에서 ‘-si’ 제거, 전주 Zone이 존재한다는 가정
이하 CSP별 현재 현황 참고
9
AWS
10
(Region/Zone 참고) https://docs.aws.amazon.com/local-zones/latest/ug/available-local-zones.html
Azure
11
GCP
12
Alibaba
13
Tencent
14
{
"regionzone": [
{
"Name": "ap-tokyo",
"DisplayName": "Northeast Asia(Tokyo)",
"ZoneList": [
{
"Name": "ap-tokyo-1",
"DisplayName": "Tokyo Zone 1",
"Status": "Available"
},
{
"Name": "ap-tokyo-2",
"DisplayName": "Tokyo Zone 2",
"Status": "Available"
}
]
},
{
"Name": "ap-seoul",
"DisplayName": "Northeast Asia(Seoul)",
"ZoneList": [
{
"Name": "ap-seoul-1",
"DisplayName": "Seoul Zone 1",
"Status": "Available"
},
{
"Name": "ap-seoul-2",
"DisplayName": "Seoul Zone 2",
"Status": "Available"
}
]
},
<curl 호출 결과>
(Region/Zone 참고) https://www.tencentcloud.com/document/product/213/6091?lang=en
IBM VPC
15
OpenStack
16
* Driver팀:
- 일단, 현재 운영(활용) 중이신 OpenStack 현황에 맞게 Yaml 파일 추가
* 최종 각 Spider 운영자가 맵핑 정보 설정/운영하는 방식으로 정리 예정
NCP Classic
17
NCP VPC
18
NHN
19
KT Classic
20
KT VPC
21