# CNI METRICS HELPER

This chart provides a Kubernetes deployment for the Amazon VPC CNI Metrics Helper, which is used to collect metrics for the Amazon VPC CNI plugin for Kubernetes.

## Prerequisites

- Kubernetes 1.11+ running on AWS
- Helm 3.0+

## Installing the Chart

First add the EKS repository to Helm:

```shell
helm repo add eks https://aws.github.io/eks-charts
```

To install the chart with the release name `cni-metrics-helper` and default configuration:

```shell
$ helm install cni-metrics-helper --namespace kube-system eks/cni-metrics-helper
```

To install manually, clone the Amazon VPC CNI for Kubernetes repository to your local machine:

```shell
$ git clone https://github.com/aws/amazon-vpc-cni-k8s.git
```

Use the helm install command to install the chart into your Kubernetes cluster:

```shell
$ helm install cni-metrics-helper --namespace kube-system ./charts/cni-metrics-helper
```

To uninstall:

```shell
$ helm uninstall cni-metrics-helper --namespace kube-system
```

## Configuration

The following table lists the configurable parameters for this chart and their default values.

| Parameter                    | Description                                                   | Default            |
|------------------------------|---------------------------------------------------------------|--------------------|
| fullnameOverride             | Override the fullname of the chart                            | cni-metrics-helper |
| image.region                 | ECR repository region to use. Should match your cluster       | us-west-2          |
| image.tag                    | Image tag                                                     | v1.13.3            |
| image.account                | ECR repository account number                                 | 602401143452       |
| image.domain                 | ECR repository domain                                         | amazonaws.com      |
| env.USE_CLOUDWATCH           | Whether to export CNI metrics to CloudWatch                   | true               |
| env.AWS_CLUSTER_ID           | ID of the cluster to use when exporting metrics to CloudWatch | default            |
| env.AWS_VPC_K8S_CNI_LOGLEVEL | Log verbosity level (ie. FATAL, ERROR, WARN, INFO, DEBUG)     | INFO               |
| env.METRIC_UPDATE_INTERVAL   | Interval at which to update CloudWatch metrics, in seconds.   |                    |
|                              | Metrics are published to CloudWatch at 2x the interval        | 30                 |
| serviceAccount.name          | The name of the ServiceAccount to use                         | nil                |
| serviceAccount.create        | Specifies whether a ServiceAccount should be created          | true               |
| serviceAccount.annotations   | Specifies the annotations for ServiceAccount                  | {}                 |

Specify each parameter using the `--set key=value[,key=value]` argument to `helm install` or provide a YAML file containing the values for the above parameters:

```shell
$ helm install cni-metrics-handler --namespace kube-system eks/cni-metrics-handler --values values.yaml
```

Manual install:
```shell
$ helm install cni-metrics-helper --namespace kube-system ./charts/cni-metrics-helper --values values.yaml
```

## Resources

| Parameter                 | Description                                    | Default |
|---------------------------|------------------------------------------------|---------|
|    resources              | Resources for the pods.                        |   `{}`  |

For example, to set a CPU limit of 200m and a memory limit of 256Mi for the cni-metrics-helper pods, you can use the following command:

```shell
$ helm install cni-metrics-helper ./charts/cni-metrics-helper --namespace kube-system --set resources.limits.cpu=200m,resources.limits.memory=256Mi
```