Skip to main content

Helm charts

Reading time: 0 minute(s) (0 words)

Manage your Nobl9 agent with Helm charts

Nobl9 provides a collection of Helm charts you can use to manage Nobl9 agents to retrieve SLI metrics from configured data sources and send the data back to Nobl9. The Helm charts are available on GitHub.

What is Helm?

Helm is the package manager for Kubernetes. With Helm, you can define, install, and upgrade Kubernetes applications.
Read more about Helm.

Helm chart configuration

To set up a chart, do the following:

  1. Install Helm and set up a connection to the desired Kubernetes cluster.

  2. Add the Nobl9 repository:

    helm repo add nobl9 https://nobl9.github.io/helm-charts

    It also returns the list of available charts. For example,

    helm search repo Nobl9
    NAME CHART VERSION APP VERSION DESCRIPTION
    nobl9/nobl9-agent 1.0.0 0.48.0 Agent to retrieve SLI metrics from configured d...
  3. Get the agent variables under Sources on the Nobl9 Web.

    1. Open the Nobl9 app.
    2. Go to Integrations > Sources.
    3. Click the required data source.
      The data source must be created with the Agent connection method.
    4. Find the variable under the Agent Configuration > Kubernetes tab.
    configuration-page
    Image 1: Nobl9 agent configuration page example

    Read more about agent creation or adding a data source in the UI.

  4. Prepare the chart values.
    Review the required and default values.

    You can extend values.yaml with custom variables. For example, if you want to add OpenTSDB as a data source, create another values.yml file and add the following values:

    config:
    clientId: my-id
    clientSecret: my-secret
    deployment:
    version: 0.77.0
    extraEnvs:
    - name: N9_METRICS_PORT
    value: "9090"
    Important notes:
    clientId and clientSecret correspond to the N9_CLIENT_ID and N9_CLIENT_SECRET variables you see under the Agent Configuration tab.
    ✓ The OpenTSDB data source requires an additional N9_METRICS_PORT variable.
    N9_OKTA_ORG_URL and N9_AUTH_SERVER can be omitted since they are identical to the defaults described in values.yaml.
  5. Deploy the chart. For this, run:

    helm install --values values.yml --generate-name nobl9/nobl9-agent

    The expected output looks like this:

    NAME: nobl9-agent-1663143197
    LAST DEPLOYED: Wed Sep 14 10:13:20 2022
    NAMESPACE: default
    STATUS: deployed
    REVISION: 1
    TEST SUITE: None

Helm chart use cases

Here are some ways you can customize your Helm chart with:

Use existing Kubernetes secrets

When you already have a Kubernetes secret, for example, one synced with AWS Secrets Manager, you can adjust the chart instead of creating a new one.

As such, instead of providing secrets inline:

config:
clientId: my-id
clientSecret: my-secret

use the extraEnvs variable. For example,

deployment:
extraEnvs:
- name: N9_CLIENT_ID
valueFrom:
secretKeyRef:
key: my-existing-secret-key
name: my-existing-secret
- name: N9_CLIENT_SECRET
valueFrom:
secretKeyRef:
key: my-existing-secret-key
name: my-existing-secret

Override the namespace or secret name

Charts are installed in the default namespace. The secret name corresponds to the chart name. You can use overrides to change this, for example:

namespaceOverride: my-custom-namespace
secret:
nameOverride: my-custom-secret-name

Add extra data to a secret

Some data sources (for example, Splunk) require additional variables such as tokens or passwords. To store them securely, Kubernetes secrets are used. In the Helm chart, you can define the variables you want to be included in the secret. For example,

secret:
extraData:
SPLUNK_APP_TOKEN: my-app-token
deployment:
extraEnvs:
- name: SPLUNK_APP_TOKEN
valueFrom:
secretKeyRef:
key: SPLUNK_APP_TOKEN
name: <secret name (defaults to chart name)>

Add extra labels and annotations

To set custom annotations and labels:

config:
project: my-project
organization: my-org
datasourceName: datadog
deployment:
annotations:
my-custom-annotation: value
extraLabels:
my-extra-label: custom-value

The specified variables will be appended to the existing labels, annotations, and selector lists, for example:

labels:
helm.sh/chart: nobl9-agent-1.0.0
app.kubernetes.io/name: nobl9-agent
app.kubernetes.io/instance: release-name
nobl9.com/agent-datasource-name: datadog
nobl9.com/agent-project: my-project
nobl9.com/agent-organization: my-org
app.kubernetes.io/version: "0.48.0"
app.kubernetes.io/managed-by: Helm
my-extra-label: custom-value

You can find more combinations in values.yaml.

Use custom arguments

The Nobl9 agent image has no ENTRYPOINT defined, so when passing custom args, the command must be set to run the telegraf executable.

command:
- telegraf
args:
- --debug

Helm charts | Nobl9 GitHub repository.