Cloud Native Buildpacks에 대해 들어 보셨습니까?
당신은 dockerfile로 피곤한 적이 있습니까? Dockerfiles 및 Docker 이미지는 재사용 가능한 컨테이너화 된 배포를 위해 앱을 패키지하는 좋은 방법입니다. 그러나 Dockerfile을 작성하고 유지하는 것이 항상 직관적 인 것은 아니며 앱에 기능을 추가하는 데 사용될 수있는 시간이 걸립니다. Cloud Native Buildpacks를 입력하십시오. BuildPacks는 앱이 실행하고 OCI (Open Container Initiative) 이미지에 넣는 데 필요한 모든 것을 모으기 위해 존재합니다.
사용하기 쉽고 시간과 두통을 절약 할 컨테이너 빌드 프로세스가 필요한 모든 개발자에게 클라우드 네이티브 빌드 팩은 그들이 찾고있는 솔루션 일 수 있습니다. 관심 있는? 더 많은 것을 말해 줄게.
클라우드 네이티브 빌드 팩은 무엇입니까?
광범위하게 말하면, BuildPack은 응용 프로그램 코드를 가져 와서 빌드 프로세스를 통해 실행할 수있게합니다. 따라서 Cloud Native BuildPacks (CNB)는 응용 프로그램 소스 코드를 가져 와서 실행 가능하고 재현 가능한 OCI 이미지로 전환하여 이미지 보안, 성능 최적화 및 컨테이너 빌드 순서에 대한 요구 사항을 구현합니다. 그것은 당신이 필요한 정확한 dockerfile을 갖는 것과 같습니다.
대부분의 개발자는 Dockerfile을 작성할 수 있지만 Docker 또는 Infrastructure의 전문가는 거의 없습니다. 너무 많은 앱에는 웹 전반에 걸쳐 발견 된 코드 스 니펫에서 함께 자갈이 많은 Dockerfiles가 있습니다. Dockerfile 오류는 불안하고 실적이 좋지 않은 응용 프로그램으로 이어질 수 있습니다.
Cloud Native Buildpacks는 이러한 부담을 받아 각 언어 또는 프레임 워크에 대한 모범 사례를 자동으로 적용합니다. 그런 다음 빌더는 여러 개의 빌드 팩을 사용하여 필요한 빌드 팩을 자동으로 감지하고 응용 프로그램을 구축하기 위해 적용 할 수 있습니다. Heroku의 건축업자가 현재 지원하는 Buildpacks는 다음과 같습니다.
$ pack builder inspect heroku/builder:24
Inspecting builder: heroku/builder:24
REMOTE:
Description: Ubuntu 24.04 AMD64+ARM64 base image with buildpacks for .NET, Go, Java, Node.js, PHP, Python, Ruby & Scala.
...
Buildpacks:
ID NAME VERSION
heroku/deb-packages Heroku .deb Packages 0.0.3
heroku/dotnet Heroku .NET 0.1.10
heroku/go Heroku Go 0.5.2
heroku/gradle Heroku Gradle 6.0.4
heroku/java Heroku Java 6.0.4
heroku/jvm Heroku OpenJDK 6.0.4
heroku/maven Heroku Maven 6.0.4
heroku/nodejs Heroku Node.js 3.4.5
heroku/nodejs-corepack Heroku Node.js Corepack 3.4.5
heroku/nodejs-engine Heroku Node.js Engine 3.4.5
heroku/nodejs-npm-engine Heroku Node.js npm Engine 3.4.5
heroku/nodejs-npm-install Heroku Node.js npm Install 3.4.5
heroku/nodejs-pnpm-engine Heroku Node.js pnpm Engine 3.4.5
heroku/nodejs-pnpm-install Heroku Node.js pnpm install 3.4.5
heroku/nodejs-yarn Heroku Node.js Yarn 3.4.5
heroku/php Heroku PHP 0.2.0
heroku/procfile Heroku Procfile 4.0.0
heroku/python Heroku Python 0.23.0
heroku/ruby Heroku Ruby 5.0.1
heroku/sbt Heroku sbt 6.0.4
heroku/scala Heroku Scala 6.0.4
Paketo 또는 Google Cloud의 건축업자와 같은 다른 빌더도 빌드 팩을 가져옵니다. 대체로 Cloud Native Buildpacks 생태계는 성장하고 성숙하여 개발자에게 흥미 롭습니다!
Heroku에 익숙한 사람들은 이미 즐기고 있습니다. 빌드 팩 경험. 와 함께 git push heroku main
Dockerfile이 필요없이 Heroku에 직접 배포 할 수있었습니다. Cloud Native Buildpacks는 Heroku Buildpack 경험을 바탕으로 한 번 공급 업체 별 구현을 취하고 클라우드 플랫폼에서 사용할 수있는 CNCF 표준으로 전환합니다.
요컨대, 클라우드 네이티브 빌드 팩 개발자는 다음을 허용합니다.
- 애플리케이션을 그 어느 때보 다 쉽게 배포합니다
- … 잠금 장치가없는 표준 기반 방식으로
- … 컨테이너 모범 사례를 적용하는 동안 모두
- …
사용 사례
멋지네요? 이러한 모든 혜택을 통해 Cloud Native Buildpacks를 사용하여 혜택을받을 수있는 특정 사례를 살펴 보겠습니다.
일반적으로 dockerfile이 필요한 곳은 BuildPack을 사용할 수있는 기회입니다. 예제는 다음과 같습니다.
- Node.js 웹 응용 프로그램
- 파이썬 마이크로 서비스
- 여러 언어 또는 프레임 워크를 사용하는 이기종 응용 프로그램
- AWS, Azure 및 Heroku와 같은 클라우드 플랫폼에 배포를위한 응용 프로그램 구축
주목해야 할 한 가지는 다음과 같습니다. BuildPacks는 선언적입니다,,, Dockerfiles는 절차입니다. BuildPack을 사용하면 주어진 빌더 또는 BuildPack으로 구축 된 주어진 응용 프로그램을 원한다고 선언합니다.
대조적으로, dockerfile은 응용 프로그램을 구축하기 위해 해당 명령을 실행하는 명령과 순서를 정의해야합니다. 따라서 BuildPacks는 현재 Dockerfile 내에서 사용할 수있는 구성 수준을 제공하지 않으므로 고급 사용 사례의 요구를 충족시키지 못할 수 있습니다.
즉, Cloud Native Buildpacks의 공급 업체 잠금 장치는 없습니다. 그들은 단순히 OCI 이미지를 만듭니다. BuildPack에서 사용할 수있는 것보다 더 많은 사용자 정의와 옵션이 필요하십니까? 빌드 파이프 라인의 빌더를 Dockerfile 및 표준 OCI 이미지 빌드로 교체하면 좋습니다.
간단한 연습
클라우드 네이티브 빌드 팩을 사용하는 방법에 대한 빠른 연습을하겠습니다.
앱 개발자로서 BuildPacks를 시작하려면 첫 번째 단계는 Pack CLI 도구를 설치하는 것입니다. 이 도구를 사용하면 BuildPacks가있는 응용 프로그램을 구축 할 수 있습니다. 운영 체제의 설치 지침을 따르십시오.
또한 아직 없으면 빌더가 앱을 구축하고 이미지를 실행하려면 Docker 데몬이 필요합니다. 이 두 도구가 설치되면 시작할 준비가되었습니다.
샘플 앱을 구축하십시오
팩 도구에 액세스하면 샘플 응용 프로그램을 작성하여 시도해 볼 준비가되었습니다. 나는 이것을 Next.js 응용 프로그램 안에서 실행할 것입니다. 빌드 팩을 테스트하려면 샘플 응용 프로그램이 필요하십니까? 다음은 Next.js 샘플 응용 프로그램의 전체 디렉토리입니다. 당신은 당신이 가지고있는 모든 응용 프로그램을 시험해 볼 수도 있습니다.
애플리케이션이 준비되면 팩 도구가 제안하는 빌더를 확인하여 시작하십시오. 쉘에서 앱 디렉토리로 이동 하여이 명령을 실행하십시오.
Ubuntu 설치에서 다음.js 응용 프로그램의 경우 팩 도구는 다음 빌더를 제안합니다.
제안 된 Heroku Buildpack (Heroku/Builder : 24)을 시도해 봅시다. 이것을 사용하려면 다음 명령을 실행하십시오.
$ pack build my-app --builder heroku/builder:24
빌드 시간은 응용 프로그램의 크기에 따라 다릅니다. 저에게는 앱을 구축하는 데 30 초가 걸렸습니다. 그것으로, 내 이미지는 갈 준비가되었습니다. 다음과 함께 이미지를 실행할 수 있습니다.
$ docker run -p 3000:3000 my-app
결과는 다음과 같습니다.
그리고 그게 다야! Dockerfile을 사용하지 않고 Next.js 응용 프로그램의 OCI 이미지를 성공적으로 구축했습니다.
추가 구성
빌드 팩 내부에서 무언가를 구성 해야하는 경우 어떻게해야합니까? 이를 위해 건축업자가 선택한 BuildPack을 참조합니다. 예를 들어, 다음.js 앱의 경우, 빌더가 Nodejs-Engine 및 Nodejs-Yarn의 두 개의 빌드 팩을 선택한 로그에서 볼 수 있습니다.
BuildPack에서 사용하는 원사 버전을 지정하고 싶다고 가정 해 봅시다. 먼저 Nodejs-Yarn buildpack readme로 이동하여 내에서 원사 버전을 지정할 수 있음을 알 수 있습니다. package.json
a packageManager
열쇠. 내 파일을 다음과 같이 수정합니다.
{
"packageManager": "[email protected]"
}
거기에서 내가해야 할 일은 실행하는 것뿐입니다. pack build my-app --builder heroku/builder:24
다시.
결론
Cloud Native Buildpacks는 응용 프로그램을위한 컨테이너 이미지를 빌드하는 흥미 진진한 새로운 방법입니다. Dockerfile의 필요성을 제거함으로써 응용 프로그램을 포장하고 배포 할 수 있도록 그 어느 때보 다 빠릅니다. 또한 표준 컨테이너 이미지를 구축 할 때 공급 업체 잠금 장치가 없습니다.
Cloud Native Buildpacks는 많은 플랫폼에서 미리보기에 있습니다. 이는 기능 세트가 가볍지 만 빠르게 성장하고 있음을 의미합니다. 클라우드 네이티브 빌드 팩을 오픈 소싱 한 Heroku는 차세대 플랫폼으로 도입하고 있습니다. 클라우드 플랫폼 커뮤니티 전체에서 Cloud Native Buildpacks가 어떻게 안전하고 빠른 응용 프로그램 배포를 가능하게하는지 기대하고 있습니다.
Post Comment