Geneos ["Geneos"]
["Geneos > Netprobe"]["User Guide"]

Installation using Helm

Overview

This guide takes you through the deployment process of Netprobe and Collection Agent in Kubernetes and OpenShift environments using Helm.

Helm is a package manager for Kubernetes. Helm uses a packaging format called charts. A chart is a collection of files that describe a related set of Kubernetes resources.

Charts are created as files laid out in a particular directory tree. They can be packaged into versioned archives to be deployed. One Netprobe or Collection Agent chart can be configured to connect to multiple Gateways and run in the same cluster.

Currently, the following configurations are supported:

  • DaemonSet installation — the Netprobe is installed as a DaemonSet to all matching nodes. Each DaemonSet pod collects metrics and logs for the pods on that node only. An additional Deployment is launched to collect metrics and events that are not node-specific, such as ResourceQuotas. This is the only mode that supports log collection and is the default deployment mode.
  • Non-DaemonSet installation —the Netprobe is installed as a Deployment. One pod collects metrics for the entire cluster, and log collection is not supported.
  • Monitor specific namespaces — by default, metrics are collected for all namespaces but the installation can be configured to monitor specific namespaces.

Before the installation, ensure that all the requirements and the steps in the Helm prerequisites section are met and executed.

Helm prerequisites

This section provides the prerequisites for installing using Helm, you must also ensure your system meets the general prerequisites for installation in a orchestrated environment. For more info, see Prerequisites.

System requirements

You must have a Docker container configured with JSON logging.

Add the ITRS repository

To add the ITRS repository, run the following command:

helm repo add itrs https://itrs-group.github.io/helm-charts

Create a registry secret

Before deploying Helm charts, you must create a registry secret using the following command:

kubectl create secret docker-registry itrsdocker \
	--docker-server=https://docker.itrsgroup.com \
	--docker-username=USERNAME \
	--docker-password=PASSWORD \
	-n NAMESPACE

Kubernetes Role-Based Acess Control requirements

The Netprobe runs using a service account that requires certain Role-Based Access Control (RBAC) permissions in order to collect metrics. The required service account, roles, and role bindings are automatically created during installation. The Netprobe Helm chart will automatically create the ClusterRole and ClusterRoleBinding with get/list/watch access to node and node/proxy resources. However, it is possible to disable the automatic creation of a service account and supply your own service account and roles.

The Netprobe Helm chart will also create the following resources depending on Netprobe configuration:

  • If the Netprobe is configured to collect metrics for all namespaces, the ClusterRole will also have get/list/watch access to pods, resourcequotas, replicasets, jobs and events resources in all namespaces.

  • If the Netprobe is configured to collect metrics for a specific namespace only, a Role and RoleBinding with get/list/watch access to pods, resourcequotas, replicasets, jobs and events resources will be created in each of the target namespaces.

DaemonSet installation

Create a namespace

To create the geneos namespace , use the following command: 

kubectl create namespace geneos

Note: Helm automatically creates the service accounts and roles. For more information, see Kubernetes Role-Based Acess Control requirements.

Create the configuration file

To install a DaemonSet with full metrics, events, and log collection in all namespaces, use the following config.yaml file:

Note: It is required for you to provide the following values in the config.yaml file:

  • cluster — Name of the Kubernetes cluster that you want to monitor.

  • gateway: host — Hostname of the gateway where you want the Netprobe to connect to.

cluster: myCluster

gateway:
  host: "10.1.1.1"
  port: 7039

netprobe:
  resources:
    limits:
      cpu: "1"
      memory: "1Gi"
    requests:
      cpu: "500m"
      memory: "768Mi"  
  
agent:
  resources:
    limits:
      cpu: "1"
      memory: "1Gi"
    requests:
      cpu: "500m"
      memory: "768Mi"

Install a Helm chart

To install the chart, use the following command:

helm install -f <configuration filename> <release name> <chart name>

For example:

helm install -f config.yaml netprobe itrs/netprobe

Non-DaemonSet installation

Create a namespace

To create the geneos namespace , use the following command: 

kubectl create namespace geneos

Note: Helm automatically creates the service accounts and roles. For more information, see Kubernetes Role-Based Acess Control requirements.

Create the configuration file

To install a Non-DaemonSet with full metrics, and events in all namespaces, use the following config.yaml file:

Note: It is required for you to provide the following values in the config.yaml file:

  • cluster — Name of the Kubernetes cluster that you want to monitor.

  • gateway: host — Hostname of the gateway where you want the Netprobe to connect to.

mode: Deployment
cluster: myCluster

gateway:
  host: "10.1.1.1"
  port: 7039

netprobe:
  resources:
    limits:
      cpu: "1"
      memory: "1Gi"
    requests:
      cpu: "500m"
      memory: "768Mi"  
  
agent:
  resources:
    limits:
      cpu: "1"
      memory: "1Gi"
    requests:
      cpu: "500m"
      memory: "768Mi"

Install a Helm chart

To install the chart, use the following command:

helm install -f <configuration filename> <release name> <chart name>

For example:

helm install -f config.yaml netprobe itrs/netprobe

Monitor specific namespaces

Create a namespace

To create the geneos namespace , use the following command: 

kubectl create namespace geneos

Note: Helm automatically creates the service accounts and roles. For more information, see Kubernetes Role-Based Acess Control requirements.

Create the configuration file

To install a DaemonSet with full metrics, events, and log collection for specific namespaces, use the following config.yaml file:

Note: It is required for you to provide the following values in the config.yaml file:

  • cluster — Name of the Kubernetes cluster that you want to monitor.

  • gateway: host — Hostname of the gateway where you want the Netprobe to connect to.

mode: Deployment
cluster: myCluster

gateway:
  host: "10.1.1.1"
  port: 7039

metrics:
  namespaces:
  - ns1
  - ns2						
						
netprobe:
  resources:
    limits:
      cpu: "1"
      memory: "1Gi"
    requests:
      cpu: "500m"
      memory: "768Mi"  
  
agent:
  resources:
    limits:
      cpu: "1"
      memory: "1Gi"
    requests:
      cpu: "500m"
      memory: "768Mi"

Install a Helm chart

To install the chart, use the following command:

helm install -f <configuration filename> <release name> <chart name>

For example:

helm install -f config.yaml netprobe itrs/netprobe

Helpful commands

List configuration options

To see the complete list of configuration, run the following command:

helm show values <chart name>

Check chart version

To check the version of the Helm chart, run the following command: 

helm ls

The output will look similar to:

ubuntu@ip-192-168-18-189:~$ helm ls
NAME            NAMESPACE       REVISION        UPDATED                                 STATUS          CHART           APP VERSION
netprobe        default         1               2021-08-26 18:55:28.328483978 +0800 PST deployed        netprobe-5.7.6  5.7.2