[TCE] Design – Package Management

Tanzu 패키지 관리

이 문서에서는 Tanzu Community Edition에서 서버 측 및 클라이언트 측 패키지의 관리에 대해 설명합니다. 이것은 우리의 패키지 관리가 구현되고 향상됨에 따라 시간이 지남에 따라 발전하게 될 실무 디자인 문서입니다.

서버 측

이 섹션에서는 익스텐션(extension)의 서버 측 관리에 대해 설명합니다. 특히 kapp-controller 및 관련 Packing API에 초점을 맞춥니다.

개요 및 API

Tanzu Community Edition은 Carvel Packaging API를 사용한 패키지 관리를 제공합니다. 기본 API는 다음과 같습니다.

  • Package: 패키지에 대한 메타데이터와 이를 충족하는 OCI 번들을 포함합니다. 일반적으로 참조되는 OCI 번들은 imgpkg 구성의 번들입니다. 패키지가 결국 PackageRepository에 번들로 제공됩니다.
  • PackageRepository: 패키지 번들입니다. 번들은 imgpkg를 사용하여 생성되고 OCI 리포지토리에 푸시됩니다. 캅 컨트롤러는 개체를 감시하고 클러스터에서 패키지를 사용할 수 있도록 합니다.
  • IntalledPackage: 클러스터에서 패키지를 설치하려고 합니다. tanzu 또는 kubectl CLI와 같은 클라이언트측 도구에 의해 적용됩니다. InstalledPackage는 패키지를 참조합니다.

패키지 생성

패키지는 PackageRepository의 내용을 기반으로 kapp 컨트롤러에 의해 생성됩니다. PackageRepository는 패키지 매니페스트의 OCI 번들을 가리킵니다. PackageRepository를 클러스터에 포함하면 기본적으로 Package를 사용할 수 있습니다. 이것은 다음과 같이 시각적으로 표현될 수 있습니다.

위와 같이 하면 사용자는 kubectl을 사용하여 모든 패키지를 볼 수 있습니다.

Shell

패키지 설치(서버 측)

Package를 설치하려면 InstalledPackage 리소스가 클러스터에 적용됩니다. 그러면 kapp-controller가 해당 Package 매니페스트에서 참조되는 구성 번들을 조회하도록 지시합니다. 그런 다음 이러한 자산을 다운로드하고 렌더링한 다음(예: ytt) 클러스터에 적용합니다. 이것은 다음과 같이 시각적으로 표현될 수 있습니다.

클라이언트 측면

이 섹션에서는 확장의 클라이언트 측 관리에 대해 설명합니다. 특히 패키지를 검색, 구성, 배포 및 관리하기 위해 tanzu CLI를 사용하는 것을 중점적으로 다룹니다.

패키지 검색

tanzu CLI는 클러스터에 알려진 패키지를 검색할 수 있습니다. 클러스터에서 사용할 수 있는 모든 Package CRs를 확인하여 이러한 패키지를 검색합니다. 이러한 패키지는 하나 이상의 PackageRepository CR에서 가져올 수 있습니다. 이 모델은 리포지토리(예: /etc/apt/sources.list)를 포함하면 관리자가 새 패키지를 사용할 수 있는 인기 Linux 패키지 관리자(예: apt)에서 영감을 받았습니다. 이것으로 다음과 같은 명령이 가능합니다.

Shell

위에서 tanzu CLI는 이미 존재하는 객체의 메타데이터를 집계하고 나열합니다. 각 패키지 인스턴스에서 다음을 수행합니다.

  • NAMEspec.publicName
  • DISPLAY-NAMEspec.version
  • SHORT-DESCRIPTIONspec.

이것은 시각적으로 다음과 같이 표현됩니다.

패키지 구성

설치 전에 tanzu CLI에서 패키지를 구성할 수 있습니다. 이 작업은 각 패키지에 대해 –values-schema를 검사하고 구성할 YAML 값의 –values-file을 제공하여 수행됩니다. 또는 GitHub에서 각 패키지에 포함된 config/value.yaml 파일을 조회할 수 있습니다. 다음과 같은 방법으로 구성을 캡처해 보십시오.

a. –values-schema 플래그를 사용하여 가능한 값 목록을 검색합니다.

Shell
  • KEY values.yaml 파일에 입력할 수 있는 yaml 액세스 키를 나타냅니다. 중첩된 키는 . 로 표시됩니다.
  • DEFAULT는 제공된 values.yaml 파일에 구성되지 않은 경우 기본값을 나타냅니다.
  • TYPE은 values.yaml 파일의 키/값 쌍에서 예상되는 yaml 유형을 알려줍니다.
  • Description은 값이 패키지에 대해 구성하는 내용에 대한 간단한 설명입니다.

b. values.yaml 파일을 만들고 –values-schema를 기반으로 네임스페이스 및 logLevel 값을 정의합니다.

YAML

c. 설치하는 동안 value.yaml 파일을 적용합니다.

Shell

참고: 값 파일은 ytt 구문을 사용해야 합니다. 자세한 내용은 Carvel ytt 문서를 참조하십시오.

패키지 설치

Tanzu CLI는 패키지를 설치할 수 있습니다. 여기서 설치는 워크로드를 클러스터에 배포하려는 의향을 나타냅니다. 이 작업은 InstalledPackage CR를 사용하여 수행합니다. 클러스터에 존재하면 kapp 컨트롤러(서버 측)가 생성 및 조정해야 하는 리소스를 해결할 수 있습니다.

tanzu CLI 측의 주요 작업은 Package CR를 사용자의 요구에 따라 InstalledPackage로 변환하는 것입니다. 클러스터에서 사용 가능한 다음과 같은 패키지를 고려하십시오.

Shell

사용자가 knative-serving.tce.vmware.com:0.21.0-vmware0 패키지를 설치하려는 경우 다음 명령을 실행할 수 있습니다.

Shell

이 명령을 실행할 때 tanzu 클라이언트는 다음을 수행합니다.

  1. knative-serving.tce.vmware.com:0.21.0-vmware0 패키지의 내용을 읽어보십시오.

다음은 패키지 내용물의 예입니다.

YAML

2. knative-serving-0-21 InstalledPackage를 만들었습니다.

다음은 InstalledPackage 콘텐츠의 예입니다.

YAML

3. 클러스터에 InstalledPackage를 적용했습니다.

이것은 시각적으로 다음과 같이 표현됩니다.

패키지 구성 포함

패키지 구성에 설명된 대로 추가 구성을 설치할 수 있습니다. 설치 중에 –values-file/-f를 플래그로 포함할 수 있습니다. 위의 예제는 다음을 사용하여 다시 실행할 수 있습니다.

Shell

이 구성을 포함하면 다음과 같은 작업을 수행할 수 있습니다.

  1. Kubernetes의 시크릿으로 knative-serving-config.yaml을 적용하세요.

예를 들어 다음과 같습니다.

YAML

2. 적용하기 전에 spec.values를 InstalledPackage CR에 추가하십시오.

YAML

패키지 리포지토리 탐색

tanzu CLI는 클러스터에 알려진 모든 패키지 리포지토리를 나열할 수 있습니다. 기본적으로 모든 PackageRepository 개체의 목록입니다. CLI 상호 작용은 다음과 같습니다.

Shell

위에서 tanzu CLI는 이미 존재하는 객체의 메타데이터를 집계하고 나열합니다. 각 PackageRepository 인스턴스에서 다음을 수행합니다.

  • NAME : metadata.name
  • VERSION : 현재 알 수 없습니다. 패키지 리포 버전이 지정됩니까?

패키지 리포지토리 생성

tangu CLI는 패키지 리포지토리를 설치할 수 있습니다. 그러면 해당 repo에서 참조되는 모든 패키지가 생성되어 kapp 컨트롤러에 의해 클러스터에서 사용할 수 있게 됩니다. 패키지 리포지토리가 여러 패키지 매니페스트를 포함하는 OCI 번들을 가리킵니다. tansu CLI는 PackageRepository CR만 적용하면 됩니다. 이 저장소 매니페스트는 Tanzu Community Edition GitHub repo에서 확인할 수 있습니다. 흐름은 다음과 같이 보일 수 있습니다.

Shell

흐름으로 보면 다음과 같습니다.

패키지 리포지토리를 삭제

tanzu CLI는 패키지 리포지토리를 삭제할 수 있습니다. 다시 해당 repo에서 참조된 모든 패키지가 kapp-controller에 의해 삭제됩니다.

Shell

흐름은 다음과 같이 보일 수 있습니다.

설계 보류 세부 정보

이 섹션에서는 설계 작업이 필요한 문제를 다룹니다.

패키지 및 PackageRepository를 업그레이드하는 중입니다

Package 및 PackageRepsitory 업그레이드가 클라이언트측 관점에서 작동하는 방식에 대한 설계가 필요합니다.

출처 : https://tanzucommunityedition.io/docs/latest/designs/package-management/
답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

You May Also Like
Read More

New Tanzu/CNS Features in vSphere 8 U1

vDS 기반 슈퍼바이저에서 슈퍼바이저 서비스를 사용 가능 이전에는 슈퍼바이저 서비스의 가용성이 NSX 기반 슈퍼바이저로만 제한되었습니다. 이제 vSphere vDS(Distributed…