An implementation of the Kubernetes Custom Metrics API and External Metrics API for NewRelic metrics.
This adapter allows you to scale your Kubernetes deployment using the Horizontal Pod Autoscaler (HPA) with metrics from NewRelic.
This adapter requires the following to access metric data from Amazon NewRelic.
- Account ID - Change NEW_RELIC_ACCOUNT_ID in deploy/adapter.yaml to your NewRelic Account ID
- Personal API Token - Create a secret called newrelic with The key api_key (The key should be encode to base64)
apiVersion: v1
kind: Secret
metadata:
name: newrelic
namespace: custom-metrics
type: Opaque
data:
api_key: 1234=
You can get The personal API token from Here.
Requires a Kubernetes cluster with Metric Server deployed, Amazon EKS cluster is fine too.
Now deploy the adapter to your Kubernetes cluster.
$ kubectl apply -f https://raw.githubusercontent.com/kuperiu/k8s-newrelic-adapter/master/deploy/adapter.yaml
namespace/custom-metrics created
clusterrolebinding.rbac.authorization.k8s.io/k8s-newrelic-adapter:system:auth-delegator created
rolebinding.rbac.authorization.k8s.io/k8s-newrelic-adapter-auth-reader created
deployment.apps/k8s-newrelic-adapter created
clusterrolebinding.rbac.authorization.k8s.io/k8s-newrelic-adapter-resource-reader created
serviceaccount/k8s-newrelic-adapter created
service/k8s-newrelic-adapter created
apiservice.apiregistration.k8s.io/v1beta1.external.metrics.k8s.io created
clusterrole.rbac.authorization.k8s.io/k8s-newrelic-adapter:external-metrics-reader created
clusterrole.rbac.authorization.k8s.io/k8s-newrelic-adapter-resource-reader created
clusterrolebinding.rbac.authorization.k8s.io/k8s-newrelic-adapter:external-metrics-reader created
customresourcedefinition.apiextensions.k8s.io/externalmetrics.metrics.newrelic created
clusterrole.rbac.authorization.k8s.io/k8s-newrelic-adapter:crd-metrics-reader created
clusterrolebinding.rbac.authorization.k8s.io/k8s-newrelic-adapter:crd-metrics-reader created
This creates a new namespace custom-metrics
and deploys the necessary ClusterRole, Service Account,
Role Binding, along with the deployment of the adapter.
Next you can query the APIs to see if the adapter is deployed correctly by running:
$ kubectl get --raw "/apis/external.metrics.k8s.io/v1beta1" | jq .
{
"kind": "APIResourceList",
"apiVersion": "v1",
"groupVersion": "external.metrics.k8s.io/v1beta1",
"resources": [
]
}
There is a sample application provided in this repository for you to test how the adapter works. Refer to this guide
This library is licensed under the Apache 2.0 License.
Report any issues in the Github Issues