Перейти до основного вмісту
Версія: 4.3.0

Вступ

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

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

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

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

Огляд пакунка main​

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

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

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

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

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)
// Ви можете передати порожній рядок замість 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

Тобто, кардинальні зміни будуть вноситися тільки при випуску нової основної версії або для усунення проблеми безпеки.