반응형
Paketo Buildpack
- Cloud Native Buildpack Implementation - support many Languages
- Cloud Foundry에서 제공하는 buildpack을 Cloud native하게 동작하도록 만든 Extension.
- 주로 VMware 진영에서 개발중
목적: 소스 코드를 받아서, k8s에 배포 가능한 OCI image를 생성한다.
App Image의 구조
- 각각의 역할을 하는 layer로 나뉘어 있고, 모든 layer를 합치면 "애플리케이션을 실행할 수 있는 모든 것들이 구성된 file system" 이 됨.
- 이런 구조가 Building Software 방식의 표준.
- Self-Contained
- Immutable
- Container Runtime에서 실행 가능
- Easy to Distribute
Dockerfile 사용해서 OCI image 생성할 때의 문제점
대표적인 Image 생성 방법으로 Dockerfile이 있음.
- 각각의 명령어마다 하나의 layer가 추가되는 방식.
- 문제는, attacker가 각 layer를 쉽게 볼 수 있고, 공격지점을 쉽게 찾을 수 있다는 점.
- 반대로 사용자가 layer를 추가할 때에는 해당 layer에 어떤 dependency가 있고, 어떤 취약점이 있는지 확인이 어렵다
- ex. 파이썬 공식 이미지에서 os 레이어 추가하는 dockerfile이 전체 dockerfile의 절반은 된다.
- 그럼에도 docker image에서 OS 취약점이 발견되는 경우가 많음
- 결론: Dockerfile 많아지면 관리하기 힘들다. 취약점 체크를 끊임없이 해야 한다
Cloud Native Buildpack : code into image, without dockerfile
Dockerfile 없이
- Pack cli
- Buildpack Specification
정보만으로 소스코드를 OCI(Open Container Initiative) Image로 만들 수 있도록 하는 프로젝트가 Cloud Native Buildpack.
Paketo Bulidpack은 Buildpack Specification 중 하나.
- i.e: node-engine과 npm buildpack을 사용하면, app layer에 node_modules 과 node를 추가해서 image를 생성할 수 있음.
paketo buildpack은 cloud foundry 빌드팩을 cloud native 형태로 사용할 수 있도록 한 Extension.
- 그 당시 빌드팩의 monolitic 구조를 모듈화했음.
- i.e. 노드의 경우 node, npm, yarn dependency가 하나의 빌드팩에 집중되어 있었음
- 노드가 필요하면 node-engine을, npm이 필요하면 npm 빌드팩을, yarn이 필요하면 yarn 빌드팩을 사용하는 식으로 사용 가능.
모놀리틱 구조를 청산하면서 오픈소스 접근성도 향상시켰음
반응형