Path: blob/main/install/installer/pkg/components/image-builder-mk3/configmap.go
2501 views
// Copyright (c) 2021 Gitpod GmbH. All rights reserved.1// Licensed under the GNU Affero General Public License (AGPL).2// See License.AGPL.txt in the project root for license information.34package image_builder_mk356import (7"fmt"8"strings"9"time"1011"github.com/gitpod-io/gitpod/common-go/baseserver"1213"github.com/gitpod-io/gitpod/common-go/util"14"github.com/gitpod-io/gitpod/image-builder/api/config"15"github.com/gitpod-io/gitpod/installer/pkg/common"16dockerregistry "github.com/gitpod-io/gitpod/installer/pkg/components/docker-registry"17"github.com/gitpod-io/gitpod/installer/pkg/components/workspace"18wsmanagermk2 "github.com/gitpod-io/gitpod/installer/pkg/components/ws-manager-mk2"19configv1 "github.com/gitpod-io/gitpod/installer/pkg/config/v1"20"github.com/gitpod-io/gitpod/installer/pkg/config/v1/experimental"2122corev1 "k8s.io/api/core/v1"23metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"24"k8s.io/apimachinery/pkg/runtime"25"k8s.io/utils/pointer"26)2728func configmap(ctx *common.RenderContext) ([]runtime.Object, error) {29var registryName string30if pointer.BoolDeref(ctx.Config.ContainerRegistry.InCluster, false) {31registryName = fmt.Sprintf("%s.%s", dockerregistry.RegistryName, ctx.Config.Domain)32} else if ctx.Config.ContainerRegistry.External != nil {33registryName = strings.TrimSuffix(ctx.Config.ContainerRegistry.External.URL, "/")34} else {35return nil, fmt.Errorf("%s: invalid container registry config", Component)36}3738secretName, err := pullSecretName(ctx)39if err != nil {40return nil, err41}4243baseImageRepoName := "base-images"44workspaceImageRepoName := "workspace-images"4546_ = ctx.WithExperimental(func(cfg *experimental.Config) error {47if cfg.Workspace != nil {48if cfg.Workspace.ImageBuilderMk3.BaseImageRepositoryName != "" {49baseImageRepoName = cfg.Workspace.ImageBuilderMk3.BaseImageRepositoryName50}51if cfg.Workspace.ImageBuilderMk3.WorkspaceImageRepositoryName != "" {52workspaceImageRepoName = cfg.Workspace.ImageBuilderMk3.WorkspaceImageRepositoryName53}54}55return nil56})5758workspaceManagerAddress := fmt.Sprintf("%s:%d", common.WSManagerMk2Component, wsmanagermk2.RPCPort)59orchestrator := config.Configuration{60WorkspaceManager: config.WorkspaceManagerConfig{61Address: workspaceManagerAddress,62TLS: config.TLS{63Authority: "/wsman-certs/ca.crt",64Certificate: "/wsman-certs/tls.crt",65PrivateKey: "/wsman-certs/tls.key",66},67},68PullSecret: secretName,69PullSecretFile: "/config/pull-secret/pull-secret.json",70BaseImageRepository: fmt.Sprintf("%s/%s", registryName, baseImageRepoName),71WorkspaceImageRepository: fmt.Sprintf("%s/%s", registryName, workspaceImageRepoName),72BuilderImage: ctx.ImageName(ctx.Config.Repository, BuilderImage, ctx.VersionManifest.Components.ImageBuilderMk3.BuilderImage.Version),73EnableAdditionalECRAuth: ctx.Config.ContainerRegistry.EnableAdditionalECRAuth,74}7576workspaceImage := ctx.Config.Workspace.WorkspaceImage77if workspaceImage == "" {78workspaceImage = ctx.ImageName(common.ThirdPartyContainerRepo(ctx.Config.Repository, ""), workspace.DefaultWorkspaceImage, workspace.DefaultWorkspaceImageVersion)79}8081var tls *baseserver.TLSConfiguration82if ctx.Config.Kind == configv1.InstallationWorkspace {83// Only enable TLS in workspace clusters. This check can be removed84// once image-builder-mk3 has been removed from application clusters85// (https://github.com/gitpod-io/gitpod/issues/7845).86tls = &baseserver.TLSConfiguration{87CAPath: "/certs/ca.crt",88CertPath: "/certs/tls.crt",89KeyPath: "/certs/tls.key",90}91}9293imgcfg := config.ServiceConfig{94Orchestrator: orchestrator,95RefCache: config.RefCacheConfig{96Interval: util.Duration(time.Hour * 6).String(),97Refs: []string{98workspaceImage,99},100},101Server: &baseserver.Configuration{102Services: baseserver.ServicesConfiguration{103GRPC: &baseserver.ServerConfiguration{104Address: fmt.Sprintf("0.0.0.0:%d", RPCPort),105TLS: tls,106},107},108},109}110111fc, err := common.ToJSONString(imgcfg)112if err != nil {113return nil, fmt.Errorf("failed to marshal image-builder-mk3 config: %w", err)114}115116return []runtime.Object{117&corev1.ConfigMap{118TypeMeta: common.TypeMetaConfigmap,119ObjectMeta: metav1.ObjectMeta{120Name: fmt.Sprintf("%s-config", Component),121Namespace: ctx.Namespace,122Labels: common.CustomizeLabel(ctx, Component, common.TypeMetaConfigmap),123Annotations: common.CustomizeAnnotation(ctx, Component, common.TypeMetaConfigmap),124},125Data: map[string]string{126"image-builder.json": string(fc),127},128},129}, nil130}131132133