In 2016, the operator concept was introduced by CoreOS Linux. Its purpose was to extend the capabilities of Kubernetes APIs, and it continues the tradition of one of the core designs of Kubernetes: automation. Operators simplify the process of managing complex Kubernetes applications—which can be made up of multiple deployments, pods, services, and more—by abstracting the resources into a set of custom configurations, or custom resources (CR).
This means that you can use an operator to manage tasks for your Kubernetes applications, including deploying, scaling, and upgrading, without needing to access anything more than the custom resources. Operators do this by allowing you to encode directions and best practices for specific applications on Kubernetes. As part of the Kubernetes control plane, operators act as controllers that continuously check for and resolve discrepancies between the current state of the cluster and the desired state you have configured through custom resource definitions (CRD).
In this blog post, you’ll learn how to get started with the New Relic operator for the Kubernetes integration, the benefits of using the operator, and how to update an example configuration.
Why you should use the New Relic Kubernetes Operator
If you’re already using the New Relic Kubernetes integration to monitor your clusters, you’re likely familiar with the features and capabilities the platform offers for your Kubernetes data, including the ability to:
- Correlate your APM data with your Kubernetes data, which helps you measure the performance of your web and mobile applications.
- Query all your Kubernetes data and build custom charts.
- Set up alerts on your Kubernetes data.
With the New Relic Kubernetes operator, you can now easily deploy the integration, which includes multiple modules (including Pixie, Fluentbit, and Prometheus) to monitor and manage your cluster, and also get additional automation features. For example, instead of having to configure or upgrade multiple pieces of your architecture one by one, you simply tell the operator what you want, and it’ll take care of it for you. It can even redeploy secrets or pods if you need it to!
The New Relic Kubernetes operator can also help ease the burden of other processes, including:
- Scaling applications in and out
- Initiating upgrades
- Deploying an application on demand
One thing to note here is that you can also install the New Relic Kubernetes integration without the operator; the operator exists to simplify the process of installing the integration and other common Kubernetes processes.
How to use the Kubernetes operator
For this brief how-to, you’ll need:
minikube.
If you don’t haveminikube&
set up, follow the installation instructions in minikube start.kubectl.
To installkubectl
, the Kubernetes command line tool, follow the steps in the Kubernetes documentation.- A New Relic account. Sign up here for a free account. Your account includes 100 GB/month of data ingest, one full-platform user, and unlimited basic users.
First, make sure you have Kubernetes running on your machine. Then, follow the remaining steps to install the New Relic Kubernetes integration using the operator.
- Run
minikube
start. - Run
helm repo add nr-operator https://newrelic.github.io/newrelic-k8s-operator && helm repo update
to add the operator. - Copy the script in the following code snippet and paste it in a text editor. You’ll use this script to configure and deploy the operator in your cluster, but first you need to update some values.
function ver { printf "%03d%03d" $(echo "$1" | tr '.' ' '); } && \
K8S_VERSION=$(kubectl version --short 2>&1 | grep 'Server Version' | awk -F' v' '{ print $2; }' | awk -F. '{ print $1"."$2; }') && \
if [[ $(ver $K8S_VERSION) -lt $(ver "1.25") ]]; then KSM_IMAGE_VERSION="v2.6.0"; else KSM_IMAGE_VERSION="v2.7.0"; fi && \
helm repo add newrelic https://helm-charts.newrelic.com && helm repo update && \
kubectl create namespace [YOUR_NAMESPACE] ; helm upgrade --install newrelic-bundle nr-operator/newrelic-k8s-operator \
kubectl create namespace [YOUR_NAMESPACE] ; helm upgrade --install newrelic-bundle newrelic/nri-bundle \
--set global.licenseKey=[YOUR_INGEST_LICENSE_KEY] \
--set global.cluster=[YOUR_CLUSTER_NAME] \
--namespace=[YOUR_NAMESPACE] \
--set newrelic-infrastructure.privileged=true \
--set global.lowDataMode=true \
--set kube-state-metrics.image.tag=${KSM_IMAGE_VERSION} \
--set kube-state-metrics.enabled=true \
--set kubeEvents.enabled=true \
--set newrelic-prometheus-agent.enabled=true \
--set newrelic-prometheus-agent.lowDataMode=true \
--set newrelic-prometheus-agent.config.kubernetes.integrations_filter.enabled=false \
--set logging.enabled=true \
--set newrelic-logging.lowDataMode=true
4. Replace the following fields in the script:
[YOUR_NAMESPACE]
with your desired namespace[YOUR_INGEST_LICENSE_KEY]
with your account’s ingest license key[YOUR_CLUSTER_NAME]
with your desired cluster name
5. Note that the script includes the following settings, which can be reconfigured if you wish:
- It scrapes all Prometheus endpoints except core Kubernetes system metrics.
- It forwards all logs with minimal enrichment (low data mode).
- If you have Pixie set up, you can also enable instant service-level insights, full-body requests, and application profiles.
6. Once you’ve replaced the fields from step 4 with your own values, run the entire script in your terminal. This will deploy the New Relic operator to your cluster, which will then also deploy the Kubernetes integration.
To confirm that your script was successful, run kubectl get pods --namespace [YOUR_NAMESPACE]
. You should see a list like the one below. The pods shown here are part of the New Relic Kubernetes integration that you just installed; you can learn more about these components the New Relic helm-charts repo.
8. There are two custom resources you can modify: Monitor
and NRIBundle
. To modify the configuration of either of those CRs in the terminal, run kubectl edit nribundle -n [YOUR_CLUSTER_NAME]
or kubectl edit monitor -n [YOUR_CLUSTER_NAME]
and make your desired changes; these will be automatically applied without the need to run helm again.
Exploring your Kubernetes data
Navigate to your New Relic account to view your fresh Kubernetes data: select All Entities > then select Containers to take a look at your container entities.
The entities shown here are deployments that are running in your current Kubernetes cluster. If you have applications deployed, you would see them in this list as well; otherwise, you would just see the ones that Kubernetes itself needs to run. For example, coredns
is what Kubernetes uses to resolve DNS within the cluster.
If you scroll down in the left-hand navigation, you will see the Kubernetes section, and be able to drill down further into your clusters, daemonsets, pods, and more. Continue exploring the New Relic Kubernetes experience by reading more in the documentation.
Próximos passos
The New Relic Kubernetes operator can help ease the burden of monitoring your clusters as well as automate multiple processes for you, such as scaling your applications and upgrading versions. Additionally, the New Relic Kubernetes monitoring integration provides visibility into your Kubernetes clusters and workloads. Continue learning about Kubernetes monitoring and New Relic platform capabilities for your Kubernetes data with these resources:
Don’t have New Relic? Sign up for a free account. Your account includes 100 GB/month of free data ingest, one free full-platform user, and unlimited basic users.
As opiniões expressas neste blog são de responsabilidade do autor e não refletem necessariamente as opiniões da New Relic. Todas as soluções oferecidas pelo autor são específicas do ambiente e não fazem parte das soluções comerciais ou do suporte oferecido pela New Relic. Junte-se a nós exclusivamente no Explorers Hub ( discuss.newrelic.com ) para perguntas e suporte relacionados a esta postagem do blog. Este blog pode conter links para conteúdo de sites de terceiros. Ao fornecer esses links, a New Relic não adota, garante, aprova ou endossa as informações, visualizações ou produtos disponíveis em tais sites.