Creating a New Blueprint From a Helm Chart

  • 16 February 2022
  • 0 replies
  • 161 views

In this article, we will learn how to create a blueprint from a Helm chart. You can create multiple blueprints out of the same Helm chart, each with its own configurations (compute service, inputs, etc.).

Prerequisites:

  • Helm charts associated to the space, as explained in Setting Up a Repository
  • Torque compute service (EKS / AKS) in the space
  • Service account that has enough permissions to run the chart in the cluster. Service account must be in the namespace of the agent.

To create a new Helm blueprint:

  1. Open the Blueprints page and click + Add New > Helm blueprint.

    The Create Helm Blueprint form is displayed.
  2. Fill in the Helm chart’s details for this blueprint (Mandatory parameters are indicated with *):
    • General:
      • Name: Provide a display name for the blueprint
      • Description: Provide an informative description for the blueprint.
      • Chart Root Path: Specify the path to the folder where the main chart’s YAML file is located. Leave this empty if the chart is located directly in the root of the repository.
      • Enable logs: Select Yes to enable logging the Helm chart’s deployment.
    • Inputs:
      • Input type: Select how to represent the inputs. Options are:
        • Distinct Inputs allows you to specify the inputs to pass. Click Add New to define the input. Click the Trash button ( ) to the right to start over new.
          • Name: Specify the input’s name (case-insensitive). This name is displayed as the input name when launching sandboxes from this blueprint.
          • Path: Path to this value in the values.yaml file.  Use periods (.) to represent nesting (e.g. referenceApplication.serviceName). Note that periods (.) are not supported in the middle of an object name.
          • Value: Value for this path in the YAML (e.g. MyServiceName). Value can be of type string, numeric, or boolean.
            You can also include Liquid patterns in the input value. For example: {{myValue}}.
          • Description: Provide an informative description for the input.
          • Display Style: Select the input value’s display style:
            • Normal: Displayed in plain text
            • Masked: Displayed as bullets
          • Optional: Select the checkbox to indicate that the input is optional.
          • Overridable: Select the checkbox to allow the input value to be overridden in the space level or by the end-user when launching the sandbox.
          • Possible Values: Define here the possible values for this input. For overridable inputs, only entries in this list will be allowed when launching a sandbox.
        • Yaml File displays the inputs as text in the UI/String in the API.
          • Overridable: Allows overriding the values.yaml file (provided here) when launching sandboxes from this blueprint.
          • text box: Provide the inputs as a complete values.yaml file. Wrap string values in double quotes - "my string value". You can also include Liquid patterns in the input value - e.g. “{{myValue}}”, where the value is wrapped in double quotes and double curly brackets - “{{SandboxId}}”. Use periods (.) to represent nesting (e.g. referenceApplication.serviceName). Note that periods (.) are not supported in the middle of an object name.
            For example:
    • Quicklinks: Click Add New to define the URLs to the sandbox’s application(s). Click the Trash button ( ) to the right to start over new. The URLs are displayed once the sandbox is launched.
      • Name: Specify a name for the application.
      • Value: URL of the application

        You can also design quick links that dynamically pull the sandbox ID and/or values from the Helm chart’s inputs and outputs. You can use fixed input values or use variables that are dynamically calculated during the sandbox deployment. For dynamic values, use Liquid Templating Language format.

        The following variables are provided out of the box: {{sandboxId}}, {{accountId}},{{spaceId}}, and {{ownerId}}. For example, you could specify an input for the sandbox ID with name “input1” and value “{{sandboxId}}” and feed it to the quick link URL as follows: “https://{{input1}}.myapp.com”.

        Tip: Depending on your chart, you may need to use Liquid filters. For example, capital letters are not allowed in the hostname of the Bitnami Ngnix's chart, so to use 'sandobxId' as part of the value, you must write it in lowercase as follows: “{{sandboxId|downcase}}.myapp.com”.

      • Description: Provide an informative description for the quick link.
    • Cluster: Specify specific cluster where the chart will run on + service account identifier
      • Cloud Account: Select the cloud account where the module could run on.
        • Cloud account/compute service must be associated to the chart’s space.
      • Compute Service: Select the compute service to use.
      • Service Account Name: Provide a service account with the required permissions to install this chart. Either provide a custom service account, or choose to use Torque's default service account. Torque's default service account can perform all actions on deployments, replicasets, pods, persistentvolumeclaims, services, configmaps and endpoints in the namespaces that were defined for this compute service. In addition, it has the permission to read namespaces, and list secrets and events. 
        Options are:
        • Please enter a service account: Name of the custom service account you want to use.
        • Use Torque built-in service account for namespace
    • Commands: Specify a list of Helm commands to run before installing the chart. The commands are run sequentially from top to bottom.

      Important: Torque does not install chart dependencies automatically, but you can do this by adding dep update <repository/folder> commands to your chart.

  3. Click Save.
    A blueprint YAML, application YAML and service YAML are generated based on the definition of the Helm blueprint. These files are displayed in the Blueprints tab., and allow the user to access all blueprint-related functionality such as publish/unpublish, APIs, etc.

Related Articles


0 replies

Be the first to reply!

Reply