{{ template "chart.header" . }} {{ template "chart.deprecationWarning" . }} {{ template "chart.description" . }} {{ template "chart.homepageLine" . }} ## Bundled charts This chart does not deploy anything by itself but has many charts as dependencies. This allows you to easily install and upgrade the New Relic Kubernetes Integration using only one chart. In case you need more information about each component this chart installs, or you are an advanced user that want to install each component separately, here is a list of components that this chart installs and where you can find more information about them: | Component | Installed by default? | Description | |------------------------------|-----------------------|-------------| | [newrelic-infrastructure](https://github.com/newrelic/nri-kubernetes/tree/main/charts/newrelic-infrastructure) | Yes | Sends metrics about nodes, cluster objects (e.g. Deployments, Pods), and the control plane to New Relic. | | [nri-metadata-injection](https://github.com/newrelic/k8s-metadata-injection/tree/main/charts/nri-metadata-injection) | Yes | Enriches New Relic-instrumented applications (APM) with Kubernetes information. | | [kube-state-metrics](https://github.com/kubernetes/kube-state-metrics/tree/master/charts/kube-state-metrics) | | Required for `newrelic-infrastructure` to gather cluster-level metrics. | | [nri-kube-events](https://github.com/newrelic/nri-kube-events/tree/main/charts/nri-kube-events) | | Reports Kubernetes events to New Relic. | | [newrelic-infra-operator](https://github.com/newrelic/newrelic-infra-operator/tree/main/charts/newrelic-infra-operator) | | (Beta) Used with Fargate or serverless environments to inject `newrelic-infrastructure` as a sidecar instead of the usual DaemonSet. | | [newrelic-k8s-metrics-adapter](https://github.com/newrelic/newrelic-k8s-metrics-adapter/tree/main/charts/newrelic-k8s-metrics-adapter) | | (Beta) Provides a source of data for Horizontal Pod Autoscalers (HPA) based on a NRQL query from New Relic. | | [newrelic-logging](https://github.com/newrelic/helm-charts/tree/master/charts/newrelic-logging) | | Sends logs for Kubernetes components and workloads running on the cluster to New Relic. | | [nri-prometheus](https://github.com/newrelic/nri-prometheus/tree/main/charts/nri-prometheus) | | Sends metrics from applications exposing Prometheus metrics to New Relic. | | [newrelic-prometheus-configurator](https://github.com/newrelic/newrelic-prometheus-configurator/tree/master/charts/newrelic-prometheus-agent) | | Configures instances of Prometheus in Agent mode to send metrics to the New Relic Prometheus endpoint. | | [newrelic-pixie](https://github.com/newrelic/helm-charts/tree/master/charts/newrelic-pixie) | | Connects to the Pixie API and enables the New Relic plugin in Pixie. The plugin allows you to export data from Pixie to New Relic for long-term data retention. | | [Pixie](https://docs.pixielabs.ai/installing-pixie/install-schemes/helm/#3.-deploy) | | Is an open source observability tool for Kubernetes applications that uses eBPF to automatically capture telemetry data without the need for manual instrumentation. | ## Configure components It is possible to configure settings for the individual charts this chart groups by specifying values for them under a key using the name of the chart, as specified in [helm documentation](https://helm.sh/docs/chart_template_guide/subcharts_and_globals). For example, by adding the following to the `values.yml` file: ```yaml # Configuration settings for the newrelic-infrastructure chart newrelic-infrastructure: # Any key defined in the values.yml file for the newrelic-infrastructure chart can be configured here: # https://github.com/newrelic/nri-kubernetes/blob/main/charts/newrelic-infrastructure/values.yaml verboseLog: false resources: limits: memory: 512M ``` It is possible to override any entry of the [`newrelic-infrastructure`](https://github.com/newrelic/nri-kubernetes/tree/main/charts/newrelic-infrastructure) chart, as defined in their [`values.yml` file](https://github.com/newrelic/nri-kubernetes/blob/main/charts/newrelic-infrastructure/values.yaml). The same approach can be followed to update any of the subcharts. After making these changes to the `values.yml` file, or a custom values file, make sure to apply them using: ``` $ helm upgrade --reuse-values -f values.yaml [RELEASE] newrelic/nri-bundle ``` Where `[RELEASE]` is the name of the helm release, e.g. `newrelic-bundle`. ## Monitor on host integrations If you wish to monitor services running on Kubernetes you can provide integrations configuration under `integrations_config` that it will passed down to the `newrelic-infrastructure` chart. You just need to create a new entry where the "name" is the filename of the configuration file and the data is the content of the integration configuration. The name must end in ".yaml" as this will be the filename generated and the Infrastructure agent only looks for YAML files. The data part is the actual integration configuration as described in the spec here: https://docs.newrelic.com/docs/integrations/integrations-sdk/file-specifications/integration-configuration-file-specifications-agent-v180 In the following example you can see how to monitor a Redis integration with autodiscovery ```yaml newrelic-infrastructure: integrations: nri-redis-sampleapp: discovery: command: exec: /var/db/newrelic-infra/nri-discovery-kubernetes --tls --port 10250 match: label.app: sampleapp integrations: - name: nri-redis env: # using the discovered IP as the hostname address HOSTNAME: ${discovery.ip} PORT: 6379 labels: env: test ``` ## Bring your own KSM New Relic Kubernetes Integration requires an instance of kube-state-metrics (KSM) to be running in the cluster, which this chart pulls as a dependency. If you are already running or want to run your own KSM instance, you will need to make some small adjustments as described below. ### Bring your own KSM If you already have one KSM instance running, you can point `nri-kubernetes` to your instance: ```yaml kube-state-metrics: # Disable bundled KSM. enabled: false newrelic-infrastructure: ksm: config: # Selector for your pre-installed KSM Service. You may need to adjust this to fit your existing installation. selector: "app.kubernetes.io/name=kube-state-metrics" # Alternatively, you can specify a fixed URL where KSM is available. Doing so will bypass autodiscovery. #staticUrl: http://ksm.ksm.svc.cluster.local:8080/metrics ``` ### Run KSM alongside a different version If you need to run a different instance of KSM in your cluster, you can still run a separate instance for the Kubernetes Integration to work as intended: ```yaml kube-state-metrics: # Enable bundled KSM. enabled: true prometheusScrape: false customLabels: # Label unique to this KSM instance. newrelic.com/custom-ksm: "true" newrelic-infrastructure: ksm: config: # Use label above as a selector. selector: "newrelic.com/custom-ksm=true" ``` For more information on supported KSM version visit the [requirements documentation](https://docs.newrelic.com/docs/kubernetes-pixie/kubernetes-integration/get-started/kubernetes-integration-compatibility-requirements#reqs) ## Values managed globally Some of the subchart implement the [New Relic's common Helm library](https://github.com/newrelic/helm-charts/tree/master/library/common-library) which means that it honors a wide range of defaults and globals common to most New Relic Helm charts. Options that can be defined globally include `affinity`, `nodeSelector`, `tolerations`, `proxy` and others. The full list can be found at [user's guide of the common library](https://github.com/newrelic/helm-charts/blob/master/library/common-library/README.md). At the time of writing this document, all the charts from `nri-bundle` except `newrelic-logging` and `synthetics-minion` implements this library and honors global options as described below. {{ template "chart.valuesSection" . }} {{ if .Maintainers }} ## Maintainers {{ range .Maintainers }} {{- if .Name }} {{- if .Url }} * [{{ .Name }}]({{ .Url }}) {{- else }} * {{ .Name }} {{- end }} {{- end }} {{- end }} {{- end }}