package config

type Additional struct {
	CertManager struct {
		ChartRef     string   `yaml:"chart_ref" env-default:"kube-forge/cert-manager"`
		ChartVersion string   `yaml:"chart_version" env-default:"v1.14.5"`
		Enabled      bool     `yaml:"enabled"`
		HaEnabled    bool     `yaml:"ha_enabled"`
		DnsServers   []string `yaml:"dns_servers" env-default:"8.8.8.8,1.1.1.1"`
		AccountEmail string   `yaml:"account_email"`
		Controller   struct {
			Image string `yaml:"image" env-default:"quay.io/jetstack/cert-manager-controller"`
			Tag   string `yaml:"tag" env-default:"v1.14.5"`
		} `yaml:"controller"`
	} `yaml:"cert_manager"`

	Ingress struct {
		ChartRef                string `yaml:"chart_ref" env-default:"kube-forge/ingress-nginx"`
		ChartVersion            string `yaml:"chart_version" env-default:"4.10.1"`
		Type                    string `yaml:"type" env-default:"nginx"`
		Enabled                 bool   `yaml:"enabled"`
		IngressClassName        string `yaml:"ingress_class_name" env-default:"nginx"`
		HostNetwork             bool   `yaml:"host_network"`
		EnableAdmissionWebhooks bool   `yaml:"enable_admission_webhooks"`
		Nginx                   struct {
			Controller struct {
				Image string `yaml:"image" env-default:"registry.k8s.io/ingress-nginx/controller"`
				Tag   string `yaml:"tag" env-default:"v1.9.4"`
			} `yaml:"controller"`
			DefaultBackend struct {
				Image string `yaml:"image" env-default:"registry.k8s.io/defaultbackend-amd64"`
				Tag   string `yaml:"tag" env-default:"1.5"`
			} `yaml:"default_backend"`
		} `yaml:"nginx"`
	} `yaml:"ingress"`

	LoadBalancer struct {
		Type    string `yaml:"type" env-default:"metallb"`
		Enabled bool   `yaml:"enabled"`
	} `yaml:"load_balancer"`

	DockerSecrets struct {
		ChartRef     string      `yaml:"chart_ref" env-default:"kube-forge/docker-secrets-generator"`
		ChartVersion string      `yaml:"chart_version" env-default:"0.1.0"`
		Repositories interface{} `yaml:"repositories"`
	} `yaml:"docker_secrets"`

	Storage struct {
		LocalPathProvisioner struct {
			StorageClassName string `yaml:"storage_class_name" env-default:"local-path"`
			ReclaimPolicy    string `yaml:"reclaim_policy" env-default:"Delete"`
		} `yaml:"local_path_provisioner"`
		Longhorn struct {
			ChartRef     string `yaml:"chart_ref" env-default:"kube-forge/longhorn"`
			ChartVersion string `yaml:"chart_version" env-default:"1.6.1"`
			Enabled      bool   `yaml:"enabled"`
		} `yaml:"longhorn"`
		SecretsStoreCsiDriver struct {
			ChartRef     string `yaml:"chart_ref" env-default:"kube-forge/secrets-store-csi-driver"`
			ChartVersion string `yaml:"chart_version" env-default:"1.4.3"`
			Enabled      bool   `yaml:"enabled"`
		} `yaml:"secrets_store_csi_driver"`
	} `yaml:"storage"`
}
