Path: blob/main/install/installer/pkg/components/openvsx-proxy/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 openvsx_proxy56import (7"fmt"8"net/url"9"time"1011"github.com/gitpod-io/gitpod/common-go/util"12"github.com/gitpod-io/gitpod/installer/pkg/common"13openvsx "github.com/gitpod-io/gitpod/openvsx-proxy/pkg"14corev1 "k8s.io/api/core/v1"15metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"16"k8s.io/apimachinery/pkg/runtime"17)1819func configmap(ctx *common.RenderContext) ([]runtime.Object, error) {20domain, err := url.Parse(ctx.Config.OpenVSX.URL)21if err != nil {22return nil, fmt.Errorf("cannot parse openvsx url: %w", err)23}24imgcfg := openvsx.Config{25LogDebug: false,26CacheDurationRegular: util.Duration(time.Minute * 5),27CacheDurationBackup: util.Duration(time.Hour * 72),28URLUpstream: ctx.Config.OpenVSX.URL,29MaxIdleConns: 1000,30MaxIdleConnsPerHost: 1000,31PrometheusAddr: common.LocalhostPrometheusAddr(),32RedisAddr: "localhost:6379",33AllowCacheDomain: []string{domain.Host},34}3536redisCfg := `37maxmemory 100mb38maxmemory-policy allkeys-lfu39`4041fc, err := common.ToJSONString(imgcfg)42if err != nil {43return nil, fmt.Errorf("failed to marshal openvsx config: %w", err)44}4546data := map[string]string{47"config.json": string(fc),48"redis.conf": redisCfg,49}5051return []runtime.Object{52&corev1.ConfigMap{53TypeMeta: common.TypeMetaConfigmap,54ObjectMeta: metav1.ObjectMeta{55Name: fmt.Sprintf("%s-config", Component),56Namespace: ctx.Namespace,57Labels: common.CustomizeLabel(ctx, Component, common.TypeMetaConfigmap),58Annotations: common.CustomizeAnnotation(ctx, Component, common.TypeMetaConfigmap),59},60Data: data,61},62}, nil63}646566