Вступ

Go SDK Helm дозволяє програмному забезпеченню користувача використовувати чарти Helm та функціональність Helm для керування розгортанням програмного забезпечення Kubernetes (Насправді, інтерфейс командного рядка Helm — це просто один з таких інструментів!)

Зараз SDK функціонально відокремлений від CLI Helm. І SDK може використовуватися (і використовується) окремими інструментами. Проєкт Helm зобовʼязується зберігати стабільність API для SDK. Варто зауважити, що SDK все ще має деякі шорсткості, що залишилися від початкової роботи з відокремлення CLI та SDK. Проєкт Helm має на меті покращити це з часом.

Повну документацію API можна знайти за посиланням https://pkg.go.dev/helm.sh/helm/v3.

Нижче наведено короткий огляд основних типів пакетів та простий приклад. Дивіться розділ Приклади для більшої кількості прикладів та більш повнофункціонального 'драйвера'.

Огляд основних пакетів

  • pkg/action: Містить основний "клієнт" для виконання дій Helm. Це той самий пакет, який використовує CLI під капотом. Якщо вам потрібно виконувати базові команди Helm з іншої Go програми, цей пакет для вас
  • pkg/chart, pkg/chartutil: Методи та допоміжні функції для завантаження та маніпулювання чартами
  • pkg/chart та його підпакети: Містить усі обробники для стандартних змінних середовища Helm, а його підпакети містять обробку виводу та файлів значень
  • pkg/release: Визначає обʼєкт Release та статуси

Окрім цих є ще багато інших пакетів, тож перегляньте документацію для отримання додаткової інформації!

Простий приклад

Це простий приклад виконання команди helm list за допомогою Go SDK. Дивіться розділ Приклади для більш повнофункціональних прикладів.

package main

import (
    "log"
    "os"

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

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

    actionConfig := new(action.Configuration)
    // Ви можете передати порожній рядок замість settings.Namespace(), щоб
    // перелічити всі простори імен
    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)
    // Вивести перелік тільки розгорнутих
    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

Тобто, значні зміни буде внесено лише в основних (major) версіях.