소개

소개

Helm의 Go SDK는 커스텀 소프트웨어가 Helm 차트와 Helm 기능을 활용해 Kubernetes 소프트웨어 배포를 관리할 수 있게 해 줘요. (사실 Helm CLI 자체도 그런 도구 중 하나일 뿐이에요!)

현재 SDK는 Helm CLI와 기능적으로 분리됐어요. 그리고 SDK는 독립 실행 도구에 사용될 수 있고 실제로 사용됐어요. Helm 프로젝트는 SDK의 API 안정성을 약속했어요. 다만 CLI와 SDK를 분리하는 초기 작업에서 남은 몇 가지 거친 부분이 있는데, Helm 프로젝트는 시간이 지나면서 개선할 계획이에요.

전체 API 문서는 https://pkg.go.dev/helm.sh/helm/v4에서 볼 수 있어요.

아래에 주요 패키지 타입에 대한 간단한 개요와 간단한 예제가 있어요. 더 많은 예제와 더 완성된 기능을 갖춘 '드라이버'는 예제 섹션을 참고하세요.

출처: 문서

본문

주요 패키지 개요

  • pkg/action: Helm 액션을 수행하는 주요 "클라이언트"를 담아요. CLI가 내부적으로 사용하는 것과 같은 패키지예요. 다른 Go 프로그램에서 기본적인 Helm 명령만 수행하면 된다면 이 패키지가 딱이에요.

  • pkg/chart, pkg/chartutil: 차트를 로드하고 조작하는 데 쓰이는 메서드와 헬퍼예요.

  • pkg/cli 및 그 하위 패키지: 표준 Helm 환경 변수의 모든 핸들러를 담고 있으며, 하위 패키지는 출력과 값 파일 처리를 담당해요.

  • pkg/release: Release 객체와 상태를 정의해요.

이 외에도 훨씬 많은 패키지가 있으니 문서를 확인해 더 많은 정보를 얻어 보세요!

간단한 예제

Go SDK로 helm list를 수행하는 간단한 예제예요. 더 완성된 예제는 예제 섹션을 참고하세요.

package main

import (
    "log"
    "os"

    "helm.sh/helm/v4/pkg/action"
    "helm.sh/helm/v4/pkg/cli"
)

func main() {
    settings := cli.New()

    actionConfig := new(action.Configuration)
    // You can pass an empty string instead of settings.Namespace() to list
    // all namespaces
    if err := actionConfig.Init(settings.RESTClientGetter(), settings.Namespace(), os.Getenv("HELM_DRIVER"), log.Printf); err != nil {
        log.Printf("%+v", err)
        os.Exit(1)
    }

    client := action.NewList(actionConfig)
    // Only list deployed
    client.Deployed = true
    results, err := client.Run()
    if err != nil {
        log.Printf("%+v", err)
        os.Exit(1)
    }

    for _, rel := range results {
        log.Printf("%+v", rel)
    }
}

호환성

Helm SDK는 명시적으로 Helm의 하위 호환성 보장을 따릅니다:

https://github.com/helm/community/blob/main/hips/hip-0004.md

즉, 호환성이 깨지는 변경은 메이저 버전 릴리스로만 하거나 보안 문제를 해결하기 위해서만 이루어져요.

더 알아보기 (Learn more)