Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

ONAP Next Generation Security & Logging Architecture


GO Client

Create kubernetes jobs in golang

There is also a helm sdk you can use:

Code Block
languagepy
titleHelm Deploy
package main

import (
    "fmt"
    "os"
    "log"
    "k8s.io/cli-runtime/pkg/genericclioptions"
    "k8s.io/client-go/rest"
    "helm.sh/helm/v3/pkg/action"
    "helm.sh/helm/v3/pkg/chart/loader"
)

func main() {
    chartPath := "/tmp/wordpress-12.3.3.tgz"
    chart, err := loader.Load(chartPath)

    releaseName := "wordpress"
    releaseNamespace := "default"

    actionConfig, err := getActionConfig(releaseNamespace)
    if err != nil {
        panic(err)
    }

    listAction := action.NewList(actionConfig)
    releases, err := listAction.Run()
    if err != nil {
        log.Println(err)
    }
    for _, release := range releases {
        log.Println("Release: " + release.Name + " Status: " + release.Info.Status.String())
    }

    iCli := action.NewInstall(actionConfig)
    iCli.Namespace = releaseNamespace
    iCli.ReleaseName = releaseName
    rel, err := iCli.Run(chart, nil)
    if err != nil {

        fmt.Println(err)
    }
   fmt.Println("Successfully installed release: ", rel.Name)
}

func getActionConfig(namespace string) (*action.Configuration, error) {
        actionConfig := new(action.Configuration)
        var kubeConfig *genericclioptions.ConfigFlags
        // Create the rest config instance with ServiceAccount values loaded in them
        config, err := rest.InClusterConfig()
        if err != nil {
                return nil, err
        }
        // Create the ConfigFlags struct instance with initialized values from ServiceAccount
        kubeConfig = genericclioptions.NewConfigFlags(false)
        kubeConfig.APIServer = &config.Host
        kubeConfig.BearerToken = &config.BearerToken
        kubeConfig.CAFile = &config.CAFile
        kubeConfig.Namespace = &namespace
        if err := actionConfig.Init(kubeConfig, namespace, os.Getenv("HELM_DRIVER"), func(format string, v ...interface{}) {
            fmt.Sprintf(format, v)
        }); err != nil {
            panic(err)
        }
        return actionConfig, nil
}