Instana

Instana is a Dynamic APM for Microservice Applications

Introduction

This chart adds the Instana Agent to all nodes in your cluster via a DaemonSet.

Prerequisites for Helm

To use this, first install helm and tiller (the Kubernetes cluster-side tool helm talks to) using the standard documentation:

https://docs.helm.sh/using_helm/#installing-helm

Most Kubernetes clusters have RBAC enabled, therefore, create a service account for helm to use, for example

apiVersion: v1
kind: ServiceAccount
metadata:
  name: tiller
  namespace: kube-system
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: tiller
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
  - kind: ServiceAccount
    name: tiller
    namespace: kube-system
$ kubectl create -f tiller-service-account.yaml

Install tiller to your cluster with

$ helm init --service-account tiller

Installing the Chart

To configure the installation you can either specify the options on the command line using the --set switch, or you can edit values.yaml. Either way you should ensure that you set values for:

  • instana.agent.key
  • instana.agent.endpoint.host
  • instana.agent.endpoint.port
  • instana.zone

Optionally, if your infrastructure uses a proxy, you should ensure that you set values for:

  • instana.agent.proxyHost
  • instana.agent.proxyPort
  • instana.agent.proxyProtocol
  • instana.agent.proxyUser
  • instana.agent.proxyPassword
  • instana.agent.proxyUseDNS

Optionally, if your infrastructure has multiple networks defined, might need to allow the agent listening on all addresses (typically with value set to '*'):

  • instana.agent.httpListen

Check the values for the endpoint entries in the agent backend configuration.

To install the chart with the release name instana-agent and set the values on the command line run:

$ helm install . --name instana-agent --namespace instana-agent \
--set instana.agent.key=INSTANA_AGENT_KEY \
--set instana.agent.endpoint.host=HOST \
--set instana.agent.endpoint.port=PORT \
--set instana.zone=K8s-cluster \
--set instana.agent.proxyHost=INSTANA_AGENT_PROXY_HOST \
--set instana.agent.proxyPort=INSTANA_AGENT_PROXY_PORT \
--set instana.agent.proxyProtocol=INSTANA_AGENT_PROXY_PROTOCOL \
--set instana.agent.proxyUser=INSTANA_AGENT_PROXY_USER \
--set instana.agent.proxyPassword=INSTANA_AGENT_PROXY_PASSWORD \
--set instana.agent.proxyUseDNS=INSTANA_AGENT_PROXY_USE_DNS \
--set instana.agent.httpListen=INSTANA_AGENT_HTTP_LISTEN

To install the chart with the release name instana-agent after editing the values.yaml file, run:

$ helm install . --name instana-agent --namespace instana-agent

Uninstalling the Chart

To uninstall/delete the instana-agent daemon set:

$ helm del --purge instana-agent

Configuration

Helm Chart

The following table lists the configurable parameters of the Instana chart and their default values.

Parameter Description Default
instana.agent.key Your Instana Agent key Nil You must provide your own key
image.name The image name to pull from instana/agent
image.tag The image tag to pull latest
image.pullPolicy Image pull policy IfNotPresent
rbac.create True/False create & use RBAC resources true
instana.zone Instana zone. It will be also used as cluster name and unique identifier k8s-cluster-name
instana.leaderElectorPort Instana leader elector sidecar port 42655
instana.agent.endpoint.host Instana agent backend endpoint host saas-us-west-2.instana.io
instana.agent.endpoint.port Instana agent backend endpoint port 443
podAnnotations Additional annotations to apply to the pod {}
instana.agent.proxyHost Hostname/address of a proxy nil
instana.agent.proxyPort Port of a proxy nil
instana.agent.proxyProtocol Proxy protocol (Supported proxy types are "http", "socks4", "socks5") nil
instana.agent.proxyUser Username of the proxy auth nil
instana.agent.proxyPassword Password of the proxy auth nil
instana.agent.proxyUseDNS Boolean if proxy also does DNS nil
instana.agent.httpListen List of addresses to listen on, or "*" for all interfaces nil
computeResources.requests.memory Container memory requests in MiB 512
computeResources.requests.cpu Container cpu requests in cpu cores 0.5
computeResources.limits.memory Container memory limits in MiB 512
computeResources.limits.cpu Container cpu limits in cpu cores 1.5

Agent

There is a config map which you can edit to configure agent. This configuration will be used for all instana agents on all nodes.