Skip to content

kubeshop/tracetest-cloud-charts

Repository files navigation

Tracetest On-Prem Helm Charts

This repository contains the Helm Charts for the Tracetest installation on-premises (i.e. in your infrastructure).

Usage

Helm must be installed to use the charts. Please refer to Helm's documentation to get started.

The main chart for this repository is called tracetest-onprem and contains all components necessary to run Tracetest on-premises on a cluster that fits the prerequisites.

You will need to have a license key to install Tracetest On-prem. If you don't have one, you can request a trial license key here.

After you have a cluster that fits the prerequisites, you can install Tracetest On-prem by running the following command:

helm repo add tracetestcloud https://kubeshop.github.io/tracetest-cloud-charts --force-update

helm install my-tracetest tracetestcloud/tracetest-onprem \
  --set global.licenseKey=YOUR-TRACETEST-LICENSE \
  --values values.yaml

Here are the detailed instructions to install Tracetest On-prem in your cluster:

Configuration (values file specification)

You can see the main configurable parameters of the Tracetest On-prem chart and their default values here: values.yaml.

Default values.yaml
global:
  # License Key provided by Tracetest team to run this instance. Default: `""`
  licenseKey: ""
  
  # This value defines if clients should expect a valid SSL certificate from the server. If you are using a self-signed certificate, you should set this to false. Default: `true`
  validCertificate: true
  
  # Pull secrets name used to fetch images from a private registry if needed. If set empty, this chart will use the public registry. For more details see: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/ Default: `""`
  imagePullSecret: ""
  # Registry name used to fetch images. If set empty, this chart will use the public registry. For more details see: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/ Default: `""`
  tracetestImageRegistry: ""

  sso:
    google:
      # Google OAuth2 client ID. You can get these from the Google Developer Console. Default: `""`
      clientID: "" 
      # Google OAuth2 secret. You can get these from the Google Developer Console. Default: `""`
      clientSecret: ""
    github:
      # Github OAuth2 client ID. You can get these from the Github Developer Console. Default: `"example client ID"`
      clientID: "Ov23li8WMwQlvjFNNiCy"
      # Github OAuth2 secret. You can get these from the Github Developer Console. Default: `"example client secret"`
      clientSecret: "e317c15e43909757d1e75e78373d130c374f6601"

  # If you don't want to use the default NATS server, you can specify your own NATS server here
  # natsEndpointOverride: "://nats:4222"

  postgresql:
    auth:
      # Postgres host address. Default: `""`
      host: ""
      # Postgres username that Tracetest APIs will use. Default: `""`
      username: ""
      # Postgres password that Tracetest APIs will use. Default: `""`
      password: ""
      # Postgres database name for Tracetest OnPrem. Default: `"tracetest"`
      database: "tracetest"
      # Postgres port. Default: `"5432"`
      port: "5432"
    
  mongodb:
    auth:
      # MongoDB connection protocol. Default: `"mongodb"`
      protocol: "mongodb"
      # MongoDB host address. Default: `""`
      host: ""
      # MongoDB username that Tracetest APIs will use. Default: `""`
      username: ""
      # MongoDB password that Tracetest APIs will use. Default: `""`
      password: ""
      # MongoDB database name for Tracetest OnPrem. Default: `"tracetest"`
      database: ""
      # MongoDB connection options as a key-value object. Default: `"{}"`
      options: {}

  
  # URLs section with addresses used by clients to connect to the Tracetest OnPrem instance
  urls:
    protocol: &protocol "https"
    port: &port "30000"
    rootDomain: &rootDomain "tracetest.localdev"
    cookieDomain: *rootDomain
    
    web:
      protocol: *protocol
      hostname: *rootDomain
      port: *port
      path: "/"
    
    api:
      protocol: *protocol
      hostname: *rootDomain
      port: *port
      path: "/api"

    auth:
      protocol: *protocol
      hostname: *rootDomain
      port: *port
      path: "/auth"
    
    agents:
      domain: *rootDomain
      port: *port
    
    controlPlane:
      protocol: *protocol
      hostname: *rootDomain
      port: *port
      path: "/"

nats:
  enabled: true
  
  config:
    jetstream:
      enabled: true
      fileStore:
        enabled: true
        dir: /data
        pvc:
          enabled: true
          size: 10Gi
      memoryStore:
          enabled: true
          maxSize: 1Gi

    natsBox:
      container:
        env:
          # different from k8s units, suffix must be B, KiB, MiB, GiB, or TiB
          # should be ~90% of memory limit
          GOMEMLIMIT: 900MiB
        merge:
          # recommended limit is at least 2 CPU cores and 8Gi Memory for production JetStream clusters
          resources:
            requests:
              cpu: 250m # one entire CPU
              memory: 1Gi
            limits:
              memory: 1Gi

Examples

Basic values.yaml with SSO and Database defined
global:
  validCertificate: false # defines if the certificate is generated by an external issuer of if the self-signed issuer is used

  urls:
    protocol: &protocol "https"
    port: &port "30000" 
    rootDomain: &rootDomain "tracetest.mydomain.com" # DNS that the users will use to access the Tracetest
    cookieDomain: *rootDomain
    
    web:
      protocol: *protocol
      hostname: *rootDomain
      port: *port
    
    api:
      protocol: *protocol
      hostname: *rootDomain
      port: *port

    auth:
      protocol: *protocol
      hostname: *rootDomain
      port: *port
    
    agents:
      domain: *rootDomain
      port: *port
    
    controlPlane:
      protocol: *protocol
      hostname: *rootDomain
      port: *port

  postgresql:
    auth:
      host: "path.to.my.postgres.instance"
      username: "some-pg-user"
      password: "some-pg-password"
      database: "tracetest"

  mongodb:
    auth:
      protocol: "mongodb"
      host: "path.to.my.mongodb.instance"
      username: "some-mongo-user"
      password: "some-mongo-password"
      database: "tracetest"
      options:
        retryWrites: "true"
        authSource: admin

Cluster Sizing

Depending on the size of your organization, your deployment might require different sizes. We provide a small and large deployment sizing examples. Use the following commands to select the size for your deployment:

# large cluster
helm install my-tracetest tracetestcloud/tracetest-onprem \
  --set global.licenseKey=YOUR-TRACETEST-LICENSE \
  --values <your-values.yaml> \
  --values https://raw.githubusercontent.com/kubeshop/tracetest-cloud-charts/main/values-cluster-large.yaml
# small cluster
helm install my-tracetest tracetestcloud/tracetest-onprem \
  --set global.licenseKey=YOUR-TRACETEST-LICENSE \
  --values <your-values.yaml> \
  --values https://raw.githubusercontent.com/kubeshop/tracetest-cloud-charts/main/values-cluster-small.yaml

Questions

Feel free to contact us at our Slack if you have any questions.

License

Tracetest Community License