Вступ
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
Тобто, кардинальні зміни будуть вноситися тільки при випуску нової основної версії або для усунення проблеми безпеки.