diff --git a/pkg/deploy/defaults.go b/pkg/deploy/defaults.go index f9df74925..7e390beb7 100644 --- a/pkg/deploy/defaults.go +++ b/pkg/deploy/defaults.go @@ -98,23 +98,23 @@ func InitDefaults(defaultsPath string) { func InitDefaultsFromEnv() { defaultCheVersion = getDefaultFromEnv("CHE_VERSION") - defaultCheServerImage = getDefaultFromEnv("RELATED_IMAGE_che_server") - defaultPluginRegistryImage = getDefaultFromEnv("RELATED_IMAGE_plugin_registry") - defaultDevfileRegistryImage = getDefaultFromEnv("RELATED_IMAGE_devfile_registry") - defaultPvcJobsImage = getDefaultFromEnv("RELATED_IMAGE_pvc_jobs") - defaultPostgresImage = getDefaultFromEnv("RELATED_IMAGE_postgres") - defaultKeycloakImage = getDefaultFromEnv("RELATED_IMAGE_keycloak") + defaultCheServerImage = getDefaultFromEnv(util.GetArchitectureDependentEnv("RELATED_IMAGE_che_server")) + defaultPluginRegistryImage = getDefaultFromEnv(util.GetArchitectureDependentEnv("RELATED_IMAGE_plugin_registry")) + defaultDevfileRegistryImage = getDefaultFromEnv(util.GetArchitectureDependentEnv("RELATED_IMAGE_devfile_registry")) + defaultPvcJobsImage = getDefaultFromEnv(util.GetArchitectureDependentEnv("RELATED_IMAGE_pvc_jobs")) + defaultPostgresImage = getDefaultFromEnv(util.GetArchitectureDependentEnv("RELATED_IMAGE_postgres")) + defaultKeycloakImage = getDefaultFromEnv(util.GetArchitectureDependentEnv("RELATED_IMAGE_keycloak")) // CRW images for that are mentioned in the Che server che.properties // For CRW these should be synced by hand with images stored in RH registries // instead of being synced by script with the content of the upstream `che.properties` file - defaultCheWorkspacePluginBrokerMetadataImage = getDefaultFromEnv("RELATED_IMAGE_che_workspace_plugin_broker_metadata") - defaultCheWorkspacePluginBrokerArtifactsImage = getDefaultFromEnv("RELATED_IMAGE_che_workspace_plugin_broker_artifacts") - defaultCheServerSecureExposerJwtProxyImage = getDefaultFromEnv("RELATED_IMAGE_che_server_secure_exposer_jwt_proxy_image") + defaultCheWorkspacePluginBrokerMetadataImage = getDefaultFromEnv(util.GetArchitectureDependentEnv("RELATED_IMAGE_che_workspace_plugin_broker_metadata")) + defaultCheWorkspacePluginBrokerArtifactsImage = getDefaultFromEnv(util.GetArchitectureDependentEnv("RELATED_IMAGE_che_workspace_plugin_broker_artifacts")) + defaultCheServerSecureExposerJwtProxyImage = getDefaultFromEnv(util.GetArchitectureDependentEnv("RELATED_IMAGE_che_server_secure_exposer_jwt_proxy_image")) // Don't get some k8s specific env if !util.IsOpenShift { - defaultCheTLSSecretsCreationJobImage = getDefaultFromEnv("RELATED_IMAGE_che_tls_secrets_creation_job") + defaultCheTLSSecretsCreationJobImage = getDefaultFromEnv(util.GetArchitectureDependentEnv("RELATED_IMAGE_che_tls_secrets_creation_job")) } } @@ -122,19 +122,19 @@ func InitDefaultsFromFile(defaultsPath string) { operatorDeployment := getDefaultsFromFile(defaultsPath) defaultCheVersion = util.GetDeploymentEnv(operatorDeployment, "CHE_VERSION") - defaultCheServerImage = util.GetDeploymentEnv(operatorDeployment, "RELATED_IMAGE_che_server") - defaultPluginRegistryImage = util.GetDeploymentEnv(operatorDeployment, "RELATED_IMAGE_plugin_registry") - defaultDevfileRegistryImage = util.GetDeploymentEnv(operatorDeployment, "RELATED_IMAGE_devfile_registry") - defaultPvcJobsImage = util.GetDeploymentEnv(operatorDeployment, "RELATED_IMAGE_pvc_jobs") - defaultPostgresImage = util.GetDeploymentEnv(operatorDeployment, "RELATED_IMAGE_postgres") - defaultKeycloakImage = util.GetDeploymentEnv(operatorDeployment, "RELATED_IMAGE_keycloak") - defaultCheWorkspacePluginBrokerMetadataImage = util.GetDeploymentEnv(operatorDeployment, "RELATED_IMAGE_che_workspace_plugin_broker_metadata") - defaultCheWorkspacePluginBrokerArtifactsImage = util.GetDeploymentEnv(operatorDeployment, "RELATED_IMAGE_che_workspace_plugin_broker_artifacts") - defaultCheServerSecureExposerJwtProxyImage = util.GetDeploymentEnv(operatorDeployment, "RELATED_IMAGE_che_server_secure_exposer_jwt_proxy_image") + defaultCheServerImage = util.GetDeploymentEnv(operatorDeployment, util.GetArchitectureDependentEnv("RELATED_IMAGE_che_server")) + defaultPluginRegistryImage = util.GetDeploymentEnv(operatorDeployment, util.GetArchitectureDependentEnv("RELATED_IMAGE_plugin_registry")) + defaultDevfileRegistryImage = util.GetDeploymentEnv(operatorDeployment, util.GetArchitectureDependentEnv("RELATED_IMAGE_devfile_registry")) + defaultPvcJobsImage = util.GetDeploymentEnv(operatorDeployment, util.GetArchitectureDependentEnv("RELATED_IMAGE_pvc_jobs")) + defaultPostgresImage = util.GetDeploymentEnv(operatorDeployment, util.GetArchitectureDependentEnv("RELATED_IMAGE_postgres")) + defaultKeycloakImage = util.GetDeploymentEnv(operatorDeployment, util.GetArchitectureDependentEnv("RELATED_IMAGE_keycloak")) + defaultCheWorkspacePluginBrokerMetadataImage = util.GetDeploymentEnv(operatorDeployment, util.GetArchitectureDependentEnv("RELATED_IMAGE_che_workspace_plugin_broker_metadata")) + defaultCheWorkspacePluginBrokerArtifactsImage = util.GetDeploymentEnv(operatorDeployment, util.GetArchitectureDependentEnv("RELATED_IMAGE_che_workspace_plugin_broker_artifacts")) + defaultCheServerSecureExposerJwtProxyImage = util.GetDeploymentEnv(operatorDeployment, util.GetArchitectureDependentEnv("RELATED_IMAGE_che_server_secure_exposer_jwt_proxy_image")) // Don't get some k8s specific env if !util.IsOpenShift { - defaultCheTLSSecretsCreationJobImage = util.GetDeploymentEnv(operatorDeployment, "RELATED_IMAGE_che_tls_secrets_creation_job") + defaultCheTLSSecretsCreationJobImage = util.GetDeploymentEnv(operatorDeployment, util.GetArchitectureDependentEnv("RELATED_IMAGE_che_tls_secrets_creation_job")) } } diff --git a/pkg/util/util.go b/pkg/util/util.go index e8e00f51f..812cffccb 100644 --- a/pkg/util/util.go +++ b/pkg/util/util.go @@ -22,6 +22,7 @@ import ( "net/http" "os" "regexp" + "runtime" "sort" "strings" "time" @@ -274,8 +275,20 @@ func GetEnvByRegExp(regExp string) []corev1.EnvVar { envName := pair[0] rxp := regexp.MustCompile(regExp) if rxp.MatchString(envName) { + envName = GetArchitectureDependentEnv(envName) env = append(env, corev1.EnvVar{Name: envName, Value: pair[1]}) } } return env -} \ No newline at end of file +} + +// GetArchitectureDependentEnv returns environment variable dependending on architecture +// by adding "_" suffix. If variable is not set then the default will be return. +func GetArchitectureDependentEnv(env string) string { + archEnv := env + "_" + runtime.GOARCH + if _, ok := os.LookupEnv(archEnv); ok { + return archEnv + } + + return env +}