update kube-forge concept and add ability to change data dir for containerd

This commit is contained in:
2024-11-24 17:59:37 +03:00
parent 78cf06e314
commit 1c366bdb6b
46 changed files with 2023 additions and 4343 deletions

View File

@@ -30,13 +30,7 @@ type Config struct {
Orchestrator Orchestrator `yaml:"orchestrator"`
Modules struct {
AdminPassword string `yaml:"admin_password"`
AdditionalRepositories interface{} `yaml:"additional_repositories"`
Additional Additional `yaml:"additional"`
Observability Observability `yaml:"observability"`
Registry Registry `yaml:"registry"`
Cicd Cicd `yaml:"cicd"`
SecretsStorage SecretsStorage `yaml:"secrets_storage"`
Additional Additional `yaml:"additional"`
} `yaml:"modules"`
}
@@ -54,9 +48,6 @@ func CreateConfig(configPath string, workDir string, password string) *Config {
if password != "" {
instance.Credentials.Password = password
}
generateCreds(instance)
return instance
}

View File

@@ -1,96 +0,0 @@
package config
type Cicd struct {
Enabled bool `yaml:"enabled"`
Namespace string `yaml:"namespace" env-default:"cicd"`
ArgoCd struct {
ChartRef string `yaml:"chart_ref" env-default:"kube-forge/argo-cd"`
ChartVersion string `yaml:"chart_version" env-default:"6.7.10"`
AdminPassword string
Ha struct {
Enabled bool `yaml:"enabled"`
Autoscaling bool `yaml:"autoscaling"`
} `yaml:"ha"`
Expose struct {
Type string `yaml:"type"`
Domain string `yaml:"domain"`
Path string `yaml:"path" env-default:"/"`
NodePortHttp int `yaml:"node_port_http" env-default:"30005"`
NodePortHttps int `yaml:"node_port_https" env-default:"30006"`
Tls struct {
Enabled bool `yaml:"enabled"`
} `yaml:"tls"`
} `yaml:"expose"`
Repositories interface{} `yaml:"repositories"`
Rbac struct {
AdditionalPolicies string `yaml:"additional_policies"`
} `yaml:"argo_cd"`
ServiceIngress struct {
ChartRef string `yaml:"chart_ref" env-default:"kube-forge/service-ingress"`
ChartVersion string `yaml:"chart_version" env-default:"0.1.0"`
} `yaml:"service_ingress"`
Global struct {
Image string `yaml:"image" env-default:"quay.io/argoproj/argocd"`
Tag string `yaml:"tag" env-default:"latest"`
} `yaml:"global"`
Server struct {
Image string `yaml:"image" env-default:"quay.io/argoproj/argocd"`
Tag string `yaml:"tag" env-default:"latest"`
} `yaml:"server"`
Redis struct {
Image string `yaml:"image" env-default:"public.ecr.aws/docker/library/redis"`
Tag string `yaml:"tag" env-default:"7.2.4-alpine"`
Exporter struct {
Image string `yaml:"image" env-default:"public.ecr.aws/bitnami/redis-exporter"`
Tag string `yaml:"tag" env-default:"1.58.0"`
} `yaml:"exporter"`
} `yaml:"redis"`
ApplicationSet struct {
Image string `yaml:"image" env-default:"quay.io/argoproj/argocd"`
Tag string `yaml:"tag" env-default:"latest"`
} `yaml:"application_set"`
Dex struct {
Image string `yaml:"image" env-default:"ghcr.io/dexidp/dex"`
Tag string `yaml:"tag" env-default:"v2.38.0"`
} `yaml:"dex"`
RepoServer struct {
Image string `yaml:"image" env-default:"quay.io/argoproj/argocd"`
Tag string `yaml:"tag" env-default:"latest"`
} `yaml:"repo_server"`
Notifications struct {
Image string `yaml:"image" env-default:"quay.io/argoproj/argocd"`
Tag string `yaml:"tag" env-default:"latest"`
} `yaml:"notifications"`
Controller struct {
Image string `yaml:"image" env-default:"quay.io/argoproj/argocd"`
Tag string `yaml:"tag" env-default:"latest"`
} `yaml:"controller"`
} `yaml:"argo_cd"`
UpdatesOperator struct {
ChartRef string `yaml:"chart_ref" env-default:"kube-forge/keel"`
ChartVersion string `yaml:"chart_version" env-default:"1.0.3"`
Enabled bool `yaml:"enabled"`
Namespace string `yaml:"namespace" env-default:"kube-system"`
Image string `yaml:"image" env-default:"harbor.kvazaric.ru/kube-forge/keelhq/keel"`
Tag string `yaml:"tag" env-default:"latest"`
} `yaml:"updates_operator"`
Rollouts struct {
ChartRef string `yaml:"chart_ref" env-default:"kube-forge/argo-rollouts"`
ChartVersion string `yaml:"chart_version" env-default:"2.35.1"`
Enabled bool `yaml:"enabled"`
Registry string `yaml:"registry" env-default:"quay.io"`
Repository string `yaml:"repository" env-default:"argoproj/argo-rollouts"`
Tag string `yaml:"tag" env-default:"latest"`
Ha struct {
Enabled bool `yaml:"enabled"`
} `yaml:"ha"`
Expose struct {
Type string `yaml:"type"`
NodePort int `yaml:"node_port" env-default:"30010"`
} `yaml:"expose"`
Controller struct {
} `yaml:"controller"`
Dashboard struct {
} `yaml:"dashboard"`
} `yaml:"rollouts"`
}

View File

@@ -1,179 +0,0 @@
package config
type Observability struct {
ChartRef string `yaml:"chart_ref" env-default:"kube-forge/observability"`
ChartVersion string `yaml:"chart_version" env-default:"0.1.0"`
Enabled bool `yaml:"enabled"`
Logging Logging `yaml:"logging"`
Tracing Tracing `yaml:"tracing"`
Monitoring Monitoring `yaml:"monitoring"`
Visualization Visualization `yaml:"visualization"`
Namespace string `yaml:"namespace" env-default:"observability"`
}
type Logging struct {
Enabled bool `yaml:"enabled"`
Operator struct {
ChartRef string `yaml:"chart_ref" env-default:"kube-forge/fluent-operator"`
ChartVersion string `yaml:"chart_version" env-default:"2.7.0"`
Image string `yaml:"image" env-default:"harbor.kvazaric.ru/kube-forge/kubesphere/fluent-operator"`
Tag string `yaml:"tag" env-default:"v2.7.0"`
Namespace string `yaml:"namespace" env-default:"observability"`
InitContainer struct {
Image string `yaml:"image" env-default:"harbor.kvazaric.ru/kube-forge/docker"`
Tag string `yaml:"tag" env-default:"20.10"`
} `yaml:"initcontainer"`
} `yaml:"operator"`
Fluentd struct {
Image string `yaml:"image" env-default:"harbor.kvazaric.ru/kube-forge/kubesphere/fluentd"`
Tag string `yaml:"tag" env-default:"v1.15.3"`
} `yaml:"fluentd"`
FluentBit struct {
Image string `yaml:"image" env-default:"harbor.kvazaric.ru/kube-forge/kubesphere/fluent-bit"`
Tag string `yaml:"tag" env-default:"v2.2.2"`
} `yaml:"fluent_bit"`
Loki struct {
ChartRef string `yaml:"chart_ref" env-default:"kube-forge/loki"`
ChartVersion string `yaml:"chart_version" env-default:"5.47.2"`
Registry string `yaml:"registry" env-default:"harbor.kvazaric.ru"`
Image string `yaml:"image" env-default:"kube-forge/grafana/loki"`
Tag string `yaml:"tag" env-default:"latest"`
Namespace string `yaml:"namespace" env-default:"observability"`
Persistence struct {
StorageClass string `yaml:"storage_class" env-default:"local-path"`
StorageSize string `yaml:"storage_size" env-default:"10Gi"`
Retention string `yaml:"retention" env-default:"168h"`
} `yaml:"persistence"`
AlertManagerUrl string `yaml:"alert_manager_u rl" env-default:"http://observability-alert-manager:9093"`
AdditionalRulesGroups string `yaml:"additional_rules_groups" env-default:""`
} `yaml:"loki"`
Events struct {
Enabled bool `yaml:"enabled"`
Exporter struct {
Image string `yaml:"image" env-default:"ghcr.io/resmoio/kubernetes-event-exporter"`
Tag string `yaml:"tag" env-default:"v1.4"`
} `yaml:"exporter"`
Cron struct {
Image string `yaml:"image" env-default:"harbor.kvazaric.ru/kube-forge/bitnami/kubectl"`
Tag string `yaml:"tag" env-default:"1.27.5-debian-11-r8"`
Schedule string `yaml:"schedule" env-default:"*/2 * * * *"`
} `yaml:"cron"`
} `yaml:"events"`
}
type Tracing struct {
Enabled bool `yaml:"enabled"`
Operator struct {
ChartRef string `yaml:"chart_ref" env-default:"kube-forge/opentelemetry-operator"`
ChartVersion string `yaml:"chart_version" env-default:"0.55.0"`
Image string `yaml:"image" env-default:"ghcr.io/open-telemetry/opentelemetry-operator/opentelemetry-operator"`
Tag string `yaml:"tag" env-default:""`
Namespace string `yaml:"namespace" env-default:"observability"`
} `yaml:"operator"`
Collector struct {
Image string `yaml:"image" env-default:"harbor.kvazaric.ru/kube-forge/otel/opentelemetry-collector-contrib"`
Tag string `yaml:"tag" env-default:"0.95.0"`
} `yaml:"collector"`
Tempo struct {
ChartRef string `yaml:"chart_ref" env-default:"kube-forge/tempo"`
ChartVersion string `yaml:"chart_version" env-default:"1.7.2"`
Image string `yaml:"image" env-default:"harbor.kvazaric.ru/kube-forge/grafana/tempo"`
Tag string `yaml:"tag" env-default:"2.3.1"`
Namespace string `yaml:"namespace" env-default:"observability"`
Retention string `yaml:"retention" env-default:"24h"`
ListenPort int `yaml:"listen_port" env-default:"3100"`
Persistence struct {
StorageClass string `yaml:"storage_class" env-default:"local-path"`
StorageSize string `yaml:"storage_size" env-default:"10Gi"`
} `yaml:"persistence"`
TempoQuery struct {
Image string `yaml:"image" env-default:"harbor.kvazaric.ru/kube-forge/grafana/tempo-query"`
Tag string `yaml:"tag" env-default:"2.3.1"`
ListenPort int `yaml:"listen_port" env-default:"16686"`
} `yaml:"tempo_query"`
} `yaml:"tempo"`
}
type Monitoring struct {
Enabled bool `yaml:"enabled"`
Prometheus struct {
Image string `yaml:"image" env-default:"harbor.kvazaric.ru/kube-forge/prom/prometheus"`
Tag string `yaml:"tag" env-default:"v2.45.0"`
ScrapeInterval string `yaml:"scrape_interval" env-default:"15s"`
Persistence struct {
StorageClass string `yaml:"storage_class" env-default:"local-path"`
StorageSize string `yaml:"storage_size" env-default:"3Gi"`
Retention string `yaml:"retention" env-default:"7d"`
} `yaml:"persistence"`
Operator struct {
Image string `yaml:"image" env-default:"ghcr.io/prometheus-operator/prometheus-operator"`
Tag string `yaml:"tag" env-default:"v0.65.2"`
ConfigReloader struct {
Image string `yaml:"image" env-default:"ghcr.io/prometheus-operator/prometheus-config-reloader"`
Tag string `yaml:"tag" env-default:"v0.65.2"`
} `yaml:"config_reloader"`
KubeRbacProxy struct {
Image string `yaml:"image" env-default:"harbor.kvazaric.ru/kube-forge/bitnami/kube-rbac-proxy"`
Tag string `yaml:"tag" env-default:"0.14.1"`
} `yaml:"kube_rbac_proxy"`
} `yaml:"operator"`
} `yaml:"prometheus"`
AlertManager struct {
Enabled bool `yaml:"enabled"`
Image string `yaml:"image" env-default:"harbor.kvazaric.ru/kube-forge/prom/alertmanager"`
Tag string `yaml:"tag" env-default:"v0.26.0"`
AdditionalMessageTemplates interface{} `yaml:"additionalMessageTemplates"`
Route interface{} `yaml:"route"`
Receivers interface{} `yaml:"receivers"`
} `yaml:"alert_manager"`
Blackbox struct {
Enabled bool `yaml:"enabled"`
Image string `yaml:"image" env-default:"harbor.kvazaric.ru/kube-forge/prom/blackbox-exporter"`
Tag string `yaml:"tag" env-default:"v0.24.0"`
AdditionalModules string `yaml:"routes" env-default:""`
} `yaml:"blackbox"`
KubeState struct {
Enabled bool `yaml:"enabled"`
Image string `yaml:"image" env-default:"harbor.kvazaric.ru/kube-forge/bitnami/kube-state-metrics"`
Tag string `yaml:"tag" env-default:"2.9.2"`
} `yaml:"kube_state"`
Node struct {
Enabled bool `yaml:"enabled"`
Image string `yaml:"image" env-default:"harbor.kvazaric.ru/kube-forge/prom/node-exporter"`
Tag string `yaml:"tag" env-default:"v1.5.0"`
} `yaml:"node"`
MetricsServer struct {
ChartRef string `yaml:"chart_ref" env-default:"kube-forge/metrics-server"`
ChartVersion string `yaml:"chart_version" env-default:"3.12.1"`
Image string `yaml:"image" env-default:"registry.k8s.io/metrics-server/metrics-server"`
Tag string `yaml:"tag" env-default:""`
Namespace string `yaml:"namespace" env-default:"kube-system"`
}
}
type Visualization struct {
Enabled bool `yaml:"enabled"`
Grafana struct {
Enabled bool `yaml:"enabled"`
Image string `yaml:"image" env-default:"harbor.kvazaric.ru/kube-forge/grafana"`
Tag string `yaml:"tag" env-default:"10.4.1-v2"`
Expose struct {
Type string `yaml:"type" env-default:"ingress"`
Domain string `yaml:"domain" env-default:""`
Path string `yaml:"path" env-default:"/"`
NodePortHttp int `yaml:"node_port_http" env-default:"30007"`
Tls struct {
Enabled bool `yaml:"enabled"`
}
} `yaml:"expose"`
Persistence struct {
StorageClass string `yaml:"storage_class" env-default:"local-path"`
StorageSize string `yaml:"storage_size" env-default:"2Gi"`
} `yaml:"persistence"`
Config struct {
Auth string `yaml:"auth" env-default:""`
AuthGenericAuth string `yaml:"auth_generic_auth" env-default:""`
AdditionalDatasources interface{} `yaml:"additional_datasources"`
} `yaml:"config"`
} `yaml:"grafana"`
}

View File

@@ -1,66 +0,0 @@
package config
type Registry struct {
ChartRef string `yaml:"chart_ref" env-default:"kube-forge/harbor"`
ChartVersion string `yaml:"chart_version" env-default:"1.14.2"`
Enabled bool `yaml:"enabled"`
AdminPassword string
Namespace string `yaml:"namespace" env-default:"registry"`
Expose struct {
Type string `yaml:"type" env-default:"nodePort"`
Domain string `yaml:"domain" env-default:""`
Path string `yaml:"path" env-default:"/"`
NodePortHttp int `yaml:"node_port_http" env-default:"30002"`
NodePortHttps int `yaml:"node_port_https" env-default:"30003"`
} `yaml:"expose"`
Tls struct {
Enabled bool `yaml:"enabled"`
CertificateGenerator struct {
ChartRef string `yaml:"chart_ref" env-default:"kube-forge/certificate-generator"`
ChartVersion string `yaml:"chart_version" env-default:"0.1.0"`
} `yaml:"certificate_generator"`
} `yaml:"tls"`
Persistence struct {
StorageClass string `yaml:"storage_class" env-default:"local-path"`
RegistrySize string `yaml:"registry_size" env-default:"10Gi"`
JobserviceSize string `yaml:"jobservice_size" env-default:"1Gi"`
DatabaseSize string `yaml:"database_size" env-default:"2Gi"`
RedisSize string `yaml:"redis_size" env-default:"1Gi"`
TrivySize string `yaml:"trivy_size" env-default:"5Gi"`
} `yaml:"persistence"`
EnabledScanner bool `yaml:"enabled_scanner"`
Portal struct {
Image string `yaml:"image" env-default:"harbor.kvazaric.ru/kube-forge/goharbor/harbor-portal"`
Tag string `yaml:"tag" env-default:"v2.10.1"`
} `yaml:"portal"`
Core struct {
Image string `yaml:"image" env-default:"harbor.kvazaric.ru/kube-forge/goharbor/harbor-core"`
Tag string `yaml:"tag" env-default:"v2.10.1"`
} `yaml:"core"`
Jobservice struct {
Image string `yaml:"image" env-default:"harbor.kvazaric.ru/kube-forge/goharbor/harbor-jobservice"`
Tag string `yaml:"tag" env-default:"v2.10.1"`
} `yaml:"jobservice"`
Registry struct {
Registry struct {
Image string `yaml:"image" env-default:"harbor.kvazaric.ru/kube-forge/goharbor/registry-photon"`
Tag string `yaml:"tag" env-default:"v2.10.1"`
} `yaml:"registry"`
Controller struct {
Image string `yaml:"image" env-default:"harbor.kvazaric.ru/kube-forge/goharbor/harbor-registryctl"`
Tag string `yaml:"tag" env-default:"v2.10.1"`
} `yaml:"controller"`
} `yaml:"registry"`
Trivy struct {
Image string `yaml:"image" env-default:"harbor.kvazaric.ru/kube-forge/goharbor/trivy-adapter-photon"`
Tag string `yaml:"tag" env-default:"v2.10.1"`
} `yaml:"trivy"`
Database struct {
Image string `yaml:"image" env-default:"harbor.kvazaric.ru/kube-forge/goharbor/harbor-db"`
Tag string `yaml:"tag" env-default:"v2.10.1"`
} `yaml:"database"`
Redis struct {
Image string `yaml:"image" env-default:"harbor.kvazaric.ru/kube-forge/goharbor/redis-photon"`
Tag string `yaml:"tag" env-default:"v2.10.1"`
} `yaml:"redis"`
}

View File

@@ -1,48 +0,0 @@
package config
type SecretsStorage struct {
ChartRef string `yaml:"chart_ref" env-default:"kube-forge/vault"`
ChartVersion string `yaml:"chart_version" env-default:"0.1.0"`
Namespace string `yaml:"namespace" env-default:"secrets-storage"`
Enabled bool `yaml:"enabled"`
KeyShares int `yaml:"key_shares" env-default:"5"`
KeyThreshold int `yaml:"key_threshold" env-default:"3"`
UnsealKeys []string `yaml:"unseal_keys" env-default:"[]"`
AuthToken string `yaml:"auth_token" env-default:""`
Expose struct {
Type string `yaml:"type"`
Domain string `yaml:"domain"`
Path string `yaml:"path" env-default:"/"`
NodePort int `yaml:"node_port"`
Tls struct {
Enabled bool `yaml:"enabled"`
} `yaml:"tls"`
} `yaml:"expose"`
CsiIntegration struct {
Enabled bool `yaml:"enabled"`
Image string `yaml:"image" env-default:"harbor.kvazaric.ru/kube-forge/hashicorp/vault-csi-provider"`
Tag string `yaml:"tag" env-default:"1.4.1"`
} `yaml:"csi_integration"`
Injector struct {
Image string `yaml:"image" env-default:"harbor.kvazaric.ru/kube-forge/hashicorp/vault-k8s"`
Tag string `yaml:"tag" env-default:"1.3.1"`
} `yaml:"injector"`
Server struct {
Image string `yaml:"image" env-default:"harbor.kvazaric.ru/kube-forge/hashicorp/vault"`
Tag string `yaml:"tag" env-default:"1.16.0"`
Persistence struct {
DataStorage struct {
StorageClass string `yaml:"storage_class" env-default:"local-path"`
Size string `yaml:"size" env-default:"10Gi"`
} `yaml:"data_storage"`
AuditStorage struct {
StorageClass string `yaml:"storage_class" env-default:"local-path"`
Size string `yaml:"size" env-default:"10Gi"`
} `yaml:"audit_storage"`
} `yaml:"persistence"`
} `yaml:"server"`
Agent struct {
Image string `yaml:"image" env-default:"harbor.kvazaric.ru/kube-forge/hashicorp/vault"`
Tag string `yaml:"tag" env-default:"1.16.0"`
} `yaml:"agent"`
}

View File

@@ -12,16 +12,19 @@ type RegistryMirror struct {
type Orchestrator struct {
Version string `yaml:"version" env-default:"v1.29.0"`
ClusterName string `yaml:"cluster_name" env-default:"k8s-cluster.local"`
ClusterName string `yaml:"cluster_name" env-default:"cluster.local"`
BinDir string `yaml:"bin_dir" env-default:"/usr/local/bin"`
SysctlFilePath string `yaml:"sysctl_file_path" env-default:"/etc/sysctl.d/99-sysctl.conf"`
LoadbalancerApiserverPort int `yaml:"loadbalancer_apiserver_port" env-default:"6443"`
Dns Dns `yaml:"dns"`
CloudProvider string `yaml:"cloud_provider"`
ExgernalCloudProvider string `yaml:"external_cloud_provider"`
KubeletDir string `yaml:"kubelet_dir" env-default:"/var/lib/kubelet"`
ContainerEngine struct {
Type string `yaml:"type" env-default:"containerd"`
Install bool `yaml:"install"`
Type string `yaml:"type" env-default:"containerd"`
Install bool `yaml:"install"`
DataDir string `yaml:"data_dir" env-default:"/var/lib/containerd"`
StateDir string `yaml:"state_dir" env-default:"/run/containerd"`
} `yaml:"container_engine"`
PingAccessIp bool `yaml:"ping_access_ip"`
AutoRenewCertificates bool `yaml:"auto_renew_certificates"`

View File

@@ -11,8 +11,3 @@ func getBcryptHash(input string) string {
}
return string(hashedPassword)
}
func generateCreds(config *Config) {
config.Modules.Cicd.ArgoCd.AdminPassword = getBcryptHash(config.Modules.AdminPassword)
config.Modules.Registry.AdminPassword = config.Modules.AdminPassword
}