kubelatte-ce

Форк
2
Форк от sbertech/kubelatte-ce
78 строк · 2.4 Кб
1
package config
2

3
import (
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

11
const Prefix = "kblt"
12

13
type WebhookConfig struct {
14
	TLSPort                  int    `long:"port"  required:"false" description:"webhook server port for mutate endpoint"`
15
	HTTPPort                 int    `long:"http-port" default:"17773" required:"false" description:"webhook server http port for metrics and healthz endpoints"`
16
	CertFilePath             string `long:"cert-file-path" required:"false" description:"file containing the x509 Certificate for HTTPS"`
17
	KeyFilePath              string `long:"key-file-path" required:"false" description:"file containing the x509 private key"`
18
	CaFilePath               string `long:"ca-file-path" required:"false" description:"file containing the CA cert"`
19
	LogFile                  string `long:"log-file" required:"false" description:"fiete fluent-bit logs"`
20
	AllowDeprecatedTLSConfig 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
24
func NewWebhookConfig() (*WebhookConfig, error) {
25
	config, err := parse()
26
	if err != nil {
27
		return nil, errors.Errorf("api=NewWebhookConfig, reason=parse, err=%v", err)
28
	}
29
	return config, nil
30
}
31

32
// parse the args and environment to fill the ClientConfig
33
func parse() (*WebhookConfig, error) {
34
	c := &WebhookConfig{}
35
	parser := flags.NewParser(c, flags.HelpFlag|flags.PrintErrors|flags.PassDoubleDash|flags.IgnoreUnknown)
36
	extraArgs, err := parser.Parse()
37
	if err != nil {
38
		return nil, errors.Errorf("api=parse, err=%v", err)
39
	}
40

41
	if c.LogFile == "" {
42
		c.LogFile = filepath.Join(env.LogsPath, env.LogFileNameInjector)
43
	}
44

45
	if c.KeyFilePath == "" {
46
		c.KeyFilePath = env.ServerKey
47
	}
48

49
	if c.CertFilePath == "" {
50
		c.CertFilePath = env.ServerCert
51
	}
52

53
	if c.CaFilePath == "" {
54
		c.CaFilePath = env.SertCa
55
	}
56

57
	if env.TLSPort != 0 {
58
		c.TLSPort = env.TLSPort
59
	}
60

61
	// Parse any extra args for dependent packages that use "flag" (e.g., logs).
62
	flag.CommandLine.Parse(extraArgs)
63
	return c, nil
64
}
65

66
func Load() (*WebhookConfig, error) {
67
	webhookConfig, err := NewWebhookConfig()
68
	if err != nil {
69
		return nil, err
70
	}
71

72
	var flagsErr *flags.Error
73
	if errors.As(err, &flagsErr) && errors.Is(flagsErr.Type, flags.ErrHelp) {
74
		return nil, err
75
	}
76

77
	return webhookConfig, nil
78
}
79

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.