패키지 관리

패키지 관리 (Manage packages)

패키지 관리자 또는 패키지 관리 시스템은 패키지를 일관된 방식으로 자동 관리해요. 이런 도구는 사용자를 위한 설치 작업, 업그레이드 과정, 삭제 연산을 단순화해요. 패키지는 패키지 관리자가 다루는 최소 단위예요. Pulsar에서 패키지는 Pulsar Functions와 Pulsar IO 커넥터(즉, source와 sink)를 관리하기 위해 tenant 수준과 네임스페이스 수준으로 구성돼요.

출처: 문서

본문

tip

이 페이지는 자주 사용하는 일부 작업만 보여줘요.

  • Pulsar admin 명령, 플래그, 설명 등 최신·전체 정보는 Pulsar admin doc을 참고해요.
  • REST API 파라미터, 응답, 샘플 등 최신·전체 정보는 REST API doc을 참고해요.
  • Java admin API 클래스, 메서드, 설명 등 최신·전체 정보는 Java admin API doc을 참고해요.

패키지란? (What is a package?)

패키지는 사용자가 이후 연산에서 재사용하고 싶은 요소들의 집합이에요. Pulsar에서 패키지는 함수, 소스, 싱크의 그룹이 될 수 있어요. 필요에 따라 패키지를 정의할 수 있어요.

Pulsar의 패키지 관리 시스템은 각 패키지의 데이터와 메타데이터(아래 표 참고)를 저장하고 패키지 버전을 추적해요.

Metadata Description
description 패키지에 대한 설명
contact 패키지의 연락처 정보. 예를 들어 개발팀의 이메일 주소
create_time 패키지가 생성된 시간
modification_time 패키지가 마지막으로 수정된 시간
properties 다른 정보를 저장하기 위한 사용자 정의 key/value 맵

패키지 사용법 (How to use a package)

패키지를 사용하면 같은 함수·IO 커넥터 집합을 효율적으로 재사용할 수 있어요. 예를 들어 같은 함수, 소스, 싱크를 여러 네임스페이스에서 사용할 수 있어요. 주요 단계는 다음과 같아요.

  1. 다음 정보를 제공해 패키지 관리자에 패키지를 생성해요: type, tenant, namespace, package name, version.
Component Description
type 지원되는 패키지 유형 중 하나를 지정해요: function, sink, source
tenant 패키지를 생성할 tenant를 지정해요
namespace 패키지를 생성할 네임스페이스를 지정해요
name <tenant>/<namespace>/<package name> 형식으로 패키지의 완전한 이름을 지정해요
version 숫자로 MajorVersion.MinorVersion 형식으로 패키지 버전을 지정해요

제공한 정보는 <type>://<tenant>/<namespace>/<package name>/<version> 형식의 패키지 URL을 만들어요.

  1. 네임스페이스 간에 사용하려는 요소, 즉 함수, 소스, 싱크를 패키지에 업로드해요.
  2. 여러 네임스페이스에서 이 패키지에 권한을 적용해요.

이제 패키지 관리자 안에서 이 패키지를 호출해 그 안에 정의한 요소를 사용할 수 있어요. 패키지 관리자는 URL로 패키지를 찾아요. 예를 들어,

sink://public/default/[email protected]
function://my-tenant/my-ns/[email protected]
source://my-tenant/my-ns/[email protected]

Pulsar의 패키지 관리 (Package management in Pulsar)

커맨드라인 도구, REST API, Java 클라이언트를 사용해 Pulsar에서 패키지 리소스를 관리할 수 있어요. 구체적으로 이 도구들로 패키지를 업로드(upload), 다운로드(download), 삭제(delete) 하고, 패키지의 메타데이터 가져오기(get the metadata)메타데이터 업데이트(update the metadata), 패키지의 버전 가져오기(get the versions), 네임스페이스 아래 특정 유형의 모든 패키지 가져오기(get all packages of a specific type under a namespace) 를 할 수 있어요.

패키지 관리 서비스를 사용하려면 broker.conf에서 다음 속성을 설정해 클러스터에서 패키지 관리 서비스가 활성화되어 있는지 확인해요.

note

패키지 관리 서비스는 기본적으로 활성화되어 있지 않아요.

enablePackagesManagement=true
packagesManagementStorageProvider=org.apache.pulsar.packages.management.storage.bookkeeper.BookKeeperPackagesStorageProvider
packagesReplicas=1
packagesManagementLedgerRootPath=/ledgers

패키지 업로드 (Upload a package)

다음 명령으로 패키지를 업로드할 수 있어요.

pulsar-admin · REST API · Java

bin/pulsar-admin packages upload function://public/default/[email protected] --path package-file --description package-description

REST API: POST /admin/v3/packages/{type}/{tenant}/{namespace}/{packageName}/{version}

패키지 관리 서비스에 패키지를 동기적으로 업로드해요.

void upload(PackageMetadata metadata, String packageName, String path) throws PulsarAdminException;

패키지 관리 서비스에 패키지를 비동기적으로 업로드해요.

CompletableFuture<Void> uploadAsync(PackageMetadata metadata, String packageName, String path);

패키지 다운로드 (Download a package)

다음 명령으로 패키지를 다운로드할 수 있어요.

pulsar-admin · REST API · Java

bin/pulsar-admin packages download function://public/default/[email protected] --path package-file

REST API: GET /admin/v3/packages/{type}/{tenant}/{namespace}/{packageName}/{version}

패키지 관리 서비스에서 패키지를 동기적으로 다운로드해요.

void download(String packageName, String path) throws PulsarAdminException;

패키지 관리 서비스에서 패키지를 비동기적으로 다운로드해요.

CompletableFuture<Void> downloadAsync(String packageName, String path);

패키지 삭제 (Delete a package)

다음 명령으로 패키지를 삭제할 수 있어요.

pulsar-admin · REST API · Java

다음 명령은 버전 0.1의 패키지를 삭제해요.

bin/pulsar-admin packages delete functions://public/default/[email protected]

REST API: DELETE /admin/v3/packages/{type}/{tenant}/{namespace}/{packageName}/{version}

지정된 패키지를 동기적으로 삭제해요.

void delete(String packageName) throws PulsarAdminException;

지정된 패키지를 비동기적으로 삭제해요.

CompletableFuture<Void> deleteAsync(String packageName);

패키지 메타데이터 가져오기 (Get the metadata of a package)

다음 명령으로 패키지의 메타데이터를 가져올 수 있어요.

pulsar-admin · REST API · Java

bin/pulsar-admin packages get-metadata function://public/default/test@v1

REST API: GET /admin/v3/packages/{type}/{tenant}/{namespace}/{packageName}/{version}/metadata

패키지의 메타데이터를 동기적으로 가져와요.

PackageMetadata getMetadata(String packageName) throws PulsarAdminException;

패키지의 메타데이터를 비동기적으로 가져와요.

CompletableFuture<PackageMetadata> getMetadataAsync(String packageName);

패키지 메타데이터 업데이트 (Update the metadata of a package)

다음 명령으로 패키지의 메타데이터를 업데이트할 수 있어요.

pulsar-admin · REST API · Java

bin/pulsar-admin packages update-metadata function://public/default/[email protected] --description update-description

REST API: PUT /admin/v3/packages/{type}/{tenant}/{namespace}/{packageName}/{version}/metadata

패키지의 메타데이터를 동기적으로 업데이트해요.

void updateMetadata(String packageName, PackageMetadata metadata) throws PulsarAdminException;

패키지의 메타데이터를 비동기적으로 업데이트해요.

CompletableFuture<Void> updateMetadataAsync(String packageName, PackageMetadata metadata);

패키지의 모든 버전 나열 (List all versions of a package)

다음 명령으로 패키지의 모든 버전을 나열할 수 있어요.

pulsar-admin · REST API · Java

bin/pulsar-admin packages list-versions type://tenant/namespace/packageName

REST API: GET /admin/v3/packages/{type}/{tenant}/{namespace}/{packageName}

패키지의 모든 버전을 동기적으로 나열해요.

List<String> listPackageVersions(String packageName) throws PulsarAdminException;

패키지의 모든 버전을 비동기적으로 나열해요.

CompletableFuture<List<String>> listPackageVersionsAsync(String packageName);

네임스페이스 아래 특정 유형의 모든 패키지 나열 (List all packages of a specific type under a namespace)

다음 명령으로 네임스페이스 아래 특정 유형의 모든 패키지를 나열할 수 있어요.

pulsar-admin · REST API · Java

bin/pulsar-admin packages list --type function public/default

REST API: GET /admin/v3/packages/{type}/{tenant}/{namespace}

네임스페이스 아래 특정 유형의 모든 패키지를 동기적으로 나열해요.

List<String> listPackages(String type, String namespace) throws PulsarAdminException;

네임스페이스 아래 특정 유형의 모든 패키지를 비동기적으로 나열해요.

CompletableFuture<List<String>> listPackagesAsync(String type, String namespace);

더 알아보기 (Learn more)

  • 패키지 관련 전체 명령은 pulsar-admin의 packages 명령 참고서를 확인해요.
  • REST API 엔드포인트 상세는 /admin/v3/packages 문서를 참고해요.
  • Java admin API의 패키지 메서드는 PulsarAdmin 객체 문서에서 볼 수 있어요.
  • 패키지를 사용해 함수·커넥터를 네임스페이스 간에 공유하는 워크플로가 궁금하다면 Functions와 IO 문서를 참고해요.