linkerd2/jaeger/values/values.go

81 lines
2.4 KiB
Go

package values
import (
"fmt"
"github.com/linkerd/linkerd2/jaeger/static"
"github.com/linkerd/linkerd2/pkg/charts"
l5dcharts "github.com/linkerd/linkerd2/pkg/charts/linkerd2"
"github.com/linkerd/linkerd2/pkg/version"
"helm.sh/helm/v3/pkg/chart/loader"
"helm.sh/helm/v3/pkg/chartutil"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"sigs.k8s.io/yaml"
)
// Values represents the values of jaeger template
type Values struct {
Namespace string `json:"namespace"`
CliVersion string `json:"cliVersion"`
Collector collector `json:"collector"`
Jaeger jaeger `json:"jaeger"`
LinkerdVersion string `json:"linkerdVersion"`
Webhook webhook `json:"webhook"`
}
type collector struct {
Resources l5dcharts.Resources `json:"resources"`
Image l5dcharts.Image `json:"image"`
}
type jaeger struct {
Resources l5dcharts.Resources `json:"resources"`
Image l5dcharts.Image `json:"image"`
}
type webhook struct {
ExternalSecret bool `json:"externalSecret"`
CrtPEM string `json:"crtPEM"`
KeyPEM string `json:"keyPEM"`
CaBundle string `json:"caBundle"`
CollectorSvcAddr string `json:"collectorSvcAddr"`
CollectorSvcAccount string `json:"collectorSvcAccount"`
FailurePolicy string `json:"failurePolicy"`
Image l5dcharts.Image `json:"image"`
LogLevel string `json:"logLevel"`
NamespaceSelector *metav1.LabelSelector `json:"namespaceSelector"`
ObjectSelector *metav1.LabelSelector `json:"objectSelector"`
}
// NewValues returns a new instance of the Values type.
// TODO: Add HA logic
func NewValues() (*Values, error) {
chartDir := fmt.Sprintf("%s/", "jaeger")
v, err := readDefaults(chartDir)
if err != nil {
return nil, err
}
v.CliVersion = version.Version
return v, nil
}
// readDefaults read all the default variables from the values.yaml file.
// chartDir is the root directory of the Helm chart where values.yaml is.
func readDefaults(chartDir string) (*Values, error) {
valuesFile := &loader.BufferedFile{
Name: chartutil.ValuesfileName,
}
if err := charts.ReadFile(static.Templates, chartDir, valuesFile); err != nil {
return nil, err
}
var values Values
if err := yaml.Unmarshal(valuesFile.Data, &values); err != nil {
return nil, err
}
return &values, nil
}