Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Rockcraft 를 활용한 .NET 앱 컨테이너 빌드

Rockcraft 를 활용한 .NET 앱 컨테이너 빌드

.NET Conf 2025 x Seoul 세션 슬라이드 자료 입니다.

세션 정보: https://dotnetconf.kr/15bccaa0182a80deaaacf6947ece8597

Youngbin Han

January 12, 2025
Tweet

More Decks by Youngbin Han

Other Decks in Technology

Transcript

  1. • 안랩클라우드메이트에서 Dev 1 Team 백엔드 개발자로 근무하고 있습니다. (2020.10

    ~) • 팀에서 개발한 많은 서비스 백엔드가 ASP.NET 기반입니다. • 그래서 저도 .NET 어쩌다 보니 많이 사용합니다(?) • 커뮤니티 활동은 주로 우분투 커뮤니티에서 활동 중 입니다. • 우분투한국커뮤니티: 각종 잡다한 일거리 담당(?) • Ubuntu Local Community Council (2024-2025) • UbuCon Asia Committee (2021~) • 개인 웹사이트: https://Youngbin.xyz • Email: [email protected] | [email protected] 발표자 소개 한영빈 Youngbin Han
  2. Agenda Rock & Rockcraft 소개 Chisel & Chiselled Ubuntu Container

    소개 Parts Lifecycle, rockcraft.yaml 살펴보기 간단한 .NET 앱 Rock 빌드 시연 통합된 Chisel 기능 활용 .NET 앱 Rock 빌드 시연 마무리
  3. Rock & Rockcraft 체코 프라하에서 열렸던 Ubuntu Summit 2022 에서

    처음 소개 되었습니다. • https://tech.cloudmt.co.kr/2022/12/13/ubuntu -summit-2022/ • https://events.canonical.com/event/2/contrib utions/104/
  4. Rock & Rockcraft 체코 프라하에서 열렸던 Ubuntu Summit 2022 에서

    처음 소개 되었습니다. • https://tech.cloudmt.co.kr/2022/12/13/ubuntu -summit-2022/ • https://events.canonical.com/event/2/contrib utions/104/
  5. Rock & Rockcraft 작년 네덜란드 헤이그에서 열렸던 Ubuntu Summit 2024

    에서는 워크샵이 진행 되었습니다. • https://events.canonical.com/event/51/contrib utions/542/
  6. Rock & Rockcraft 작년 네덜란드 헤이그에서 열렸던 Ubuntu Summit 2024

    에서는 워크샵이 진행 되었습니다. • https://events.canonical.com/event/51/contrib utions/542/
  7. Rock & Rockcraft Rockcraft Rock • Ubuntu LTS 기반으로 빌드된

    OCI 컨테이너 이미지 • Ubuntu LTS 에서 제공하는 안전(Secure)하고 안정적(Stable)인 각종 패키지를 컨테이너 이미지 빌드에 활용. • Pebble 을 통해 컨테이너 내부 프로세스와 서비스 엔트리포인트 관리 • 통합된 Chisel 기능을 통한 쉬운 컨테이너 이미지 경량화 • YAML 파일을 통해 컨테이너 이미지 빌드 정의 (rockcraft.yaml) • Rock 을 빌드하기 위한 도구 • rockcraft.yaml 을 통해 Rock 빌드 정의 • Chisel 통합 - rockcraft.yaml 에서 컨테이너에 의존성으로 넣을 패키지 chisel 구성 가능 • YAML 형식은 Snapcraft (Snap 패키지 빌드 도구), Charmcraft (Juju Charm 빌드 도구)의 YAML 파일과 유사한 형식 사용. https://documentation.ubuntu.com/rockcraft/en/latest/explanation/rocks/
  8. Chisel • 컨테이너 이미지에 의존성으로 필요한 우분투 패키지를 넣을 때,

    • 각 패키지에서 앱 실행에 필요한 것만 "끌로 깎아(Chisel)"다가 넣는 것. • https://tech.cloudmt.co.kr/2023/11/29/ dotnet-chiselled-ubuntu-container/ Chisel & Chiselled Ubuntu Container
  9. Chiselled Ubuntu Container Dockerfile 에서 Chisel CLI 을 사용하여 Ubuntu

    Chiselled Container 를 빌드하는 방법의 예시 ->
  10. Parts Lifecycle Pull Pull Overlay Overlay Build Build Stage Stage

    Prime Part A Part B Pull: 각 Part 별로 필요한 소스 및 의존성을 불러와서 준비하는 단계 Overlay: Build 단계 진행 전, Base Filesystem을 수정해야 하는 경우 활용 Build: 각 Part별 소스 및 의존성으로 빌드 진행 Stage: 각 Part별 별로 실제 실행에 필요한 빌드 결과물과 의존성만 모아서 정리 Prime: 각 Part별 Stage 단계에서 정리된 것을 하나로 모으고, 컨테이너 이미지에서 불필요한 것은 이 단계에서 마지막으로 정리
  11. rockcraft.yaml 살펴보기 • 기본적인 Metadata • name, title, summary, version

    등… • base, build-base • 컨테이너 베이스 이미지, 빌드 환경 베이스 이미지 지정 • 환경변수 지정: environment • Services: Pebble 에서 실행할 서비스 구성 지정 • Platforms: 컨테이너 빌드 대상 아키텍처 지정 • Parts: 컨테이너 빌드 과정 정의 https://documentation.ubuntu.com/rockcraft/en/stable/reference/rockcraft.yaml/#example
  12. 참고자료 • Rockcraft 문서 웹사이트 • https://documentation.ubuntu.com/rockcraft/en/stable/ • 실습자료 GitHub

    Repo • https://github.com/sukso96100/rockcraft-workshop • Rockcraft GitHub Repo • https://github.com/canonical/rockcraft • Rockcraft 커뮤니티 채팅 (Matrix) • https://matrix.to/#/#rocks:ubuntu.com