GHCR(GitHub Container Registry)을 사용하여 Helm 차트 호스팅

TLDR: 전체 명령은 게시물 끝에서 찾을 수 있습니다.

저는 최근에 체크아웃Helm을 시작했고 차트가 Docker 컨테이너 이미지에서도 사용되는 일반 OCI(Open Container Image) 표준을 따르기 때문에 GitHub Container Registry (GHCR)에서 차트를 호스팅하는 조합에 대해 생각했습니다. 그 때문에 공개 차트/컨테이너는 무료이므로 GHCR에서 내 차트를 호스팅하는 데 필요한 단계를 이해하려고 노력했습니다. 다음 게시물은 필요한 필수 단계를 설명합니다. 그럼 바로 들어가 보겠습니다.

지배



우선 OCI 지원이 실험적이기 때문에 Helm이 버전>3.8에 설치되어 있는지 확인하십시오. 환경 변수3.8를 설정하면 이전HELM_EXPERIMENTAL_OCI=1 기능을 사용할 수 있습니다.
아직 Helm을 설치하지 않은 경우 macOS에서 brew install helm를 통해 설치할 수 있습니다. 다른 운영 체제의 경우 Helm의 문서에서 추가 설치 옵션1을 확인하십시오.

프레젠테이션을 위해 helm create <chart-name> 를 실행한 결과인 Helm에서 만든 기본 차트를 사용하겠습니다. 이 게시물에서는 helm create example-chart라고 부르겠습니다. 생성된 디렉토리의 콘텐츠는 이 게시물의 주제가 아니지만 Helm 문서2에서 자세한 정보를 찾을 수 있습니다.

모두 패키징하고 GHCR로 푸시할 준비를 하기 위해 Helm은 패키지에 대한 디렉토리 인수를 취하는 helm package 명령을 제공합니다. 차트의 상위 디렉토리에 있습니다. 따라서 helm package example-chart 를 사용하면 이름이 example-chart-0.1.0.tgz 인 새 패키지가 생성됩니다. 버전 번호는 example-chart/Chart.yaml 속성 아래의 version에서 변경할 수 있습니다.

GitHub 컨테이너 레지스트리 준비



GitHub Container Registry에 푸시하려면 개인 액세스 토큰으로 인증해야 합니다. 만든 적이 없는 경우 여기에 설명된 단계를 따를 수 있습니다3 . 토큰에 다음 권한이 있는지 확인하십시오.
  • read:packages
  • write:packages
  • delete:packages

  • 터미널 세션을 위해 액세스 토큰을 내보내고 export GHCR_PAT=ghp_... 기호 다음에 토큰과 함께 =를 사용하거나 .zshrc 또는 .bashrc를 사용할 수 있습니다. 이렇게 하려면 예를 들어 파일을 편집하십시오. nano .zshrc 파일에 내보내기 행을 추가합니다. 필요한 것은 현재 기본 셸에 따라 다릅니다. 어느 것이 기본 사용인지 확인하려면 터미널에서 echo $SHELL를 사용하십시오.ctrl + x를 통해 편집기를 저장하고 닫은 후 y로 확인하면 .zshrcsource .zshrc를 다시 로드해야 합니다. 그 후에는 토큰을 사용할 수 있어야 합니다.

    로그인



    작동하는지 확인하려면 echo $GHCR_PAT | docker login ghcr.io -u <GITHUB-USERNAME> --password-stdin 플래그 다음에 사용자 이름을 사용하여 -u를 사용하십시오.
    모든 것이 올바르게 구성된 경우 Login Succeeded 의 응답을 얻어야 합니다.

    GHCR로 푸시



    지금 누르는 것은 쉽습니다. 현재 차트 버전을 가져오고 Helm을 사용하여 GHCR에 푸시합니다.

    export CHART_VERSION=$(grep 'version:' ./example-chart/Chart.yaml | tail -n1 | awk '{ print $2}')
    helm push example-chart-${CHART_VERSION}.tgz oci://ghcr.io/niklasmtj
    


    다음과 비슷한 결과를 얻어야 합니다.

    Pushed: ghcr.io/niklasmtj/example-chart:0.1.0
    Digest: sha256:c13e9bc40b48460a7b3af6a5df78b4faeff6af7d0688333124884117478be18c
    


    이제 패키지가 푸시되고 탭 패키지 아래의 프로필을 통해 확인할 수 있습니다. 예를 들어, 이 예제 차트는 https://github.com/users/niklasmtj/packages/container/package/example-chart에서 찾을 수 있습니다.

    이것이 GitHub의 Container Registry에서 Helm 차트를 호스팅하는 방법입니다.

    읽어 주셔서 감사합니다,
    니클라스

    TLDR 명령




    helm create <chart-name>
    helm package <chart-name>
    echo $GHCR_PAT | docker login ghcr.io -u <GITHUB-USERNAME> --password-stdin
    export CHART_VERSION=$(grep 'version:' ./path/to/Chart.yaml | tail -n1 | awk '{ print $2 }')
    helm push <chart-name>-${CHART_VERSION}.tgz oci://ghcr.io/<GITHUB-USERNAME>
    





    https://helm.sh/docs/intro/install/

    https://helm.sh/docs/chart_template_guide/getting_started/

    https://docs.github.com/en/packages/working-with-a-github-packages-registry/working-with-the-container-registry#authenticating-to-the-container-registry

    좋은 웹페이지 즐겨찾기