kubelatte-ce
Форк от sbertech/kubelatte-ce
78 строк · 2.4 Кб
1package config2
3import (4"flag"5"github.com/jessevdk/go-flags"6"github.com/pkg/errors"7"gitverse.ru/synapse/kubelatte/pkg/util/env"8"path/filepath"9)
10
11const Prefix = "kblt"12
13type WebhookConfig struct {14TLSPort int `long:"port" required:"false" description:"webhook server port for mutate endpoint"`15HTTPPort int `long:"http-port" default:"17773" required:"false" description:"webhook server http port for metrics and healthz endpoints"`16CertFilePath string `long:"cert-file-path" required:"false" description:"file containing the x509 Certificate for HTTPS"`17KeyFilePath string `long:"key-file-path" required:"false" description:"file containing the x509 private key"`18CaFilePath string `long:"ca-file-path" required:"false" description:"file containing the CA cert"`19LogFile string `long:"log-file" required:"false" description:"fiete fluent-bit logs"`20AllowDeprecatedTLSConfig bool `long:"allow-deprecated-tls-config" required:"false" description:"permits use of deprecated TLS configuration (TLS 1.0/1.1, weak ciphers)"`21}
22
23// NewWebhookConfig is a constructor for WebhookConfig
24func NewWebhookConfig() (*WebhookConfig, error) {25config, err := parse()26if err != nil {27return nil, errors.Errorf("api=NewWebhookConfig, reason=parse, err=%v", err)28}29return config, nil30}
31
32// parse the args and environment to fill the ClientConfig
33func parse() (*WebhookConfig, error) {34c := &WebhookConfig{}35parser := flags.NewParser(c, flags.HelpFlag|flags.PrintErrors|flags.PassDoubleDash|flags.IgnoreUnknown)36extraArgs, err := parser.Parse()37if err != nil {38return nil, errors.Errorf("api=parse, err=%v", err)39}40
41if c.LogFile == "" {42c.LogFile = filepath.Join(env.LogsPath, env.LogFileNameInjector)43}44
45if c.KeyFilePath == "" {46c.KeyFilePath = env.ServerKey47}48
49if c.CertFilePath == "" {50c.CertFilePath = env.ServerCert51}52
53if c.CaFilePath == "" {54c.CaFilePath = env.SertCa55}56
57if env.TLSPort != 0 {58c.TLSPort = env.TLSPort59}60
61// Parse any extra args for dependent packages that use "flag" (e.g., logs).62flag.CommandLine.Parse(extraArgs)63return c, nil64}
65
66func Load() (*WebhookConfig, error) {67webhookConfig, err := NewWebhookConfig()68if err != nil {69return nil, err70}71
72var flagsErr *flags.Error73if errors.As(err, &flagsErr) && errors.Is(flagsErr.Type, flags.ErrHelp) {74return nil, err75}76
77return webhookConfig, nil78}
79