Connection Management Guide(KR) - cloud-barista/cb-spider GitHub Wiki
Connection Management Guide
1. CB-Spider Register Connection κ°μ
- λ©ν°ν΄λΌμ°λ μΈνλΌλ₯Ό μ μ΄νλ €λ©΄ λ¨Όμ λμ ν΄λΌμ°λ(CSP)μ μ°κ²° μ€μ (Connection Configuration) μ λ±λ‘ν΄μΌ ν©λλ€.
- μ°κ²° μ€μ λ±λ‘ νμλ λ±λ‘ μ λΆμ¬ν μ°κ²° μ΄λ¦(Connection Name) μ μ΄μ©νμ¬ λμ ν΄λΌμ°λμ μ°κ²° λ° μ μ΄ν μ μμ΅λλ€.
- μ°κ²° μ€μ λ±λ‘μ λ€μ 4λ¨κ³λ‘ μ§νν©λλ€:
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β CB-Spider μ°κ²° μ€μ λ±λ‘ β
β β
β (1) Cloud Driver λ±λ‘ β
β βββ CSP λλΌμ΄λ² νλ¬κ·ΈμΈ (μ: aws-driver-v1.0.so) β
β β
β (2) Cloud Credential λ±λ‘ β
β βββ CSP μ μ ν€ (μ: AccessKey, SecretKey) β
β β
β (3) Cloud Region/Zone λ±λ‘ β
β βββ λμ 리μ λ° μ‘΄ (μ: us-east-2, us-east-2a) β
β β
β (4) Cloud Connection λ±λ‘ β
β βββ Driver + Credential + Region μ‘°ν© β
β β λͺ¨λ API νΈμΆμ μ¬μ©ν ConnectionName μμ± β
β β
β ββββββββββββ βββββββββββββββ ββββββββββββββ β
β β Driver β β Credential β βRegion/Zone β β
β ββββββ¬ββββββ ββββββββ¬βββββββ βββββββ¬βββββββ β
β βββββββββββββββββΌββββββββββββββββ β
β βΌ β
β βββββββββββββββββββββββ β
β β Connection Config β β
β β (ConnectionName) β β
β βββββββββββββββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
μ°Έκ³
- (1), (2), (3) λ¨κ³λ μμμ κ΄κ³μμ΄ λ±λ‘ν μ μμ΅λλ€.
- (4) λ¨κ³λ μμ 3κ°μ§ λ±λ‘μ΄ λͺ¨λ μλ£λ νμ λ±λ‘ κ°λ₯ν©λλ€.
- Credential λ°κΈ λ°©λ²μ How to get CSP Credentialsλ₯Ό μ°Έκ³ νμΈμ.
- μλ μΌκ΄ λ±λ‘μ΄ νμν κ²½μ° Default Connection Helper λꡬλ₯Ό μ°Έκ³ νμΈμ.
2. μ¬μ μꡬμ¬ν
- CB-Spider μλ²κ° μ€ν μ€μ΄μ΄μΌ ν©λλ€.
- API νμΈμ μν
curlλ°jq(λλjson_pp) μ€μΉ - CSP Credential μ€λΉ (μ: AWS Access Key, GCP Service Account Key)
3. CB-Spider μ°κ²° μ€μ API λͺ μΈ
- CB-Spider REST APIλ₯Ό ν΅ν΄ μ°κ²° μ€μ μ λ±λ‘ λ° κ΄λ¦¬ν μ μμ΅λλ€.
3.1 μ°κ²° μ€μ API μλν¬μΈνΈ
# Cloud Driver
POST /spider/driver - Cloud Driver λ±λ‘
GET /spider/driver - Cloud Driver λͺ©λ‘ μ‘°ν
GET /spider/driver/{DriverName} - Cloud Driver μ‘°ν
DELETE /spider/driver/{DriverName} - Cloud Driver μμ
# Cloud Credential
POST /spider/credential - Cloud Credential λ±λ‘
GET /spider/credential - Cloud Credential λͺ©λ‘ μ‘°ν
GET /spider/credential/{CredentialName} - Cloud Credential μ‘°ν
DELETE /spider/credential/{CredentialName} - Cloud Credential μμ
# Cloud Region/Zone
POST /spider/region - Cloud Region/Zone λ±λ‘
GET /spider/region - Cloud Region λͺ©λ‘ μ‘°ν
GET /spider/region/{RegionName} - Cloud Region μ‘°ν
DELETE /spider/region/{RegionName} - Cloud Region μμ
# Cloud Connection Config
POST /spider/connectionconfig - Cloud Connection λ±λ‘
GET /spider/connectionconfig - Cloud Connection λͺ©λ‘ μ‘°ν
GET /spider/connectionconfig/{ConfigName} - Cloud Connection μ‘°ν
DELETE /spider/connectionconfig/{ConfigName} - Cloud Connection μμ
3.2 μμ² νλΌλ―Έν°
Cloud Driver λ±λ‘
| νλΌλ―Έν° | μ€λͺ | μμ |
|---|---|---|
| DriverName | λλΌμ΄λ² μ΄λ¦ | aws-driver01 |
| ProviderName | ν΄λΌμ°λ μ 곡μ μ΄λ¦ | AWS, GCP, AZURE, ALIBABA |
| DriverLibFileName | λλΌμ΄λ² λΌμ΄λΈλ¬λ¦¬ νμΌλͺ | aws-driver-v1.0.so |
Cloud Credential λ±λ‘
| νλΌλ―Έν° | μ€λͺ | μμ |
|---|---|---|
| CredentialName | Credential μ΄λ¦ | aws-credential01 |
| ProviderName | ν΄λΌμ°λ μ 곡μ μ΄λ¦ | AWS |
| KeyValueInfoList | Credential ν€-κ° μ | μλ μμ μ°Έκ³ |
Cloud Region/Zone λ±λ‘
| νλΌλ―Έν° | μ€λͺ | μμ |
|---|---|---|
| RegionName | 리μ μ΄λ¦ | aws-ohio |
| ProviderName | ν΄λΌμ°λ μ 곡μ μ΄λ¦ | AWS |
| KeyValueInfoList | 리μ /μ‘΄ ν€-κ° μ | Region: us-east-2, Zone: us-east-2a |
Cloud Connection λ±λ‘
| νλΌλ―Έν° | μ€λͺ | μμ |
|---|---|---|
| ConfigName | μ°κ²° μ€μ μ΄λ¦ | aws-ohio-config |
| ProviderName | ν΄λΌμ°λ μ 곡μ μ΄λ¦ | AWS |
| DriverName | λ±λ‘ν λλΌμ΄λ² μ΄λ¦ | aws-driver01 |
| CredentialName | λ±λ‘ν Credential μ΄λ¦ | aws-credential01 |
| RegionName | λ±λ‘ν 리μ μ΄λ¦ | aws-ohio |
4. CB-Spider μ°κ²° μ€μ API μ¬μ© μμ
λ€μμ AWSμ Ohio, Oregon 2κ° λ¦¬μ μ λν μ°κ²° μ€μ λ±λ‘ μμμ λλ€.
4.1 Cloud Driver λ±λ‘
curl -sX POST http://localhost:1024/spider/driver \
-H 'Content-Type: application/json' \
-d '{
"DriverName": "aws-driver01",
"ProviderName": "AWS",
"DriverLibFileName": "aws-driver-v1.0.so"
}' | json_pp
μλ΅ μμ:
{
"DriverLibFileName" : "aws-driver-v1.0.so",
"DriverName" : "aws-driver01",
"ProviderName" : "AWS"
}
4.2 Cloud Credential λ±λ‘
XXXXXXXXXXXXXXXXXXXXXXXλΆλΆμ μ€μ CSPμμ λ°κΈλ°μ μ λ³΄λ‘ κ΅μ²΄νμΈμ.
curl -sX POST http://localhost:1024/spider/credential \
-H 'Content-Type: application/json' \
-d '{
"CredentialName": "aws-credential01",
"ProviderName": "AWS",
"KeyValueInfoList": [
{"Key": "aws_access_key_id", "Value": "XXXXXXXXXXXXXXXXXXXXXXX"},
{"Key": "aws_secret_access_key", "Value": "XXXXXXXXXXXXXXXXXXXXXXX"}
]
}' | json_pp
μλ΅ μμ:
{
"CredentialName" : "aws-credential01",
"KeyValueInfoList" : [
{
"Key" : "ClientId",
"Value" : "XXXXXXXXXXXXXXXXXXXXXXX"
},
{
"Key" : "ClientSecret",
"Value" : "XXXXXXXXXXXXXXXXXXXXXXX"
}
],
"ProviderName" : "AWS"
}
4.3 Cloud Region/Zone λ±λ‘
ν: λ±λ‘ν Region μ΄λ¦(κ°)μ νμΈνλ €λ©΄ Region/Zone Info Guideμ μ°κ²° μ€μ μ APIλ₯Ό νμ©νμΈμ. μ:
GET /spider/preconfig/regionzone?DriverName=aws-driver01&CredentialName=aws-credential01
μ¬λ¬ 리μ /μ‘΄μ ν λ²μ λ±λ‘νλ μμ (AWS Ohio, Oregon):
regions=("aws-ohio:us-east-2:us-east-2a"
"aws-oregon:us-west-2:us-west-2a")
for region in "${regions[@]}"; do
IFS=":" read -r RegionName Region Zone <<< "$region"
curl -sX POST http://localhost:1024/spider/region \
-H 'Content-Type: application/json' \
-d '{
"RegionName": "'$RegionName'",
"ProviderName": "AWS",
"KeyValueInfoList": [
{"Key": "Region", "Value": "'$Region'"},
{"Key": "Zone", "Value": "'$Zone'"}
]
}' | json_pp
done
μλ΅ μμ:
{
"AvailableZoneList" : null,
"KeyValueInfoList" : [
{
"Key" : "Region",
"Value" : "us-east-2"
},
{
"Key" : "Zone",
"Value" : "us-east-2a"
}
],
"ProviderName" : "AWS",
"RegionName" : "aws-ohio"
}
4.4 Cloud Connection λ±λ‘
μμμ λ±λ‘ν λλΌμ΄λ², Credential, 리μ μ μ‘°ν©νμ¬ μ°κ²° μ€μ μ λ±λ‘ν©λλ€:
configs=("aws-ohio-config:aws-ohio"
"aws-oregon-config:aws-oregon")
for config in "${configs[@]}"; do
IFS=":" read -r ConfigName RegionName <<< "$config"
curl -sX POST http://localhost:1024/spider/connectionconfig \
-H 'Content-Type: application/json' \
-d '{
"ConfigName": "'$ConfigName'",
"ProviderName": "AWS",
"DriverName": "aws-driver01",
"CredentialName": "aws-credential01",
"RegionName": "'$RegionName'"
}' | json_pp
done
μλ΅ μμ:
{
"ConfigName" : "aws-ohio-config",
"CredentialName" : "aws-credential01",
"DriverName" : "aws-driver01",
"ProviderName" : "AWS",
"RegionName" : "aws-ohio"
}
{
"ConfigName" : "aws-oregon-config",
"CredentialName" : "aws-credential01",
"DriverName" : "aws-driver01",
"ProviderName" : "AWS",
"RegionName" : "aws-oregon"
}
5. CSPλ³ Credential ν€ μ΄λ¦
κ° CSPμ νμν Credential ν€ μ΄λ¦μ μ‘°νν μ μμ΅λλ€:
# μμ: AWSμ Credential ν€ μ΄λ¦ νμΈ
curl -sX GET http://localhost:1024/spider/cloudos/metainfo/AWS \
-H 'Content-Type: application/json' | json_pp
| CSP | νμ | ν€ μ΄λ¦ |
|---|---|---|
| AWS | Spider νμ | ClientId, ClientSecret |
| AWS | CSP νμ | aws_access_key_id, aws_secret_access_key |
| GCP | Spider νμ | ClientEmail, ProjectID, PrivateKey |
| Azure | Spider νμ | ClientId, ClientSecret, TenantId, SubscriptionId |
| Alibaba | Spider νμ | ClientId, ClientSecret |
μ°Έκ³
- Spider νμ κ³Ό CSP νμ Credential ν€ λͺ¨λ μ§μλ©λλ€.
- μ 체 CSPμ ν€ μ΄λ¦μ MetaInfo APIλ‘ νμΈ κ°λ₯ν©λλ€:
GET /spider/cloudos/metainfo/{CSPμ΄λ¦}- κ° CSPμμ Credentialμ λ°κΈλ°λ λ°©λ²μ How to get CSP Credentialsλ₯Ό μ°Έκ³ νμΈμ.
6. λ±λ‘λ μ°κ²° μ€μ νμΈ
λ±λ‘ ν μ°κ²° μ€μ μ νμΈν©λλ€:
# λ±λ‘λ μ 체 μ°κ²° μ€μ λͺ©λ‘ μ‘°ν
curl -sX GET http://localhost:1024/spider/connectionconfig | json_pp
# νΉμ μ°κ²° μ€μ μ‘°ν
curl -sX GET http://localhost:1024/spider/connectionconfig/aws-ohio-config | json_pp
7. API μλ΅ μ½λ
| HTTP μν μ½λ | μ€λͺ |
|---|---|
| 200 OK | μμ² μ±κ³΅ |
| 400 Bad Request | μλͺ»λ μμ² (νμ νλΌλ―Έν° λλ½ λ±) |
| 404 Not Found | λμ 리μμ€λ₯Ό μ°Ύμ μ μμ |
| 500 Internal Server Error | μλ² λ΄λΆ μ€λ₯ |