빌드팩은 소스 코드를 실행 파일로 변환하며 컨테이너를 만드는 간단하고 안정적이며 반복 가능한 방법을 제공하는 데 사용됩니다. 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 빌드 파이프라인에서 액세스할 수 있는 컨테이너 레지스트리에 저장되어야 합니다. 빌드 파이프라인은 빌더 이미지를 사용하여 기본 스크립트를 적용해 소스 코드를 실행 가능한 컨테이너에 빌드합니다.
장점
- Google에서 빌더 이미지 및 실행 이미지를 지원합니다.
- Cloud Build와 같은 다양한 Google Cloud 제품과 연동됩니다.
- 성장 중인 커뮤니티 및 빌드팩 레지스트리를 갖추고 있습니다.
단점
- 코드/프로세스 업데이트가 필요할 수 있습니다. 예를 들어 자바 빌드팩에는 소스 코드가 필요한 반면 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 빌드팩