Skip to main content

Helm Charts

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 manage even the most complex Kubernetes application. You can find more detailed information in the Helm Documentation.

Helm Chart Configuration

To set up the chart, follow these steps:

  1. Install Helm by following the steps described in the Helm Documentation and set up a connection to the desired Kubernetes cluster.

  2. Add the Nobl9 repository by entering the following command:

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

    After entering the above-mentioned command, you can discover the 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 from the Nobl9 Agent configuration page in the Nobl9 UI.

    tip

    You can find the Agent variables in the Nobl9 App by navigating to the Integrations > Sources and choosing the data source created using the Agent connection method. The variables are presented in the Agent Configuration tab.

    configuration-page
    Image 1: Nobl9 Agent configuration page example
    note

    If there are no available data sources created using the Agent connection method in the Sources tab, you can create one by following the steps described in the Agent Documentation. For more Integration-specific details, refer to the Agent Configuration in the UI section in each Integration’s subpage.

  4. Prepare the chart values.

    Review the default configuration and the default values in the values.yaml file described in the nobl9-agent | Nobl9 Helm Charts Documentation.

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

    config:
    clientId: my-id
    clientSecret: my-secret
    deployment:
    version: "0.51.2"
    extraEnvs:
    - name: N9_METRICS_PORT
    value: "9090"

    Important notes:

    • clientId and clientSecret values correspond to the N9_CLIENT_ID and N9_CLIENT_SECRET variables from the Agent Configuration.

    • Note that the OpenTSDB data source requires an additional N9_METRICS_PORT variable. The N9_OKTA_ORG_URL and N9_AUTH_SERVER variables can be omitted because these values are equal to the defaults described in the values.yaml | Nobl9 Helm Charts Documentation.

  5. Deploy the chart by entering the following command:

    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

If you have an existing 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 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 change that behavior using overrides, for example:

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

Add Extra Data to a Secret

Some data sources, Splunk, for example, require additional variables such as tokens or passwords. To securely store them, you should use Kubernetes secrets. 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

You can 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 selectors 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 the values.yaml | Nobl9 Helm Charts Documentation.

Helm Charts | Nobl9 Github Repository.