공부하고 기록하는, 경제학과 출신 개발자의 노트

강연

Cloud Foundry Summit 2020 North America - Paketo Buildpack from Source code to Application Image 정리

inspirit941 2022. 11. 17. 17:20
반응형

https://youtu.be/JVUh9OuA5N4

스크린샷 2022-11-17 오후 2 09 41

 

Paketo Buildpack

  • Cloud Native Buildpack Implementation - support many Languages
  • Cloud Foundry에서 제공하는 buildpack을 Cloud native하게 동작하도록 만든 Extension.
  • 주로 VMware 진영에서 개발중

 

스크린샷 2022-11-17 오후 2 13 36스크린샷 2022-11-17 오후 2 13 40

 

목적: 소스 코드를 받아서, k8s에 배포 가능한 OCI image를 생성한다.

App Image의 구조

  • 각각의 역할을 하는 layer로 나뉘어 있고, 모든 layer를 합치면 "애플리케이션을 실행할 수 있는 모든 것들이 구성된 file system" 이 됨.
  • 이런 구조가 Building Software 방식의 표준.
    • Self-Contained
    • Immutable
    • Container Runtime에서 실행 가능
    • Easy to Distribute

스크린샷 2022-11-17 오후 2 19 23

 

Dockerfile 사용해서 OCI image 생성할 때의 문제점

대표적인 Image 생성 방법으로 Dockerfile이 있음.

  • 각각의 명령어마다 하나의 layer가 추가되는 방식.
  • 문제는, attacker가 각 layer를 쉽게 볼 수 있고, 공격지점을 쉽게 찾을 수 있다는 점.
  • 반대로 사용자가 layer를 추가할 때에는 해당 layer에 어떤 dependency가 있고, 어떤 취약점이 있는지 확인이 어렵다

 

스크린샷 2022-11-17 오후 2 28 13스크린샷 2022-11-17 오후 2 27 05

 

  • ex. 파이썬 공식 이미지에서 os 레이어 추가하는 dockerfile이 전체 dockerfile의 절반은 된다.
  • 그럼에도 docker image에서 OS 취약점이 발견되는 경우가 많음

 

스크린샷 2022-11-17 오후 2 20 20

 

  • 결론: Dockerfile 많아지면 관리하기 힘들다. 취약점 체크를 끊임없이 해야 한다

Cloud Native Buildpack : code into image, without dockerfile

스크린샷 2022-11-17 오후 4 48 44

 

Dockerfile 없이

  • Pack cli
  • Buildpack Specification

정보만으로 소스코드를 OCI(Open Container Initiative) Image로 만들 수 있도록 하는 프로젝트가 Cloud Native Buildpack.

 

스크린샷 2022-11-17 오후 4 52 06스크린샷 2022-11-17 오후 4 52 06스크린샷 2022-11-17 오후 4 52 16

 

Paketo Bulidpack은 Buildpack Specification 중 하나.

  • i.e: node-engine과 npm buildpack을 사용하면, app layer에 node_modules 과 node를 추가해서 image를 생성할 수 있음.

 

스크린샷 2022-11-17 오후 4 54 31

 

paketo buildpack은 cloud foundry 빌드팩을 cloud native 형태로 사용할 수 있도록 한 Extension.

  • 그 당시 빌드팩의 monolitic 구조를 모듈화했음.
    • i.e. 노드의 경우 node, npm, yarn dependency가 하나의 빌드팩에 집중되어 있었음

 

스크린샷 2022-11-17 오후 4 54 39스크린샷 2022-11-17 오후 4 54 46

 

  • 노드가 필요하면 node-engine을, npm이 필요하면 npm 빌드팩을, yarn이 필요하면 yarn 빌드팩을 사용하는 식으로 사용 가능.

 

스크린샷 2022-11-17 오후 5 05 45스크린샷 2022-11-17 오후 5 06 06

 

모놀리틱 구조를 청산하면서 오픈소스 접근성도 향상시켰음

 

스크린샷 2022-11-17 오후 5 06 11

반응형