diff --git a/components/ws-manager-mk2/controllers/create.go b/components/ws-manager-mk2/controllers/create.go index 9b2a80a339c0e5..57e8d059a06f3a 100644 --- a/components/ws-manager-mk2/controllers/create.go +++ b/components/ws-manager-mk2/controllers/create.go @@ -565,6 +565,14 @@ func createWorkspaceEnvironment(sctx *startWorkspaceContext) ([]corev1.EnvVar, e allRepoRoots[i] = getWorkspaceRelativePath(root) } + // Can't read the workspace URL from status yet, as the status likely hasn't + // been set by the controller yet at this point. Therefore, manually construct + // the URL to pass to the container env. + wsUrl, err := config.RenderWorkspaceURL(sctx.Config.WorkspaceURLTemplate, sctx.Workspace.Name, sctx.Workspace.Spec.Ownership.WorkspaceID, sctx.Config.GitpodHostURL) + if err != nil { + return nil, fmt.Errorf("cannot render workspace URL: %w", err) + } + // Envs that start with GITPOD_ are appended to the Terminal environments result := []corev1.EnvVar{} result = append(result, corev1.EnvVar{Name: "GITPOD_REPO_ROOT", Value: allRepoRoots[0]}) @@ -575,7 +583,7 @@ func createWorkspaceEnvironment(sctx *startWorkspaceContext) ([]corev1.EnvVar, e result = append(result, corev1.EnvVar{Name: "GITPOD_THEIA_PORT", Value: strconv.Itoa(int(sctx.IDEPort))}) result = append(result, corev1.EnvVar{Name: "THEIA_WORKSPACE_ROOT", Value: getWorkspaceRelativePath(sctx.Workspace.Spec.WorkspaceLocation)}) result = append(result, corev1.EnvVar{Name: "GITPOD_HOST", Value: sctx.Config.GitpodHostURL}) - result = append(result, corev1.EnvVar{Name: "GITPOD_WORKSPACE_URL", Value: sctx.Workspace.Status.URL}) + result = append(result, corev1.EnvVar{Name: "GITPOD_WORKSPACE_URL", Value: wsUrl}) result = append(result, corev1.EnvVar{Name: "GITPOD_WORKSPACE_CLUSTER_HOST", Value: sctx.Config.WorkspaceClusterHost}) result = append(result, corev1.EnvVar{Name: "THEIA_SUPERVISOR_ENDPOINT", Value: fmt.Sprintf(":%d", sctx.SupervisorPort)}) // TODO(ak) remove THEIA_WEBVIEW_EXTERNAL_ENDPOINT and THEIA_MINI_BROWSER_HOST_PATTERN when Theia is removed @@ -703,6 +711,9 @@ func newStartWorkspaceContext(ctx context.Context, cfg *config.Configuration, ws span, _ := tracing.FromContext(ctx, "newStartWorkspaceContext") defer tracing.FinishSpan(span, &err) + // Can't read ws.Status yet at this point (to e.g. get the headless status), + // as it very likely hasn't been set yet by the controller. + isHeadless := ws.Spec.Type != workspacev1.WorkspaceTypeRegular return &startWorkspaceContext{ Labels: map[string]string{ "app": "gitpod", @@ -711,13 +722,13 @@ func newStartWorkspaceContext(ctx context.Context, cfg *config.Configuration, ws wsk8s.OwnerLabel: ws.Spec.Ownership.Owner, wsk8s.TypeLabel: strings.ToLower(string(ws.Spec.Type)), instanceIDLabel: ws.Name, - headlessLabel: strconv.FormatBool(ws.Status.Headless), + headlessLabel: strconv.FormatBool(isHeadless), }, Config: cfg, Workspace: ws, IDEPort: 23000, SupervisorPort: 22999, - Headless: ws.Status.Headless, + Headless: isHeadless, }, nil } diff --git a/components/ws-manager-mk2/main.go b/components/ws-manager-mk2/main.go index 024851dd8bcc00..f1a518ccdc12e9 100644 --- a/components/ws-manager-mk2/main.go +++ b/components/ws-manager-mk2/main.go @@ -87,7 +87,7 @@ func main() { Port: 9443, HealthProbeBindAddress: cfg.Health.Addr, LeaderElection: enableLeaderElection, - LeaderElectionID: "ws-manager-mk2.gitpod.io", + LeaderElectionID: "ws-manager-mk2-leader.gitpod.io", Namespace: cfg.Manager.Namespace, }) if err != nil {