VPC Subnet Management Guide(KR) - cloud-barista/cb-spider GitHub Wiki
VPC/Subnet Management Guide
1. CB-Spider VPC/Subnet κ°μ
- μ¬μ©μλ VPC(Virtual Private Cloud) Nameμ μ€μ νμ¬ κ²©λ¦¬λ λ€νΈμν¬ νκ²½μ μμ±νκ³ , ν΄λΉ VPC λ΄μ Subnetμ ꡬμ±νμ¬ VM λ±μ μμμ λ°°μΉν μ μλ€.
- CB-Spiderκ° μ 곡νλ VPC/Subnet μ 보 λ° μ΄λ₯Ό νμ©ν VM μμ±κ³Όμ κ΄κ³κ° μλ κ·Έλ¦Όκ³Ό κ°λ€.
- μ¬μ©μλ μΆμνλ CB-Spider VPC/Subnet μ 보λ₯Ό νμ©νμ¬ μνλ λ€νΈμν¬ νκ²½(IP λμ, Zone λ±)μ ꡬμ±ν μ μλ€.
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β CB-Spider VPC/Subnet β
β β
β VPC (10.0.0.0/16) β
β βββ Subnet-1 (10.0.0.0/24, us-east-1a) β
β β βββ VM-1, VM-2, ... β
β βββ Subnet-2 (10.0.1.0/24, us-east-1b) β
β β βββ VM-3, VM-4, ... β
β βββ Subnet-3 (10.0.2.0/24, us-east-1c) β
β βββ VM-5, VM-6, ... β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
2. CB-Spider VPC/Subnet API λ° μ 곡 μ 보 κ·κ²©
- μ¬μ©μλ λ€μκ³Ό κ°μ CB-Spider REST APIλ₯Ό μ΄μ©νμ¬ VPC/Subnet μ 보λ₯Ό JSON κ·κ²©μΌλ‘ μ 곡λ°λλ€.
2.1 VPC κ΄λ¦¬ API
# VPC κ΄λ¦¬
POST /spider/vpc - Create VPC
GET /spider/vpc - List VPCs
GET /spider/vpc/{Name} - Get VPC
DELETE /spider/vpc/{Name} - Delete VPC
# VPC λ±λ‘/ν΄μ (κΈ°μ‘΄ CSP VPC μ°λ)
POST /spider/regvpc - Register VPC
DELETE /spider/regvpc/{Name} - Unregister VPC
# VPC λͺ©λ‘ μ‘°ν (μ 체)
GET /spider/allvpc - List All VPCs (CB-Spider + CSP)
GET /spider/allvpcinfo - List All VPCs Info
# VPC ν΅κ³
GET /spider/countvpc - Count All VPCs
GET /spider/countvpc/{ConnectionName} - Count VPCs by Connection
# CSP VPC μ§μ μμ
DELETE /spider/cspvpc/{Id} - Delete CSP VPC
2.2 Subnet κ΄λ¦¬ API
# Subnet κ΄λ¦¬
POST /spider/vpc/{VPCName}/subnet - Add Subnet
GET /spider/vpc/{VPCName}/subnet/{SubnetName} - Get Subnet
DELETE /spider/vpc/{VPCName}/subnet/{SubnetName} - Remove Subnet
# Subnet λ±λ‘/ν΄μ (κΈ°μ‘΄ CSP Subnet μ°λ)
POST /spider/regsubnet - Register Subnet
DELETE /spider/regsubnet/{Name} - Unregister Subnet
# Subnet ν΅κ³
GET /spider/countsubnet - Count All Subnets
GET /spider/countsubnet/{ConnectionName} - Count Subnets by Connection
# CSP Subnet μ§μ μμ
DELETE /spider/vpc/{VPCName}/cspsubnet/{Id} - Remove CSP Subnet
2.3 μ 곡 μ 보 κ·κ²©
VPC μ 보 (VPCInfo)
| νλ | μ€λͺ | μμ |
|---|---|---|
| IId | VPCμ μλ³μ μ 보 (NameId, SystemId) | β {Name: "vpc-01", SystemId: "vpc-1234abcd"} |
| IPv4_CIDR | VPCμ IPv4 CIDR λΈλ‘ | β "10.0.0.0/16", "172.16.0.0/12" λ±β μΌλΆ CSPλ VPC CIDR λ―Έμ§μ |
| SubnetInfoList | VPC λ΄ Subnet μ 보 리μ€νΈ | β μλ Subnet μ 보 μ°Έμ‘° |
| TagList | VPCμ ν λΉλ νκ·Έ 리μ€νΈ | β [{Key: "Environment", Value: "Production"}] |
| KeyValueList | CSPκ° μ 곡νλ μΆκ° VPC μ 보λ₯Ό Key/Value List ννλ‘ μ 곡 | β [{Key: "State", Value: "available"}] |
Subnet μ 보 (SubnetInfo)
| νλ | μ€λͺ | μμ |
|---|---|---|
| IId | Subnetμ μλ³μ μ 보 (NameId, SystemId) | β {Name: "subnet-01", SystemId: "subnet-5678efgh"} |
| Zone | Subnetμ΄ μμΉν κ°μ©μμ(Zone) | β "us-east-1a", "ap-northeast-2a" λ± |
| IPv4_CIDR | Subnetμ IPv4 CIDR λΈλ‘ | β "10.0.0.0/24", "10.0.1.0/24" λ± |
| TagList | Subnetμ ν λΉλ νκ·Έ 리μ€νΈ | β [{Key: "Tier", Value: "Public"}] |
| KeyValueList | CSPκ° μ 곡νλ μΆκ° Subnet μ 보λ₯Ό Key/Value List ννλ‘ μ 곡 | β [{Key: "AvailableIpAddressCount", Value: "251"}] |
3. CB-Spider VPC/Subnet API λ° μ 곡 μ 보 μμ
3.1 VPC μμ± μμ
- AWSμμ
vpc-01VPCμ 3κ°μ Subnetμ μμ±νλ API νΈμΆ λ° κ²°κ³Ό μμκ° λ€μκ³Ό κ°λ€.
curl -sX 'POST' 'http://localhost:1024/spider/vpc' \
-H 'Content-Type: application/json' \
-d '{
"ConnectionName": "aws-config01",
"ReqInfo": {
"Name": "vpc-01",
"IPv4_CIDR": "10.0.0.0/16",
"SubnetInfoList": [
{
"Name": "subnet-01",
"Zone": "us-east-1a",
"IPv4_CIDR": "10.0.0.0/24"
},
{
"Name": "subnet-02",
"Zone": "us-east-1b",
"IPv4_CIDR": "10.0.1.0/24"
},
{
"Name": "subnet-03",
"Zone": "us-east-1c",
"IPv4_CIDR": "10.0.2.0/24"
}
]
}
}' | jq
μλ΅ μμ:
{
"IId": {
"NameId": "vpc-01",
"SystemId": "vpc-0a1b2c3d4e5f67890"
},
"IPv4_CIDR": "10.0.0.0/16",
"SubnetInfoList": [
{
"IId": {
"NameId": "subnet-01",
"SystemId": "subnet-0a1b2c3d"
},
"Zone": "us-east-1a",
"IPv4_CIDR": "10.0.0.0/24",
"KeyValueList": [
{
"Key": "AvailableIpAddressCount",
"Value": "251"
},
{
"Key": "State",
"Value": "available"
}
]
},
{
"IId": {
"NameId": "subnet-02",
"SystemId": "subnet-1b2c3d4e"
},
"Zone": "us-east-1b",
"IPv4_CIDR": "10.0.1.0/24",
"KeyValueList": [
{
"Key": "AvailableIpAddressCount",
"Value": "251"
},
{
"Key": "State",
"Value": "available"
}
]
},
{
"IId": {
"NameId": "subnet-03",
"SystemId": "subnet-2c3d4e5f"
},
"Zone": "us-east-1c",
"IPv4_CIDR": "10.0.2.0/24",
"KeyValueList": [
{
"Key": "AvailableIpAddressCount",
"Value": "251"
},
{
"Key": "State",
"Value": "available"
}
]
}
],
"KeyValueList": [
{
"Key": "State",
"Value": "available"
},
{
"Key": "IsDefault",
"Value": "false"
},
{
"Key": "DhcpOptionsId",
"Value": "dopt-0a1b2c3d"
}
]
}
3.2 VPC μ‘°ν μμ
- AWS
vpc-01VPC μ 보 νΈμΆ API λ° μ 곡 μ 보 μμκ° λ€μκ³Ό κ°λ€.
curl -sX 'GET' 'http://localhost:1024/spider/vpc/vpc-01?ConnectionName=aws-config01' | jq
μλ΅ μμ:
{
"IId": {
"NameId": "vpc-01",
"SystemId": "vpc-0a1b2c3d4e5f67890"
},
"IPv4_CIDR": "10.0.0.0/16",
"SubnetInfoList": [
{
"IId": {
"NameId": "subnet-01",
"SystemId": "subnet-0a1b2c3d"
},
"Zone": "us-east-1a",
"IPv4_CIDR": "10.0.0.0/24"
},
{
"IId": {
"NameId": "subnet-02",
"SystemId": "subnet-1b2c3d4e"
},
"Zone": "us-east-1b",
"IPv4_CIDR": "10.0.1.0/24"
},
{
"IId": {
"NameId": "subnet-03",
"SystemId": "subnet-2c3d4e5f"
},
"Zone": "us-east-1c",
"IPv4_CIDR": "10.0.2.0/24"
}
],
"KeyValueList": [
{
"Key": "State",
"Value": "available"
}
]
}
3.3 VPC λͺ©λ‘ μ‘°ν μμ
curl -sX 'GET' 'http://localhost:1024/spider/vpc?ConnectionName=aws-config01' | jq
μλ΅ μμ:
{
"vpc": [
{
"IId": {
"NameId": "vpc-01",
"SystemId": "vpc-0a1b2c3d4e5f67890"
},
"IPv4_CIDR": "10.0.0.0/16",
"SubnetInfoList": [...]
},
{
"IId": {
"NameId": "vpc-02",
"SystemId": "vpc-1b2c3d4e5f678901"
},
"IPv4_CIDR": "172.16.0.0/16",
"SubnetInfoList": [...]
}
]
}
3.4 Subnet μΆκ° μμ
- κΈ°μ‘΄ VPCμ μλ‘μ΄ Subnetμ μΆκ°νλ API νΈμΆ μμκ° λ€μκ³Ό κ°λ€.
curl -sX 'POST' 'http://localhost:1024/spider/vpc/vpc-01/subnet' \
-H 'Content-Type: application/json' \
-d '{
"ConnectionName": "aws-config01",
"ReqInfo": {
"Name": "subnet-04",
"Zone": "us-east-1d",
"IPv4_CIDR": "10.0.3.0/24",
"TagList": [
{
"Key": "Tier",
"Value": "Private"
}
]
}
}' | jq
μλ΅ μμ:
{
"IId": {
"NameId": "vpc-01",
"SystemId": "vpc-0a1b2c3d4e5f67890"
},
"IPv4_CIDR": "10.0.0.0/16",
"SubnetInfoList": [
{
"IId": {
"NameId": "subnet-01",
"SystemId": "subnet-0a1b2c3d"
},
"Zone": "us-east-1a",
"IPv4_CIDR": "10.0.0.0/24"
},
{
"IId": {
"NameId": "subnet-02",
"SystemId": "subnet-1b2c3d4e"
},
"Zone": "us-east-1b",
"IPv4_CIDR": "10.0.1.0/24"
},
{
"IId": {
"NameId": "subnet-03",
"SystemId": "subnet-2c3d4e5f"
},
"Zone": "us-east-1c",
"IPv4_CIDR": "10.0.2.0/24"
},
{
"IId": {
"NameId": "subnet-04",
"SystemId": "subnet-3d4e5f6a"
},
"Zone": "us-east-1d",
"IPv4_CIDR": "10.0.3.0/24",
"TagList": [
{
"Key": "Tier",
"Value": "Private"
}
]
}
]
}
3.5 Subnet μ‘°ν μμ
curl -sX 'GET' 'http://localhost:1024/spider/vpc/vpc-01/subnet/subnet-01?ConnectionName=aws-config01' | jq
μλ΅ μμ:
{
"IId": {
"NameId": "subnet-01",
"SystemId": "subnet-0a1b2c3d"
},
"Zone": "us-east-1a",
"IPv4_CIDR": "10.0.0.0/24",
"KeyValueList": [
{
"Key": "AvailableIpAddressCount",
"Value": "251"
},
{
"Key": "State",
"Value": "available"
}
]
}
3.6 Subnet μμ μμ
curl -sX 'DELETE' 'http://localhost:1024/spider/vpc/vpc-01/subnet/subnet-04' \
-H 'Content-Type: application/json' \
-d '{
"ConnectionName": "aws-config01"
}' | jq
μλ΅ μμ:
{
"Result": "true"
}
3.7 VPC μμ μμ
curl -sX 'DELETE' 'http://localhost:1024/spider/vpc/vpc-01' \
-H 'Content-Type: application/json' \
-d '{
"ConnectionName": "aws-config01"
}' | jq
μλ΅ μμ:
{
"Result": "true"
}
3.8 κ°μ μμ (force) μμ
- VPC λλ Subnetμ μ°κ²°λ μμ(VM, Security Group λ±)μ΄ μμ κ²½μ°,
force=trueμ΅μ μ μ¬μ©νμ¬ κ°μ μμ ν μ μλ€.
# VPC κ°μ μμ
curl -sX 'DELETE' 'http://localhost:1024/spider/vpc/vpc-01?force=true' \
-H 'Content-Type: application/json' \
-d '{
"ConnectionName": "aws-config01"
}' | jq
# Subnet κ°μ μμ
curl -sX 'DELETE' 'http://localhost:1024/spider/vpc/vpc-01/subnet/subnet-01?force=true' \
-H 'Content-Type: application/json' \
-d '{
"ConnectionName": "aws-config01"
}' | jq
4. CB-Spider VPC/Subnet AdminWeb μ 곡 μμ
-
λ€μ μμλ‘ λμ CSP μ ν λ° VPC/Subnet μ 보λ₯Ό μμ²νλ€.
- Connection μ ν: AdminWeb μλ¨μμ λμ CSP Connection μ ν
- VPC λ©λ΄ μ κ·Ό: μ’μΈ‘ λ©λ΄μμ "VPC" μ ν
- VPC μμ±: "Create VPC" λ²νΌ ν΄λ¦ ν νμν μ 보 μ λ ₯
- Subnet κ΄λ¦¬: VPC μμΈ νλ©΄μμ Subnet μΆκ°/μμ κ°λ₯
4.1 VPC λͺ©λ‘ νλ©΄ μμ
AdminWebμμ VPC λͺ©λ‘μ μ‘°ννλ©΄ λ€μκ³Ό κ°μ μ λ³΄κ° νμλλ€:
- VPC Name
- VPC SystemId (CSP ID)
- IPv4 CIDR
- Subnet κ°μ
- μν (State)
- μμ± μκ°
- μμ λ²νΌ (μμΈλ³΄κΈ°, μμ λ±)
4.2 VPC μμ± νλ©΄ μμ
AdminWebμμ VPC μμ± μ λ€μ μ 보λ₯Ό μ λ ₯νλ€:
- VPC Name: CB-Spiderμμ κ΄λ¦¬ν VPC μ΄λ¦
- IPv4 CIDR: VPCμ IP λμ (μ: 10.0.0.0/16)
- Subnet μ 보 (1κ° μ΄μ νμ):
- Subnet Name
- Zone (κ°μ©μμ)
- IPv4 CIDR (VPC CIDR λ²μ λ΄)
- Tags (μ ν)
4.3 VPC μμΈ νλ©΄ μμ
VPC μμΈ νλ©΄μμλ λ€μ μ 보μ μμ μ΄ κ°λ₯νλ€:
κΈ°λ³Έ μ 보:
- VPC IId (NameId, SystemId)
- IPv4 CIDR
- State
- KeyValueList (CSP μΆκ° μ 보)
Subnet κ΄λ¦¬:
- Subnet λͺ©λ‘ νμ
- Add Subnet λ²νΌ: μ Subnet μΆκ°
- Remove λ²νΌ: κ°λ³ Subnet μμ
- Subnet μμΈ μ 보 보기
μμ λ²νΌ:
- Delete VPC: VPC μμ
- Refresh: μ 보 κ°±μ
5. μ£Όμ μ¬μ© μλ리μ€
5.1 μλ‘μ΄ λ€νΈμν¬ νκ²½ ꡬμ±
- VPC μμ± (Create VPC)
- νμν Subnet μΆκ° (Add Subnet)
- Security Group μμ± λ° μ°κ²°
- VM μμ± μ ν΄λΉ VPC/Subnet μ§μ
5.2 κΈ°μ‘΄ CSP VPC μ°λ
- CSPμ μ΄λ―Έ μ‘΄μ¬νλ VPCμ μ 보 νμΈ (SystemId)
- Register VPC APIλ₯Ό ν΅ν΄ CB-Spiderμ λ±λ‘
- CB-Spiderμμ ν΄λΉ VPC κ΄λ¦¬ κ°λ₯
5.3 Multi-Zone κ³ κ°μ©μ± ꡬμ±
- νλμ VPC μμ±
- μλ‘ λ€λ₯Έ Zoneμ μ¬λ¬ Subnet μΆκ°
- Zone A: 10.0.0.0/24
- Zone B: 10.0.1.0/24
- Zone C: 10.0.2.0/24
- κ° Subnetμ VM λΆμ° λ°°μΉ
6. μ£Όμμ¬ν λ° μ μ½μ¬ν
6.1 CSPλ³ VPC CIDR μ§μ μ°¨μ΄
- AWS: VPC CIDR νμ, /16 ~ /28 λ²μ μ§μ
- Azure: Virtual Network CIDR νμ, /8 ~ /29 λ²μ μ§μ
- GCP: VPC CIDR μλ ν λΉ (Subnetλ³ CIDRλ§ μ§μ )
- Alibaba: VPC CIDR νμ, /8 ~ /24 λ²μ μ§μ
6.2 Subnet CIDR μ€μ
- Subnet CIDRμ VPC CIDR λ²μ λ΄μ μμ΄μΌ ν¨
- Subnet κ° CIDRμ΄ κ²ΉμΉμ§ μμμΌ ν¨
- CSPλ³λ‘ μμ½λ IP μ£Όμ κ°μκ° λ€λ¦ (λ³΄ν΅ 5κ°)
6.3 VPC/Subnet μμ
- VPC μμ μ λ΄λΆμ λͺ¨λ Subnetμ΄ ν¨κ» μμ λ¨
- VM, Security Group λ±μ΄ μ°κ²°λ VPC/Subnetμ μμ λΆκ°
- κ°μ μμ (force=true) μ μ°κ²°λ μμλ ν¨κ» μμ λ¨ (μ£Όμ!)
6.4 Zone μ§μ
- Subnet μμ± μ Zone μ§μ μ μ νμ¬ν
- Zoneμ μ§μ νμ§ μμΌλ©΄ Connectionμ κΈ°λ³Έ Zone μ¬μ©
- μΌλΆ CSPλ Zone μ ν λΆκ°λ₯ (리μ λ¨μ Subnet)
7. API μλ΅ μ½λ
| HTTP Status | μ€λͺ |
|---|---|
| 200 OK | μμ² μ±κ³΅ |
| 400 Bad Request | μλͺ»λ μμ² (JSON ꡬ쑰 μ€λ₯, νμ νλ λλ½ λ±) |
| 404 Not Found | 리μμ€λ₯Ό μ°Ύμ μ μμ |
| 500 Internal Server Error | μλ² λ΄λΆ μ€λ₯ |