V2 및 V3 빌드팩 비교

빌드팩은 소스 코드를 실행 파일로 변환하며 컨테이너를 만드는 간단하고 안정적이며 반복 가능한 방법을 제공하는 데 사용됩니다. Kf는 V2 및 V3 빌드팩을 모두 지원하며, 둘 사이의 차이점을 이해하는 것이 중요합니다.

V2 빌드팩

대부분의 Cloud Foundry 애플리케이션은 이미 V2 빌드팩을 사용합니다. Kf와 함께 V2 빌드팩을 사용하는 경우 수명 주기 바이너리 및 빌드팩이 git URL에서 다운로드되고 구성됩니다. 그런 다음 Kf는 lifecycle CLI를 사용하여 소스 코드에 대해 각 빌드팩을 실행합니다.

장점

  • 파이프라인 또는 코드 변경 없이 바로 사용할 수 있습니다.

단점

  • V3으로 대체된 기존 빌드팩입니다.
  • 성능과 안정성이 더 낮습니다. Kf 빌드 파이프라인에서 V2 빌드팩을 위한 IO가 더 많이 필요합니다.
  • 커뮤니티 리소스가 더 적습니다.
  • Kf에서 OSS Git 저장소만 지원합니다.

V3 빌드팩

V3 빌드팩은 잘 정의된 사양, CLI(), 다양한 언어 및 프레임워크를 중심으로 혁신을 이루는 커뮤니티를 포함한 Cloud Native Computing Foundation(CNCF) 프로젝트입니다. Google Cloud에는 자체 Google Cloud 빌드팩 집합도 있습니다.

V3 빌드팩에는 중요한 2가지 OCI 컨테이너가 있습니다.

  • 빌더 이미지
  • 실행 이미지

빌더 이미지

빌더 이미지는 소스 코드가 실행 가능한 컨테이너에 빌드되는 동안 사용됩니다. 이미지에는 소스 코드를 컴파일하는 데 필요한 detect 스크립트와 기타 유틸리티가 있습니다.

실행 이미지

실행 이미지는 컨테이너가 빌드된 기본 이미지입니다. 즉, 앱 실행 시 실행되는 기본 이미지입니다.

레이어

V3 빌드팩은 레이어를 사용하여 최종 컨테이너를 구성합니다. 빌드에 포함된 각 빌드팩에는 앱의 파일 시스템 및 환경 변수를 조작할 수 있는 기회가 주어집니다. 이 레이어 방식을 통해 빌드팩을 더 얇고 일반적으로 만들 수 있습니다.

V3 빌드팩은 OCI 컨테이너에 빌드됩니다. 이를 위해서는 V3 빌더 이미지가 Kf 빌드 파이프라인에서 액세스할 수 있는 컨테이너 레지스트리에 저장되어야 합니다. 빌드 파이프라인은 빌더 이미지를 사용하여 기본 스크립트를 적용해 소스 코드를 실행 가능한 컨테이너에 빌드합니다.

장점

단점

  • 코드/프로세스 업데이트가 필요할 수 있습니다. 예를 들어 자바 빌드팩에는 소스 코드가 필요한 반면 V2 빌드팩에는 jar 파일이 필요합니다.
  • V3 빌드팩이 더 최신 버전이며 추가 검증이 필요할 수 있습니다(커뮤니티에서 개발한 빌드팩 사용).

Kf 스택

스택 보기

앱을 푸시할 때 빌드 파이프라인에서 선택된 스택(--stack 플래그 또는 매니페스트를 통해 지정됨)을 기반으로 빌드팩을 결정합니다.

공간에서 사용할 수 있는 스택을 보려면 먼저 공간이 타겟팅되었는지 확인합니다.

kf target -s myspace

그런 다음 kf stacks 하위 명령어를 사용하여 스택을 나열하면 됩니다.

kf stacks

출력에 V2 및 V3 스택이 모두 표시됩니다.

Getting stacks in Space: myspace
Version  Name                                Build Image                                                                                          Run Image                                                                                          Description
V2       cflinuxfs3                          cloudfoundry/cflinuxfs3@sha256:5219e9e30000e43e5da17906581127b38fa6417f297f522e332a801e737928f5      cloudfoundry/cflinuxfs3@sha256:5219e9e30000e43e5da17906581127b38fa6417f297f522e332a801e737928f5
V3       org.cloudfoundry.stacks.cflinuxfs3  cloudfoundry/cnb:cflinuxfs3@sha256:f96b6e3528185368dd6af1d9657527437cefdaa5fa135338462f68f9c9db3022  cloudfoundry/run:full-cnb@sha256:dbe17be507b1cc6ffae1e9edf02806fe0e28ffbbb89a6c7ef41f37b69156c3c2  A large Cloud Foundry stack based on Ubuntu 18.04

스택 구성

kfsystem 커스텀 리소스를 수정하여 스택 구성을 업데이트할 수 있습니다.

kubectl edit kfsystem kfsystem

이 예에서는 Google Cloud 빌드팩을 V3 스택으로 설정합니다.

spec:
  kf:
    config:
      spaceStacksV3:
      - name: google
        description: Google buildpacks (https://github.com/GoogleCloudPlatform/buildpacks)
        buildImage: gcr.io/buildpacks/builder:v1
        runImage: gcr.io/buildpacks/gcp/run:v1

이제 이 새 스택을 푸시할 수 있습니다.

kf push myapp --stack google

이 예에서는 Ruby V2 빌드팩을 구성하고 빌드 파이프라인 기본값은 V2 스택을 사용하도록 설정합니다.

spec:
  kf:
    config:
      spaceDefaultToV3Stack: false
      spaceBuildpacksV2:
      - name: ruby_buildpack
        url: https://github.com/cloudfoundry/ruby-buildpack
      spaceStacksV2:
      - name: cflinuxfs3
        image: cloudfoundry/cflinuxfs3@sha256:5219e9e30000e43e5da17906581127b38fa6417f297f522e332a801e737928f5

마이그레이션

참고: 이 기능은 현재 실험 중이므로 변경될 수 있습니다.

Kf에는 V2 빌드팩을 래핑할 수 있는 마이그레이션 도구가 있습니다. 결과는 V3 빌더 내에서 사용할 수 있는 V3 빌드팩입니다. 그러면 래핑된 빌드팩을 V3 빌드팩을 사용할 수 있는 모든 곳에서 사용할 수 있습니다.

kf wrap-v2-buildpack gcr.io/your-project/v2-go-buildpack https://github.com/cloudfoundry/go-buildpack --publish

그러면 gcr.io/your-project/v2-go-buildpack이라는 빌드팩 이미지가 생성됩니다. 그런 다음 빌더 만들기 문서에 따라 빌더를 만들 수 있습니다.

이 하위 명령어는 다음 CLI를 투명하게 사용합니다.

  • go
  • git
  • pack

Cloud Shell 편집기를 사용하여 각 하위 명령어를 올바른 경로에서 사용할 수 있고 하위 명령어가 올바른 버전인지 확인하는 것이 좋습니다.

알려진 문제

다음은 아직 Kf에서 작동하지 않는 기능입니다. 조직에서 우선순위가 높은 경우 영업 담당자에게 문의하시기 바랍니다.

  • V3 빌더 이미지의 비공개 Container Registry
  • V3 캐싱
  • Git 사용자 인증 정보를 요청하는 V2 빌드팩