167 lines
8.8 KiB
Plaintext
167 lines
8.8 KiB
Plaintext
{{ 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/prometheus-community/helm-charts/tree/main/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. |
|
|
| [k8s-agents-operator](https://github.com/newrelic/k8s-agents-operator/tree/main/charts/k8s-agents-operator) | | (Preview) Streamlines full-stack observability for Kubernetes environments by automating APM instrumentation alongside Kubernetes agent deployment. |
|
|
|
|
## 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
|
|
```
|
|
|
|
### <span id="ksm-different-version">Run KSM alongside a different version</span>
|
|
|
|
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.
|
|
|
|
Note, the value table below is automatically generated from `values.yaml` by `helm-docs`. If you need to add new fields or update existing fields, please update the `values.yaml` and then run `helm-docs` to update this value table.
|
|
|
|
{{ template "chart.valuesSection" . }}
|
|
|
|
{{ if .Maintainers }}
|
|
## Maintainers
|
|
{{ range .Maintainers }}
|
|
{{- if .Name }}
|
|
{{- if .Url }}
|
|
* [{{ .Name }}]({{ .Url }})
|
|
{{- else }}
|
|
* {{ .Name }}
|
|
{{- end }}
|
|
{{- end }}
|
|
{{- end }}
|
|
{{- end }}
|