github.com/kubeshop/testkube@v1.17.23/internal/config/config.go (about) 1 package config 2 3 import ( 4 "time" 5 6 "github.com/kelseyhightower/envconfig" 7 ) 8 9 type Config struct { 10 APIServerPort string `envconfig:"APISERVER_PORT" default:"8088"` 11 APIServerConfig string `envconfig:"APISERVER_CONFIG" default:""` 12 APIServerFullname string `envconfig:"APISERVER_FULLNAME" default:"testkube-api-server"` 13 APIMongoDSN string `envconfig:"API_MONGO_DSN" default:"mongodb://localhost:27017"` 14 APIMongoAllowTLS bool `envconfig:"API_MONGO_ALLOW_TLS" default:"false"` 15 APIMongoSSLCert string `envconfig:"API_MONGO_SSL_CERT" default:""` 16 APIMongoSSLCAFileKey string `envconfig:"API_MONGO_SSL_CA_FILE_KEY" default:"sslCertificateAuthorityFile"` 17 APIMongoSSLClientFileKey string `envconfig:"API_MONGO_SSL_CLIENT_FILE_KEY" default:"sslClientCertificateKeyFile"` 18 APIMongoSSLClientFilePass string `envconfig:"API_MONGO_SSL_CLIENT_FILE_PASS_KEY" default:"sslClientCertificateKeyFilePassword"` 19 APIMongoAllowDiskUse bool `envconfig:"API_MONGO_ALLOW_DISK_USE" default:"false"` 20 APIMongoDB string `envconfig:"API_MONGO_DB" default:"testkube"` 21 APIMongoDBType string `envconfig:"API_MONGO_DB_TYPE" default:"mongo"` 22 SlackToken string `envconfig:"SLACK_TOKEN" default:""` 23 SlackConfig string `envconfig:"SLACK_CONFIG" default:""` 24 SlackTemplate string `envconfig:"SLACK_TEMPLATE" default:""` 25 StorageEndpoint string `envconfig:"STORAGE_ENDPOINT" default:"localhost:9000"` 26 StorageBucket string `envconfig:"STORAGE_BUCKET" default:"testkube-logs"` 27 StorageExpiration int `envconfig:"STORAGE_EXPIRATION"` 28 StorageAccessKeyID string `envconfig:"STORAGE_ACCESSKEYID" default:""` 29 StorageSecretAccessKey string `envconfig:"STORAGE_SECRETACCESSKEY" default:""` 30 StorageRegion string `envconfig:"STORAGE_REGION" default:""` 31 StorageToken string `envconfig:"STORAGE_TOKEN" default:""` 32 StorageSSL bool `envconfig:"STORAGE_SSL" default:"false"` 33 StorageSkipVerify bool `envconfig:"STORAGE_SKIP_VERIFY" default:"false"` 34 StorageCertFile string `envconfig:"STORAGE_CERT_FILE" default:""` 35 StorageKeyFile string `envconfig:"STORAGE_KEY_FILE" default:""` 36 StorageCAFile string `envconfig:"STORAGE_CA_FILE" default:""` 37 ScrapperEnabled bool `envconfig:"SCRAPPERENABLED" default:"false"` 38 LogsBucket string `envconfig:"LOGS_BUCKET" default:""` 39 LogsStorage string `envconfig:"LOGS_STORAGE" default:""` 40 NatsURI string `envconfig:"NATS_URI" default:"nats://localhost:4222"` 41 NatsSecure bool `envconfig:"NATS_SECURE" default:"false"` 42 NatsSkipVerify bool `envconfig:"NATS_SKIP_VERIFY" default:"false"` 43 NatsCertFile string `envconfig:"NATS_CERT_FILE" default:""` 44 NatsKeyFile string `envconfig:"NATS_KEY_FILE" default:""` 45 NatsCAFile string `envconfig:"NATS_CA_FILE" default:""` 46 NatsConnectTimeout time.Duration `envconfig:"NATS_CONNECT_TIMEOUT" default:"5s"` 47 JobServiceAccountName string `envconfig:"JOB_SERVICE_ACCOUNT_NAME" default:""` 48 JobTemplateFile string `envconfig:"JOB_TEMPLATE_FILE" default:""` 49 DisableTestTriggers bool `envconfig:"DISABLE_TEST_TRIGGERS" default:"false"` 50 TestkubeDefaultExecutors string `envconfig:"TESTKUBE_DEFAULT_EXECUTORS" default:""` 51 TestkubeEnabledExecutors string `envconfig:"TESTKUBE_ENABLED_EXECUTORS" default:""` 52 TestkubeTemplateJob string `envconfig:"TESTKUBE_TEMPLATE_JOB" default:""` 53 TestkubeContainerTemplateJob string `envconfig:"TESTKUBE_CONTAINER_TEMPLATE_JOB" default:""` 54 TestkubeContainerTemplateScraper string `envconfig:"TESTKUBE_CONTAINER_TEMPLATE_SCRAPER" default:""` 55 TestkubeContainerTemplatePVC string `envconfig:"TESTKUBE_CONTAINER_TEMPLATE_PVC" default:""` 56 TestkubeTemplateSlavePod string `envconfig:"TESTKUBE_TEMPLATE_SLAVE_POD" default:""` 57 TestkubeConfigDir string `envconfig:"TESTKUBE_CONFIG_DIR" default:"config"` 58 TestkubeAnalyticsEnabled bool `envconfig:"TESTKUBE_ANALYTICS_ENABLED" default:"false"` 59 TestkubeReadonlyExecutors bool `envconfig:"TESTKUBE_READONLY_EXECUTORS" default:"false"` 60 TestkubeNamespace string `envconfig:"TESTKUBE_NAMESPACE" default:"testkube"` 61 TestkubeOAuthClientID string `envconfig:"TESTKUBE_OAUTH_CLIENTID" default:""` 62 TestkubeOAuthClientSecret string `envconfig:"TESTKUBE_OAUTH_CLIENTSECRET" default:""` 63 TestkubeOAuthProvider string `envconfig:"TESTKUBE_OAUTH_PROVIDER" default:""` 64 TestkubeOAuthScopes string `envconfig:"TESTKUBE_OAUTH_SCOPES" default:""` 65 TestkubeProAPIKey string `envconfig:"TESTKUBE_PRO_API_KEY" default:""` 66 TestkubeProURL string `envconfig:"TESTKUBE_PRO_URL" default:""` 67 TestkubeProTLSInsecure bool `envconfig:"TESTKUBE_PRO_TLS_INSECURE" default:"false"` 68 TestkubeProWorkerCount int `envconfig:"TESTKUBE_PRO_WORKER_COUNT" default:"50"` 69 TestkubeProLogStreamWorkerCount int `envconfig:"TESTKUBE_PRO_LOG_STREAM_WORKER_COUNT" default:"25"` 70 TestkubeProWorkflowNotificationsWorkerCount int `envconfig:"TESTKUBE_PRO_WORKFLOW_NOTIFICATIONS_STREAM_WORKER_COUNT" default:"25"` 71 TestkubeProSkipVerify bool `envconfig:"TESTKUBE_PRO_SKIP_VERIFY" default:"false"` 72 TestkubeProEnvID string `envconfig:"TESTKUBE_PRO_ENV_ID" default:""` 73 TestkubeProOrgID string `envconfig:"TESTKUBE_PRO_ORG_ID" default:""` 74 TestkubeProMigrate string `envconfig:"TESTKUBE_PRO_MIGRATE" default:"false"` 75 TestkubeProConnectionTimeout int `envconfig:"TESTKUBE_PRO_CONNECTION_TIMEOUT" default:"10"` 76 TestkubeProCertFile string `envconfig:"TESTKUBE_PRO_CERT_FILE" default:""` 77 TestkubeProKeyFile string `envconfig:"TESTKUBE_PRO_KEY_FILE" default:""` 78 TestkubeProTLSSecret string `envconfig:"TESTKUBE_PRO_TLS_SECRET" default:""` 79 TestkubeProRunnerCustomCASecret string `envconfig:"TESTKUBE_PRO_RUNNER_CUSTOM_CA_SECRET" default:""` 80 TestkubeWatcherNamespaces string `envconfig:"TESTKUBE_WATCHER_NAMESPACES" default:""` 81 GraphqlPort string `envconfig:"TESTKUBE_GRAPHQL_PORT" default:"8070"` 82 TestkubeRegistry string `envconfig:"TESTKUBE_REGISTRY" default:""` 83 TestkubePodStartTimeout time.Duration `envconfig:"TESTKUBE_POD_START_TIMEOUT" default:"30m"` 84 CDEventsTarget string `envconfig:"CDEVENTS_TARGET" default:""` 85 TestkubeDashboardURI string `envconfig:"TESTKUBE_DASHBOARD_URI" default:""` 86 DisableReconciler bool `envconfig:"DISABLE_RECONCILER" default:"false"` 87 TestkubeClusterName string `envconfig:"TESTKUBE_CLUSTER_NAME" default:""` 88 CompressArtifacts bool `envconfig:"COMPRESSARTIFACTS" default:"false"` 89 TestkubeHelmchartVersion string `envconfig:"TESTKUBE_HELMCHART_VERSION" default:""` 90 DebugListenAddr string `envconfig:"DEBUG_LISTEN_ADDR" default:"0.0.0.0:1337"` 91 EnableDebugServer bool `envconfig:"ENABLE_DEBUG_SERVER" default:"false"` 92 EnableSecretsEndpoint bool `envconfig:"ENABLE_SECRETS_ENDPOINT" default:"false"` 93 DisableMongoMigrations bool `envconfig:"DISABLE_MONGO_MIGRATIONS" default:"false"` 94 Debug bool `envconfig:"DEBUG" default:"false"` 95 EnableImageDataPersistentCache bool `envconfig:"TESTKUBE_ENABLE_IMAGE_DATA_PERSISTENT_CACHE" default:"false"` 96 ImageDataPersistentCacheKey string `envconfig:"TESTKUBE_IMAGE_DATA_PERSISTENT_CACHE_KEY" default:"testkube-image-cache"` 97 LogServerGrpcAddress string `envconfig:"LOG_SERVER_GRPC_ADDRESS" default:":9090"` 98 LogServerSecure bool `envconfig:"LOG_SERVER_SECURE" default:"false"` 99 LogServerSkipVerify bool `envconfig:"LOG_SERVER_SKIP_VERIFY" default:"false"` 100 LogServerCertFile string `envconfig:"LOG_SERVER_CERT_FILE" default:""` 101 LogServerKeyFile string `envconfig:"LOG_SERVER_KEY_FILE" default:""` 102 LogServerCAFile string `envconfig:"LOG_SERVER_CA_FILE" default:""` 103 DisableSecretCreation bool `envconfig:"DISABLE_SECRET_CREATION" default:"false"` 104 TestkubeExecutionNamespaces string `envconfig:"TESTKUBE_EXECUTION_NAMESPACES" default:""` 105 TestkubeDefaultStorageClassName string `envconfig:"TESTKUBE_DEFAULT_STORAGE_CLASS_NAME" default:""` 106 GlobalWorkflowTemplateName string `envconfig:"TESTKUBE_GLOBAL_WORKFLOW_TEMPLATE_NAME" default:""` 107 108 // DEPRECATED: Use TestkubeProAPIKey instead 109 TestkubeCloudAPIKey string `envconfig:"TESTKUBE_CLOUD_API_KEY" default:""` 110 // DEPRECATED: Use TestkubeProURL instead 111 TestkubeCloudURL string `envconfig:"TESTKUBE_CLOUD_URL" default:""` 112 // DEPRECATED: Use TestkubeProTLSInsecure instead 113 TestkubeCloudTLSInsecure bool `envconfig:"TESTKUBE_CLOUD_TLS_INSECURE" default:"false"` 114 // DEPRECATED: Use TestkubeProWorkerCount instead 115 TestkubeCloudWorkerCount int `envconfig:"TESTKUBE_CLOUD_WORKER_COUNT" default:"50"` 116 // DEPRECATED: Use TestkubeProLogStreamWorkerCount instead 117 TestkubeCloudLogStreamWorkerCount int `envconfig:"TESTKUBE_CLOUD_LOG_STREAM_WORKER_COUNT" default:"25"` 118 // DEPRECATED: Use TestkubeProEnvID instead 119 TestkubeCloudEnvID string `envconfig:"TESTKUBE_CLOUD_ENV_ID" default:""` 120 // DEPRECATED: Use TestkubeProOrgID instead 121 TestkubeCloudOrgID string `envconfig:"TESTKUBE_CLOUD_ORG_ID" default:""` 122 // DEPRECATED: Use TestkubeProMigrate instead 123 TestkubeCloudMigrate string `envconfig:"TESTKUBE_CLOUD_MIGRATE" default:"false"` 124 125 // TestkubeProCAFile is meant to provide a custom CA when making a TLS connection to 126 // the agent API. 127 // 128 // Deprecated: Instead mount a CA file into a directory and specify the diretory 129 // path with the SSL_CERT_DIR environment variable. 130 TestkubeProCAFile string `envconfig:"TESTKUBE_PRO_CA_FILE" default:""` 131 } 132 133 func Get() (*Config, error) { 134 config := Config{} 135 if err := envconfig.Process("config", &config); err != nil { 136 return nil, err 137 } 138 return &config, nil 139 } 140 141 // CleanLegacyVars configures new environment variables from the deprecated ones 142 func (c *Config) CleanLegacyVars() { 143 if c.TestkubeProAPIKey == "" && c.TestkubeCloudAPIKey != "" { 144 c.TestkubeProAPIKey = c.TestkubeCloudAPIKey 145 } 146 147 if c.TestkubeProURL == "" && c.TestkubeCloudURL != "" { 148 c.TestkubeProURL = c.TestkubeCloudURL 149 } 150 151 if !c.TestkubeProTLSInsecure && c.TestkubeCloudTLSInsecure { 152 c.TestkubeProTLSInsecure = c.TestkubeCloudTLSInsecure 153 } 154 155 if c.TestkubeProWorkerCount == 0 && c.TestkubeCloudWorkerCount != 0 { 156 c.TestkubeProWorkerCount = c.TestkubeCloudWorkerCount 157 } 158 159 if c.TestkubeProLogStreamWorkerCount == 0 && c.TestkubeCloudLogStreamWorkerCount != 0 { 160 c.TestkubeProLogStreamWorkerCount = c.TestkubeCloudLogStreamWorkerCount 161 } 162 163 if c.TestkubeProEnvID == "" && c.TestkubeCloudEnvID != "" { 164 c.TestkubeProEnvID = c.TestkubeCloudEnvID 165 } 166 167 if c.TestkubeProOrgID == "" && c.TestkubeCloudOrgID != "" { 168 c.TestkubeProOrgID = c.TestkubeCloudOrgID 169 } 170 171 if c.TestkubeProMigrate == "" && c.TestkubeCloudMigrate != "" { 172 c.TestkubeProMigrate = c.TestkubeCloudMigrate 173 } 174 }