Различные методы получения текущих значений диаграммы управления

Чтобы получить текущие значения диаграммы Хелма, вы можете использовать различные методы в зависимости от ваших требований и инструментов, имеющихся в вашем распоряжении. Вот несколько методов с примерами кода:

Метод 1: использование интерфейса командной строки Helm
CLI Helm предоставляет команду для получения текущих значений развернутой диаграммы Helm.

helm get values <release-name>

Замените <release-name>на имя развернутой версии Helm. Эта команда выведет текущие значения в формате YAML.

Метод 2: использование Kubernetes API
Вы также можете получить текущие значения непосредственно из Kubernetes API. Для этого метода требуются необходимые разрешения для доступа к API Kubernetes.

from kubernetes import client, config
config.load_kube_config()
api_instance = client.CoreV1Api()
def get_helm_chart_values(release_name, namespace):
    deployment = api_instance.read_namespaced_deployment(name=release_name, namespace=namespace)
    return deployment.spec.template.spec.containers[0].env[0].value
chart_values = get_helm_chart_values("my-release", "default")
print(chart_values)

Перед запуском этого кода убедитесь, что у вас установлен пакет Python kubernetes.

Метод 3. Использование библиотеки Helm Go
Если вы работаете с Go, вы можете использовать библиотеку Helm Go для получения текущих значений.

package main
import (
    "fmt"
    "os"
    "helm.sh/helm/v3/pkg/action"
    "helm.sh/helm/v3/pkg/cli"
)
func getHelmChartValues(releaseName string) (map[string]interface{}, error) {
    settings := cli.New()
    actionConfig := new(action.Configuration)
    if err := actionConfig.Init(settings.RESTClientGetter(), settings.Namespace(), os.Getenv("HELM_DRIVER"), debug); err != nil {
        return nil, err
    }
    client := action.NewGetValues(actionConfig)
    values, err := client.Run(releaseName)
    if err != nil {
        return nil, err
    }
    return values.AsMap(), nil
}
func main() {
    values, err := getHelmChartValues("my-release")
    if err != nil {
        fmt.Println("Error:", err)
        return
    }
    fmt.Println(values)
}

Этот код использует библиотеку Helm Go для получения текущих значений для заданного названия выпуска.