AWS 환경에서 cf push 했을 경우 Bulidpack이 올라가지 않음
AWS 환경에서 CF & Diego 설치 후
$ cf login 후에 Java Sample App을 push 중
Java 런타임 환경의 BuildPack을 업로드 하지 못하는 에러가 발생 했다. 에러 메세지의 로그는 아래와 같았다.
2018-02-22T17:18:49.86+0900 [STG/0] ERR [DownloadCache] WARN Unable to download https://java-buildpack.cloudfoundry.org/memory-calculator/trusty/x86_64/index.yml into cache /tmp: execution expired
2018-02-22T17:18:49.86+0900 [STG/0] ERR [Buildpack] ERROR Compile failed with exception #<RuntimeError: Open JDK Like Memory Calculator error: Unable to find cached file for https://java-buildpack.cloudfoundry.org/memory-calculator/trusty/x86_64/index.yml>
2018-02-22T17:18:49.86+0900 [STG/0] ERR Open JDK Like Memory Calculator error: Unable to find cached file for https://java-buildpack.cloudfoundry.org/memory-calculator/trusty/x86_64/index.yml
2018-02-22T17:18:49.86+0900 [STG/0] ERR Failed to compile droplet: Failed to compile droplet: exit status 1
Show less
구글링 하던 중 해당 에러에 관련하여 offline java buildpack을 사용 가이드가 나와 있어 offline java buildpack을 다운로드 하여 재실행 하였는데 같은 에러 메세지가 발생 하였다.
CF_TRACE log를 확인하여 보니 443 HTTPS 통신 중 500 Staging error와 diego와 통신이 안된다는 에러를 발견 할 수 있었다.
성공적으로 CF & Diego는 설치 완료 했지만 CF에서 cf-cli 명령어를 받는 Cloud Controller에서 Diego로 통신을 할 수 없는 문제 인것 같았다.
에러를 해결 하며 알게 된 점이
다른 인프라 환경과는 다르게 AWS는 Public Subnet과 Private Subnet이 나누어져 있으며
Pubilc Subnet은 Elastic IP를 할당 한 VM이 있고 Router Table이 Internetgateway와 연결이 되어 있어야 한다.
Private Subnet은 내부 아이피를 할당 한 VM이 있고 Router Table에 별도의 Natgateway를 연결 하여 내부적으로 Nat 통신이 가능하도록 구성을 하여야한다.
아래는 기존의 Cloud foundry 설치 방법이 였고 위에 문제 떄문에 아키텍쳐를 변경 하였다.
아키텍쳐를 변경하고서 다른 문제점이 발생 할 가능성이 있다.
아래는 변경 한 Cloud foundy의 아키텍처 참고 이미지다.
bosh, cf를 public subnet
diego를 private subnet 으로 구성하고 nat gateway를 생성하여 연결 했다.
해당 이슈가 발생하면서 발견 한 이슈는 AWS로 VM 생성 시 EBS로 volum이 Attach 되는 것 같은데 Root disk의 용량을 늘려주려면 어떻게 하는지 모르겠다..