cloud-barista / cb-ladybug

Cloud-Barista Multi-Cloud Application Runtime Framework : Support Multi-Cloud Kubernetes Service
Apache License 2.0
11 stars 11 forks source link

Only use CB-Tumblebug APIs (not CB-Spider) #39

Closed sykim-etri closed 2 years ago

sykim-etri commented 3 years ago
itnpeople commented 3 years ago

확인해보고 다음 PR 적용할께요.

sykim-etri commented 3 years ago

CB-Tumblebug의 원격 명령 실행 방법은 아래 링크 참조하시기 바랍니다.

vlatte commented 3 years ago

ladybug에서는 script 파일들을 copy해야하는 로직이 있어 SSHCopy를 사용하고 있습니다. tumblebug API는 SSHRun을 사용하는 api밖에 없는데, SSHCopy를 사용하는 api를 추가해주실 수 있나요?

seokho-son commented 3 years ago

@itnpeople @sykim-etri @vlatte @jihoon-seo 안녕하세요~ CB-Tumblebug lead 손석호 입니다. 파일 Copy 기능은 사용자 기능으로 추가가 필요할지 검토가 필요할 것 같습니다. (CB-TB의 경우, 사용자 파일 업로드 기능을 추가해야 업로드된 파일을 SSH 또는 SCP 등으로 전송할 수 있을 것 같습니다. CB-TB 시스템의 호스트 머신에 사용자 파일을 업로드해두는 것이 적절한지 고민이 되네요..^^)

다른 대안으로 CB-TB에서 처리하는 방식을 공유드립니다.

CB-TB도, VM에 파일을 전송해야하는 경우가 있습니다. 예를 들어, https://github.com/cloud-barista/cb-tumblebug/blob/master/src/testclient/scripts/sequentialFullTest/deploy-nginx-mcis.sh

curl -H "${AUTH}" -sX POST http://$TumblebugServer/tumblebug/ns/$NSID/cmd/mcis/$MCISID -H 'Content-Type: application/json' -d \
'{
    "command": "wget https://raw.githubusercontent.com/cloud-barista/cb-tumblebug/master/assets/scripts/setweb.sh -O ~/setweb.sh; chmod +x ~/setweb.sh; sudo ~/setweb.sh"
}'

https://raw.githubusercontent.com/cloud-barista/cb-tumblebug/master/assets/scripts/setweb.sh 에 공유되어 있는 파일을

CB-TB 원격 커맨드 기능을 활용하여, VM이 wget 으로 해당 파일을 다운로드하게 합니다.

CB-LB에서도, CB-TB와 같은 패턴으로 처리 가능해보이는데 어떻게 생각하시나요? (일반적으로 agent 설치 등에서 활용되는 방식으로 알고 있습니다.)

vlatte commented 3 years ago

음. 해당 코드는 항상 master의 파일을 가져올텐데 개발 시나 이전 버전이 필요할 시 어떻게 해야 할까요?

sykim-etri commented 3 years ago

현재 CB-LB에서 사용하는 SSHCopy()의 경우 CB-LB가 동작하고 있는 로컬 서버의 파일을 VM으로 복사하는 용도로 파악됩니다. 그렇다면 CB-TB의 원격 커맨드는 적당하지는 않아 보입니다. 지난 회의에서 잠깐 논의된 바와 같이 SSHRun(), SSHCopy() 등의 라이브러리 형태의 함수들을 CB-SP에서 분리하여 별도로 제공하는 것이 바람직할 것으로 생각됩니다. @seokho-son @powerkimhub 의견 부탁드립니다.

sykim-etri commented 3 years ago

제가 미처 확인을 못했는데, 현재 CB-TB에서도 동일한 방식으로 사용을 하고 계신 방법이네요. 공개SW라서 가능한 방법이긴 하겠습니다. @vlatte 해당 파일의 blob을 직접 링크하면 원하는 버전의 파일을 넣을 수 있어보입니다. (해당 파일의 History에서 원하는 commit의 raw 주소 활용) https://raw.githubusercontent.com/cloud-barista/cb-tumblebug/4c7c52286f5d34850888d6587d805573e3c0f12f/assets/scripts/setweb.sh

seokho-son commented 3 years ago

음. 해당 코드는 항상 master의 파일을 가져올텐데 개발 시나 이전 버전이 필요할 시 어떻게 해야 할까요?

해당 코드는 단순 예시이고요 ^^ 네트워크로 연결 가능한 파일을 다운로드 하는 방식을 뜻한 것입니다. 따라서 master가 아니라 어디에 넣어두든지, wget으로 받을 수만 있다면 활용 가능할 것 같습니다.

[논의되고 있는 2가지 방식]

itnpeople commented 3 years ago

해당 쉘스크립트는 public 에 올려놓고 런타임 시 다운로드 받아서 사용하는 용도의 쉘스크립트가 아니라 소스코드라고 생각하시면 됩니다. 형태가 쉘스크립트 일 뿐이고요.. 반드시 해당 버전의 컨테이너에 포함되어 프로비저닝되는 VM 에 복사되어 실행되어야 합니다. 지원이 힘들거나 시간이 걸린다면 현재는 이전 소스로 되돌려야 할것 같습니다.

seokho-son commented 3 years ago

@itnpeople 음~ 뭔가 다른 점이 있나보네요. ladybug에서 클러스터 생성시, 동적으로 해당 파일을 구성 및 생성(소스코드라면, 컴파일까지..?)하여, VM에 전송 및 실행하고 있는 것으로 이해하면 되려나요?

itnpeople commented 3 years ago

컴파일이나 동적 구성까지는 아니지만 소스코드처럼 소스코드들과 인터렉티브하게 연관성을 가지고 있고 단계들마다 합쳐질수도 분리될수도 있습니다 사실 개인적으로 이전 방식으로 구현해도 큰 이슈가 아니라고 봅니다 tb에서 연결정보 조회해서 sp 라이브러리 사용해서 ssh접속하면 결국 같은거 아닐지요

itnpeople commented 3 years ago

현재는 일단 뭔가 결정나기 전까지 논의는하고 소스는 되돌리는것 제안해 봅니다 다음 작업이 pending 상태라

seokho-son commented 3 years ago

그렇군요. 이전 방식도 단순히 spider에 있는 범용적인 ssh 라이브러리를 활용하는 것이라서, 구현상에 이슈는 없다는 것에 동의하는 바입니다~

TB를 API를 활용하면 ssh를 위한 ip 및 username 과 보안 key 를 조회하는 과정도 없애고, key를 주고 받는 부담을 줄일 수 있다는 장점은 있습니다. (현재는 클라우드별, 사용하는 이미지별로 username이 동일하지 않고, 제공된 정보를 기준으로도 접속이 안되는 경우도 있어서, 순수 ssh 사용시 오류 발생들에 대한 처리를 해야하실 수도 있겠네요.)

TB에서 원격 파일 전송 기능 (CB-LB의 로컬 파일을, TB로 전송하고, TB가 이를 다시 SSH로 VM에 전송하게 하는 기능) 제공 여부는 검토가 필요하고, 긴든 짧든 시간이 소요될 것이기 때문에,

CB-LB의 개발에 차질이 없도록 기존 라이브러리 활용 방식으로 우선 진행하는 것이 어떨까 싶습니다. (꼭 필요하다면 향후에 변경)

[검토에 필요한 정보]

@sykim-etri 님~ 일단 제 의견은 이렇고.. 한번 정리해주시면 좋을 것 같습니다.

vlatte commented 3 years ago

파일의 용량입니다. min : 481바이트 max : 2KB

sykim-etri commented 3 years ago
sykim-etri commented 3 years ago

TB를 API를 활용하면 ssh를 위한 ip 및 username 과 보안 key 를 조회하는 과정도 없애고, key를 주고 받는 부담을 줄일 수 있다는 장점은 있습니다. (현재는 클라우드별, 사용하는 이미지별로 username이 동일하지 않고, 제공된 정보를 기준으로도 접속이 안되는 경우도 있어서, 순수 ssh 사용시 오류 발생들에 대한 처리를 해야하실 수도 있겠네요.)

CB-TB의 API를 사용하는 경우 상기의 이슈들로부터 자유로워질 것으로 예상되어 추후 이러한 방향으로 진행되는 것이 바람직할 것으로 생각됩니다. @itnpeople @vlatte 혹시 현재의 라이브러리를 사용하더라도 상기 이슈들로부터 자유로운 상황인가요?

vlatte commented 3 years ago

@sykim-etri 사용중인 CB-Spider API는 '[get] /spider/connectionconfig/{{config_name}}', '[get] /spider/region/{{region_name}}' 두가지가 있습니다.

vlatte commented 3 years ago

현재는 클라우드별, 사용하는 이미지별로 username이 동일하지 않고,

@sykim-etri 현재 이 부분으로 인하여 aws의 일부 리전에서 ssh 접속이 안될 가능성은 있습니다.

sykim-etri commented 3 years ago
  1. 현재 SSHRun(), SSHCopy()는 CB-SP의 API는 아님. 또는 외부 라이브러리를 활용
  2. CB-TB에서 로컬 파일 복사 기능은 검토 필요 ~(SSH Key 관리 이슈와 연계)~
  3. CB-SP API 중 사용하는 방법은 좀 더 논의 필요 (필요성 검토 후 전체 반영 여부 결정)
jihoon-seo commented 3 years ago

사용중인 CB-Spider API는 '[get] /spider/connectionconfig/{{config_name}}', '[get] /spider/region/{{region_name}}' 두가지가 있습니다.

[임시방편] Tumblebug 에도 해당 API가 있으며, 단순히 Spider API call 중계하는 정도입니다. https://github.com/cloud-barista/cb-tumblebug/blob/main/src/api/rest/server/server.go#L99-L102

    e.GET("/tumblebug/connConfig", rest_common.RestGetConnConfigList)
    e.GET("/tumblebug/connConfig/:connConfigName", rest_common.RestGetConnConfig)
    e.GET("/tumblebug/region", rest_common.RestGetRegionList)
    e.GET("/tumblebug/region/:regionName", rest_common.RestGetRegion)

이 API를 사용하시면 Spider API 를 사용하지 않고 Tumblebug API 를 사용하여 Spider 의 메타정보를 읽을 수 있습니다.


[TB 개선 예정] TB가 Cloud에 대한 정보를 직접 핸들링하도록 변경하는 안이 있습니다. https://github.com/cloud-barista/cb-tumblebug/issues/461#issuecomment-837583298