├── .gitignore
├── charts
└── cluster-agent
│ ├── ci
│ └── kubeval.yaml
│ ├── templates
│ ├── epsagon-conf.yaml
│ ├── secret.yaml
│ ├── NOTES.txt
│ ├── rbac.yaml
│ ├── _helpers.tpl
│ └── cluster-agent-deployment.yaml
│ ├── .helmignore
│ ├── Chart.lock
│ ├── Chart.yaml
│ ├── README.md.gotmpl
│ ├── values.yaml
│ └── README.md
├── .github
├── CODEOWNERS
└── kubeval.sh
├── README.md
└── LICENSE
/.gitignore:
--------------------------------------------------------------------------------
1 | .deploy
2 | charts/*/charts
3 | helm-docs
4 | kubeval
--------------------------------------------------------------------------------
/charts/cluster-agent/ci/kubeval.yaml:
--------------------------------------------------------------------------------
1 | epsagonToken: "00000000-0000-0000-0000-000000000000"
--------------------------------------------------------------------------------
/.github/CODEOWNERS:
--------------------------------------------------------------------------------
1 | # Each line is a file pattern followed by one or more owners.
2 | * @epsagon/the-fabulous-team
--------------------------------------------------------------------------------
/charts/cluster-agent/templates/epsagon-conf.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: v1
2 | kind: ConfigMap
3 | metadata:
4 | name: epsagon-conf
5 | namespace: {{ .Release.Namespace }}
6 | data:
7 | epsagon_debug: {{ .Values.debug | quote }}
8 |
--------------------------------------------------------------------------------
/charts/cluster-agent/templates/secret.yaml:
--------------------------------------------------------------------------------
1 | {{- $epsagonToken := include "cluster-agent.epsagonToken" . -}}
2 | {{- if $epsagonToken }}
3 | apiVersion: v1
4 | kind: Secret
5 | metadata:
6 | name: {{ template "cluster-agent.fullname" . }}-config
7 | namespace: {{ .Release.Namespace }}
8 | labels:
9 | {{ include "cluster-agent.labels" . | indent 4 }}
10 | type: Opaque
11 | data:
12 | epsagonToken: {{ $epsagonToken | b64enc }}
13 | {{- end }}
--------------------------------------------------------------------------------
/charts/cluster-agent/.helmignore:
--------------------------------------------------------------------------------
1 | # Patterns to ignore when building packages.
2 | # This supports shell glob matching, relative path matching, and
3 | # negation (prefixed with !). Only one pattern per line.
4 | .DS_Store
5 | # Common VCS dirs
6 | .git/
7 | .gitignore
8 | .bzr/
9 | .bzrignore
10 | .hg/
11 | .hgignore
12 | .svn/
13 | # Common backup files
14 | *.swp
15 | *.bak
16 | *.tmp
17 | *.orig
18 | *~
19 | # Various IDEs
20 | .project
21 | .idea/
22 | *.tmproj
23 | .vscode/
24 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 | # Epsagon Helm Charts
9 |
10 | Official Helm charts for Epsagon products.
11 |
12 | ##### Supported helm charts:
13 | - [epsagon/cluster-agent](https://github.com/epsagon/helm-charts/blob/main/charts/cluster-agent/README.md)
14 |
15 | ## How to use Epsagon Helm repository
16 | You need to add this repository to your Helm repositories:
17 |
18 | ```bash
19 | helm repo add epsagon https://helm.epsagon.com
20 | helm repo update
21 | ```
--------------------------------------------------------------------------------
/charts/cluster-agent/Chart.lock:
--------------------------------------------------------------------------------
1 | dependencies:
2 | - name: prometheus
3 | repository: https://prometheus-community.github.io/helm-charts/
4 | version: 13.8.0
5 | - name: prometheus-mongodb-exporter
6 | repository: https://prometheus-community.github.io/helm-charts/
7 | version: 2.8.1
8 | - name: prometheus-redis-exporter
9 | repository: https://prometheus-community.github.io/helm-charts/
10 | version: 4.0.2
11 | - name: prometheus-rabbitmq-exporter
12 | repository: https://prometheus-community.github.io/helm-charts/
13 | version: 1.0.0
14 | digest: sha256:d4c7d68e7f3736749501310f23cf30edaa4694a39d1dde2c88d722b223a10ec0
15 | generated: "2021-05-19T15:49:30.511809+03:00"
16 |
--------------------------------------------------------------------------------
/.github/kubeval.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | set -euo pipefail
3 |
4 | SCHEMA_LOCATION="https://kubernetesjsonschema.dev/"
5 | KUBEVAL_VERSION="0.15.0"
6 | OS=$(uname)
7 | CHART_DIRS=$(ls -d charts/*)
8 |
9 | # install kubeval
10 | curl --silent --show-error --fail --location --output /tmp/kubeval.tar.gz https://github.com/instrumenta/kubeval/releases/download/"${KUBEVAL_VERSION}"/kubeval-${OS}-amd64.tar.gz
11 | tar -xf /tmp/kubeval.tar.gz kubeval
12 |
13 | for CHART_DIR in ${CHART_DIRS}; do
14 | echo "validating with kubeval for chart in folder: '$CHART_DIR'"
15 | helm template --values "${CHART_DIR}"/ci/kubeval.yaml "${CHART_DIR}" | ./kubeval --strict --ignore-missing-schemas --kubernetes-version "${KUBERNETES_VERSION#v}" --schema-location "${SCHEMA_LOCATION}"
16 | done
--------------------------------------------------------------------------------
/charts/cluster-agent/templates/NOTES.txt:
--------------------------------------------------------------------------------
1 | {{- if (include "cluster-agent.isValid" .) }}
2 | Epsagon cluster agent insalled successfully!
3 | {{ else }}
4 |
5 | {{- if not (include "cluster-agent.epsagonToken" .) -}}
6 | ##############################################################################
7 | #### ERROR: You did not set the epsagonToken ####
8 | ##############################################################################
9 |
10 | {{ end }}
11 |
12 | {{- if not (include "cluster-agent.clusterName" .) -}}
13 | ##############################################################################
14 | #### ERROR: You did not set the clusterName ####
15 | ##############################################################################
16 |
17 | {{ end }}
18 | This deployment will be incomplete until you set your Epsagon token and a cluster name.
19 |
20 | Then run:
21 |
22 | helm upgrade {{ .Release.Name }} \
23 | --set epsagonToken=YOUR-TOKEN-HERE \
24 | --set clusterName=YOUR-CLUSTER-NAME \
25 | epsagon/cluster-agent
26 |
27 | {{- end -}}
--------------------------------------------------------------------------------
/charts/cluster-agent/templates/rbac.yaml:
--------------------------------------------------------------------------------
1 | {{- if .Values.clusterAgent.rbac.create -}}
2 | apiVersion: rbac.authorization.k8s.io/v1
3 | kind: ClusterRole
4 | metadata:
5 | labels:
6 | app: {{ template "cluster-agent.name" . }}
7 | chart: {{ .Chart.Name }}-{{ .Chart.Version }}
8 | heritage: {{ .Release.Service }}
9 | release: {{ .Release.Name }}
10 | name: {{ template "cluster-agent.fullname" . }}
11 | rules:
12 | - apiGroups: [""]
13 | resources:
14 | - nodes
15 | - services
16 | - endpoints
17 | - pods
18 | - namespaces
19 | - configmaps
20 | - events
21 | verbs: ["get", "list", "watch"]
22 | - apiGroups: ["apps"]
23 | resources: ["deployments", "daemonsets", "statefulsets"]
24 | verbs: ["get", "list", "watch"]
25 | ---
26 | apiVersion: rbac.authorization.k8s.io/v1
27 | kind: ClusterRoleBinding
28 | metadata:
29 | labels:
30 | app: {{ template "cluster-agent.name" .}}
31 | chart: {{ .Chart.Name }}-{{ .Chart.Version }}
32 | heritage: {{ .Release.Service }}
33 | release: {{ .Release.Name }}
34 | name: {{ template "cluster-agent.fullname" . }}
35 | roleRef:
36 | apiGroup: rbac.authorization.k8s.io
37 | kind: ClusterRole
38 | name: {{ template "cluster-agent.fullname" . }}
39 | subjects:
40 | - kind: ServiceAccount
41 | name: {{ template "cluster-agent.fullname" . }}
42 | namespace: {{ .Release.Namespace }}
43 | ---
44 | apiVersion: v1
45 | kind: ServiceAccount
46 | metadata:
47 | labels:
48 | app: {{ template "cluster-agent.name" . }}
49 | chart: {{ .Chart.Name }}-{{ .Chart.Version }}
50 | heritage: {{ .Release.Service }}
51 | release: {{ .Release.Name }}
52 | name: {{ template "cluster-agent.fullname" . }}
53 | {{- end -}}
54 |
--------------------------------------------------------------------------------
/charts/cluster-agent/Chart.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: v2
2 | name: cluster-agent
3 | description: A Helm chart for Kubernetes, deploying cluster agent for resource discovery to be used in Epsagon dashboards
4 |
5 | type: application
6 |
7 | # This is the chart version. This version number should be incremented each time you make changes
8 | # to the chart and its templates, including the app version.
9 | # Versions are expected to follow Semantic Versioning (https://semver.org/)
10 | version: 0.1.19
11 |
12 | # This is the version number of the application being deployed. This version number should be
13 | # incremented each time you make changes to the application. Versions are not expected to
14 | # follow Semantic Versioning. They should reflect the version the application is using.
15 | appVersion: 1.0.13
16 |
17 | # Dependencies to enable auto monitoring in
18 | # environments where Prometheus is not setup already
19 | dependencies:
20 | - name: prometheus
21 | alias: metrics-agent
22 | repository: https://prometheus-community.github.io/helm-charts/
23 | condition: metrics.enabled
24 | version: 13.8.0
25 |
26 | - name: prometheus-mongodb-exporter
27 | alias: mongodb-metrics
28 | repository: https://prometheus-community.github.io/helm-charts/
29 | condition: metrics.mongodb.enabled
30 | version: 2.8.1
31 |
32 | - name: prometheus-redis-exporter
33 | alias: redis-metrics
34 | repository: https://prometheus-community.github.io/helm-charts/
35 | condition: metrics.redis.enabled
36 | version: 4.0.2
37 |
38 | - name: prometheus-rabbitmq-exporter
39 | alias: rabbitmq-metrics
40 | repository: https://prometheus-community.github.io/helm-charts/
41 | condition: metrics.rabbitmq.enabled
42 | version: 1.0.0
43 |
--------------------------------------------------------------------------------
/charts/cluster-agent/README.md.gotmpl:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 | # Epsagon Agent
9 |
10 | {{ template "chart.versionBadge" . }}{{ template "chart.typeBadge" . }}{{ template "chart.appVersionBadge" . }}
11 |
12 | ## How to use Epsagon Helm repository
13 | You need to add this repository to your Helm repositories:
14 |
15 | ```bash
16 | helm repo add epsagon https://helm.epsagon.com
17 | helm repo update
18 | ```
19 |
20 | ## Prerequisites
21 |
22 | Kubernetes 1.16+
23 |
24 | {{ template "chart.requirementsSection" . }}
25 |
26 | ### Installing the Cluster Agent Chart
27 | To install the chart with the release name :
28 | 1. Retrieve your Epsagon Token from your Agent Installation Instructions
29 | 2. Choose a name for your cluster.
30 |
31 | Make sure the configured cluster name matches the cluster name used when configuring the prometheus remote write.
32 |
33 | The chosen cluster name will be available in Epsagon dashboard.
34 |
35 | Then, run:
36 |
37 |
38 | ```bash
39 | helm install \
40 | --set epsagonToken= --set clusterName= epsagon/cluster-agent
41 | ```
42 | ### Uninstalling the Chart
43 |
44 | To uninstall/delete the `` deployment:
45 |
46 | ```bash
47 | helm uninstall
48 | ```
49 |
50 | The command removes all the Kubernetes components associated with the chart and deletes the release.
51 |
52 | ## All configuration options
53 |
54 | The following table lists the configurable parameters of the chart. Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`.
55 |
56 | {{ template "chart.valuesSection" . }}
57 |
--------------------------------------------------------------------------------
/charts/cluster-agent/templates/_helpers.tpl:
--------------------------------------------------------------------------------
1 | {{/*
2 | Expand the name of the chart.
3 | */}}
4 | {{- define "cluster-agent.name" -}}
5 | {{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }}
6 | {{- end }}
7 |
8 | {{/*
9 | Create a default fully qualified app name.
10 | We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
11 | If release name contains chart name it will be used as a full name.
12 | */}}
13 | {{- define "cluster-agent.fullname" -}}
14 | {{- if .Values.fullnameOverride }}
15 | {{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }}
16 | {{- else }}
17 | {{- $name := default .Chart.Name .Values.nameOverride }}
18 | {{- if contains $name .Release.Name }}
19 | {{- .Release.Name | trunc 63 | trimSuffix "-" }}
20 | {{- else }}
21 | {{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }}
22 | {{- end }}
23 | {{- end }}
24 | {{- end }}
25 |
26 | {{/*
27 | Create chart name and version as used by the chart label.
28 | */}}
29 | {{- define "cluster-agent.chart" -}}
30 | {{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }}
31 | {{- end }}
32 |
33 | {{/*
34 | Common labels
35 | */}}
36 | {{- define "cluster-agent.labels" -}}
37 | helm.sh/chart: {{ include "cluster-agent.chart" . }}
38 | {{ include "cluster-agent.selectorLabels" . }}
39 | {{- if .Chart.AppVersion }}
40 | app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
41 | {{- end }}
42 | app.kubernetes.io/managed-by: {{ .Release.Service }}
43 | {{- end }}
44 |
45 | {{/*
46 | Selector labels
47 | */}}
48 | {{- define "cluster-agent.selectorLabels" -}}
49 | app.kubernetes.io/name: {{ include "cluster-agent.name" . }}
50 | app.kubernetes.io/instance: {{ .Release.Name }}
51 | {{- end }}
52 |
53 | {{/*
54 | Create the name of the service account to use
55 | */}}
56 | {{- define "cluster-agent.serviceAccountName" -}}
57 | {{- if .Values.clusterAgent.serviceAccount.create }}
58 | {{- default (include "cluster-agent.fullname" .) .Values.clusterAgent.serviceAccount.name }}
59 | {{- else }}
60 | {{- default "default" .Values.clusterAgent.serviceAccount.name }}
61 | {{- end }}
62 | {{- end }}
63 |
64 | {{- define "check-cluster-name" }}
65 | {{- $length := len .Values.clusterName -}}
66 | {{- if (gt $length 80)}}
67 | {{- fail "Your `clusterName` isn’t valid it has to be below 81 chars." -}}
68 | {{- end}}
69 | {{- end -}}
70 |
71 | {{/*
72 | Return the cluster name
73 | */}}
74 | {{- define "cluster-agent.clusterName" -}}
75 | {{- .Values.clusterName | default "" -}}
76 | {{- end -}}
77 |
78 | {{/*
79 | Return the epsagon token
80 | */}}
81 | {{- define "cluster-agent.epsagonToken" -}}
82 | {{- .Values.epsagonToken | default "" -}}
83 | {{- end -}}
84 |
85 | {{/*
86 | Validate all template required values are set
87 | */}}
88 | {{- define "cluster-agent.isValid" -}}
89 | {{- $clusterName := include "cluster-agent.clusterName" . -}}
90 | {{- $epsagonToken := include "cluster-agent.epsagonToken" . -}}
91 | {{- and $epsagonToken $clusterName}}
92 | {{- end -}}
--------------------------------------------------------------------------------
/charts/cluster-agent/values.yaml:
--------------------------------------------------------------------------------
1 | # IMPORTANT: Specify your Epsagon Token here.
2 | # epsagonToken -- Set the Epsagon token of your account
3 | epsagonToken: ""
4 |
5 | # -- Set a unique cluster name to allow multiple clusters to integrate with Epsagon,
6 | # while easily identifying where the resources are coming from
7 | ## The name must be unique:
8 | ## * Overall length should not be higher than 80 characters.
9 | clusterName: ""
10 | debug: "false"
11 |
12 | clusterAgent:
13 | # -- The url to send the data to
14 | epsagonResourcesUrl: "https://collector.epsagon.com/resources/v1"
15 | epsagonEventsUrl: "https://collector.epsagon.com/events/v1"
16 |
17 | ## Provide Cluster Agent Deployment pod(s) RBAC configuration
18 | rbac:
19 | # -- If true, create & use RBAC resources
20 | create: true
21 |
22 | # replicaCount: 1
23 |
24 | image:
25 | repository: epsagon/cluster-agent
26 | pullPolicy: IfNotPresent
27 | # Overrides the image tag whose default is the chart appVersion.
28 | tag: ""
29 |
30 | imagePullSecrets: []
31 | nameOverride: ""
32 | fullnameOverride: ""
33 |
34 | podAnnotations: {}
35 |
36 | podSecurityContext: {}
37 |
38 | securityContext:
39 | {}
40 | # capabilities:
41 | # drop:
42 | # - ALL
43 | # readOnlyRootFilesystem: true
44 | # runAsNonRoot: true
45 | # runAsUser: 1000
46 |
47 | resources:
48 | {}
49 | # We usually recommend not to specify default resources and to leave this as a conscious
50 | # choice for the user. This also increases chances charts run on environments with little
51 | # resources, such as Minikube. If you do want to specify resources, uncomment the following
52 | # lines, adjust them as necessary, and remove the curly braces after 'resources:'.
53 | # The current commented requests & limits default values are the ones recommended by us.
54 | # limits:
55 | # cpu: 1000m
56 | # memory: 1Gi
57 | # requests:
58 | # cpu: 100m
59 | # memory: 128Mi
60 |
61 | serviceAccount:
62 | # -- Specifies whether a service account should be created
63 | create: true
64 | # -- Annotations to add to the service account
65 | annotations: {}
66 | # -- The name of the service account to use.
67 | # If not set and create is true, a name is generated using the fullname template
68 | name: ""
69 |
70 | nodeSelector: {}
71 |
72 | tolerations: []
73 |
74 | affinity: {}
75 |
76 | # Prometheus Config
77 |
78 | metrics:
79 | # enable epsagon auto monitoring
80 | enabled: false
81 |
82 | redis:
83 | # monitoring.redis.enabled -- enable redis monitoring
84 | enabled: false
85 |
86 | rabbitmq:
87 | # monitoring.rabbitmq.enabled -- enable rabbitmq monitoring
88 | enabled: false
89 |
90 | mongodb:
91 | # monitoring.mongodb.enabled -- enable mongodb monitoring
92 | enabled: false
93 |
94 |
95 | metrics-agent:
96 | alertmanager:
97 | enabled: false
98 | nodeExporter:
99 | enabled: false
100 | pushgateway:
101 | enabled: false
102 |
103 | serviceAccounts:
104 | alertmanager:
105 | create: false
106 | nodeExporter:
107 | create: false
108 | pushgateway:
109 | create: false
110 |
111 | server:
112 | remoteWrite: []
113 |
114 | rabbitmq-metrics:
115 | annotations:
116 | prometheus.io/path: /metrics
117 | prometheus.io/port: "9419"
118 | prometheus.io/scrape: "true"
119 |
120 | mongodb-metrics:
121 | podAnnotations:
122 | prometheus.io/path: /metrics
123 | prometheus.io/port: "9216"
124 | prometheus.io/scrape: "true"
125 |
126 | redis-metrics:
127 | annotations:
128 | prometheus.io/path: /metrics
129 | prometheus.io/port: "9121"
130 | prometheus.io/scrape: "true"
131 |
--------------------------------------------------------------------------------
/charts/cluster-agent/templates/cluster-agent-deployment.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: apps/v1
2 | kind: Deployment
3 | metadata:
4 | name: {{ include "cluster-agent.fullname" . }}
5 | labels:
6 | {{- include "cluster-agent.labels" . | nindent 4 }}
7 | spec:
8 | replicas: {{ .Values.clusterAgent.replicaCount }}
9 | selector:
10 | matchLabels:
11 | {{- include "cluster-agent.selectorLabels" . | nindent 6 }}
12 | template:
13 | metadata:
14 | {{- with .Values.clusterAgent.podAnnotations }}
15 | annotations:
16 | {{- toYaml . | nindent 8 }}
17 | {{- end }}
18 | labels:
19 | {{- include "cluster-agent.selectorLabels" . | nindent 8 }}
20 | spec:
21 | {{- with .Values.clusterAgent.imagePullSecrets }}
22 | imagePullSecrets:
23 | {{- toYaml . | nindent 8 }}
24 | {{- end }}
25 | serviceAccountName: {{ include "cluster-agent.serviceAccountName" . }}
26 | securityContext:
27 | {{- toYaml .Values.clusterAgent.podSecurityContext | nindent 8 }}
28 | containers:
29 | - name: resources-{{ .Chart.Name }}
30 | securityContext:
31 | {{- toYaml .Values.clusterAgent.securityContext | nindent 12 }}
32 | image: "{{ .Values.clusterAgent.image.repository }}:{{ .Values.clusterAgent.image.tag | default .Chart.AppVersion }}"
33 | imagePullPolicy: {{ .Values.clusterAgent.image.pullPolicy }}
34 | env:
35 | - name: EPSAGON_TOKEN
36 | valueFrom:
37 | secretKeyRef:
38 | name: {{ template "cluster-agent.fullname" . }}-config
39 | key: epsagonToken
40 | {{- if .Values.clusterName }}
41 | {{- template "check-cluster-name" . }}
42 | - name: EPSAGON_CLUSTER_NAME
43 | value: {{ .Values.clusterName | quote }}
44 | {{- end }}
45 | - name: EPSAGON_DEBUG
46 | value: {{ .Values.debug | quote }}
47 | - name: EPSAGON_COLLECTOR_URL
48 | value: {{ .Values.clusterAgent.epsagonResourcesUrl | quote }}
49 | - name: EPSAGON_COLLECT_RESOURCES
50 | value: "TRUE"
51 | - name: EPSAGON_COLLECT_EVENTS
52 | value: "FALSE"
53 | resources:
54 | {{- toYaml .Values.clusterAgent.resources | nindent 12 }}
55 | volumeMounts:
56 | - name: epsagon-conf
57 | mountPath: /etc/epsagon
58 | readOnly: true
59 | - name: events-{{ .Chart.Name }}
60 | securityContext:
61 | {{- toYaml .Values.clusterAgent.securityContext | nindent 12 }}
62 | image: "{{ .Values.clusterAgent.image.repository }}:{{ .Values.clusterAgent.image.tag | default .Chart.AppVersion }}"
63 | imagePullPolicy: {{ .Values.clusterAgent.image.pullPolicy }}
64 | env:
65 | - name: EPSAGON_TOKEN
66 | valueFrom:
67 | secretKeyRef:
68 | name: {{ template "cluster-agent.fullname" . }}-config
69 | key: epsagonToken
70 | {{- if .Values.clusterName }}
71 | {{- template "check-cluster-name" . }}
72 | - name: EPSAGON_CLUSTER_NAME
73 | value: {{ .Values.clusterName | quote }}
74 | {{- end }}
75 | - name: EPSAGON_DEBUG
76 | value: {{ .Values.debug | quote }}
77 | - name: EPSAGON_COLLECTOR_URL
78 | value: {{ .Values.clusterAgent.epsagonEventsUrl | quote }}
79 | - name: EPSAGON_COLLECT_RESOURCES
80 | value: "FALSE"
81 | - name: EPSAGON_COLLECT_EVENTS
82 | value: "TRUE"
83 | resources:
84 | {{- toYaml .Values.clusterAgent.resources | nindent 12 }}
85 | volumeMounts:
86 | - name: epsagon-conf
87 | mountPath: /etc/epsagon
88 | readOnly: true
89 | {{- with .Values.clusterAgent.nodeSelector }}
90 | nodeSelector:
91 | {{- toYaml . | nindent 8 }}
92 | {{- end }}
93 | {{- with .Values.clusterAgent.affinity }}
94 | affinity:
95 | {{- toYaml . | nindent 8 }}
96 | {{- end }}
97 | {{- with .Values.clusterAgent.tolerations }}
98 | tolerations:
99 | {{- toYaml . | nindent 8 }}
100 | {{- end }}
101 | volumes:
102 | - name: epsagon-conf
103 | configMap:
104 | name: epsagon-conf
105 | optional: true
106 |
--------------------------------------------------------------------------------
/charts/cluster-agent/README.md:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 | # Epsagon Agent
9 |
10 |   
11 |
12 | ## How to use Epsagon Helm repository
13 | You need to add this repository to your Helm repositories:
14 |
15 | ```bash
16 | helm repo add epsagon https://helm.epsagon.com
17 | helm repo update
18 | ```
19 |
20 | ## Prerequisites
21 |
22 | Kubernetes 1.16+
23 |
24 | ## Requirements
25 |
26 | | Repository | Name | Version |
27 | |------------|------|---------|
28 | | https://prometheus-community.github.io/helm-charts/ | metrics-agent(prometheus) | 13.8.0 |
29 | | https://prometheus-community.github.io/helm-charts/ | mongodb-metrics(prometheus-mongodb-exporter) | 2.8.1 |
30 | | https://prometheus-community.github.io/helm-charts/ | rabbitmq-metrics(prometheus-rabbitmq-exporter) | 1.0.0 |
31 | | https://prometheus-community.github.io/helm-charts/ | redis-metrics(prometheus-redis-exporter) | 4.0.2 |
32 |
33 | ### Installing the Cluster Agent Chart
34 | To install the chart with the release name :
35 | 1. Retrieve your Epsagon Token from your Agent Installation Instructions
36 | 2. Choose a name for your cluster.
37 |
38 | Make sure the configured cluster name matches the cluster name used when configuring the prometheus remote write.
39 |
40 | The chosen cluster name will be available in Epsagon dashboard.
41 |
42 | Then, run:
43 |
44 | ```bash
45 | helm install \
46 | --set epsagonToken= --set clusterName= epsagon/cluster-agent
47 | ```
48 | ### Uninstalling the Chart
49 |
50 | To uninstall/delete the `` deployment:
51 |
52 | ```bash
53 | helm uninstall
54 | ```
55 |
56 | The command removes all the Kubernetes components associated with the chart and deletes the release.
57 |
58 | ## All configuration options
59 |
60 | The following table lists the configurable parameters of the chart. Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`.
61 |
62 | ## Values
63 |
64 | | Key | Type | Default | Description |
65 | |-----|------|---------|-------------|
66 | | clusterAgent.affinity | object | `{}` | |
67 | | clusterAgent.epsagonUrl | string | `"https://collector.epsagon.com/resources/v1"` | The url to send the data to |
68 | | clusterAgent.fullnameOverride | string | `""` | |
69 | | clusterAgent.image.pullPolicy | string | `"IfNotPresent"` | |
70 | | clusterAgent.image.repository | string | `"epsagon/cluster-agent"` | |
71 | | clusterAgent.image.tag | string | `""` | |
72 | | clusterAgent.imagePullSecrets | list | `[]` | |
73 | | clusterAgent.nameOverride | string | `""` | |
74 | | clusterAgent.nodeSelector | object | `{}` | |
75 | | clusterAgent.podAnnotations | object | `{}` | |
76 | | clusterAgent.podSecurityContext | object | `{}` | |
77 | | clusterAgent.rbac.create | bool | `true` | If true, create & use RBAC resources |
78 | | clusterAgent.resources | object | `{}` | |
79 | | clusterAgent.securityContext | object | `{}` | |
80 | | clusterAgent.serviceAccount.annotations | object | `{}` | Annotations to add to the service account |
81 | | clusterAgent.serviceAccount.create | bool | `true` | Specifies whether a service account should be created |
82 | | clusterAgent.serviceAccount.name | string | `""` | The name of the service account to use. If not set and create is true, a name is generated using the fullname template |
83 | | clusterAgent.tolerations | list | `[]` | |
84 | | clusterName | string | `""` | Set a unique cluster name to allow multiple clusters to integrate with Epsagon, while easily identifying where the resources are coming from |
85 | | debug | string | `"false"` | |
86 | | epsagonToken | string | `""` | Set the Epsagon token of your account |
87 | | metrics-agent.alertmanager.enabled | bool | `false` | |
88 | | metrics-agent.nodeExporter.enabled | bool | `false` | |
89 | | metrics-agent.pushgateway.enabled | bool | `false` | |
90 | | metrics-agent.server.remoteWrite | list | `[]` | |
91 | | metrics-agent.serviceAccounts.alertmanager.create | bool | `false` | |
92 | | metrics-agent.serviceAccounts.nodeExporter.create | bool | `false` | |
93 | | metrics-agent.serviceAccounts.pushgateway.create | bool | `false` | |
94 | | metrics.enabled | bool | `false` | |
95 | | metrics.mongodb.enabled | bool | `false` | |
96 | | metrics.rabbitmq.enabled | bool | `false` | |
97 | | metrics.redis.enabled | bool | `false` | |
98 | | mongodb-metrics.podAnnotations."prometheus.io/path" | string | `"/metrics"` | |
99 | | mongodb-metrics.podAnnotations."prometheus.io/port" | string | `"9216"` | |
100 | | mongodb-metrics.podAnnotations."prometheus.io/scrape" | string | `"true"` | |
101 | | rabbitmq-metrics.annotations."prometheus.io/path" | string | `"/metrics"` | |
102 | | rabbitmq-metrics.annotations."prometheus.io/port" | string | `"9419"` | |
103 | | rabbitmq-metrics.annotations."prometheus.io/scrape" | string | `"true"` | |
104 | | redis-metrics.annotations."prometheus.io/path" | string | `"/metrics"` | |
105 | | redis-metrics.annotations."prometheus.io/port" | string | `"9121"` | |
106 | | redis-metrics.annotations."prometheus.io/scrape" | string | `"true"` | |
107 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | Apache License
2 | Version 2.0, January 2004
3 | http://www.apache.org/licenses/
4 |
5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
6 |
7 | 1. Definitions.
8 |
9 | "License" shall mean the terms and conditions for use, reproduction,
10 | and distribution as defined by Sections 1 through 9 of this document.
11 |
12 | "Licensor" shall mean the copyright owner or entity authorized by
13 | the copyright owner that is granting the License.
14 |
15 | "Legal Entity" shall mean the union of the acting entity and all
16 | other entities that control, are controlled by, or are under common
17 | control with that entity. For the purposes of this definition,
18 | "control" means (i) the power, direct or indirect, to cause the
19 | direction or management of such entity, whether by contract or
20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the
21 | outstanding shares, or (iii) beneficial ownership of such entity.
22 |
23 | "You" (or "Your") shall mean an individual or Legal Entity
24 | exercising permissions granted by this License.
25 |
26 | "Source" form shall mean the preferred form for making modifications,
27 | including but not limited to software source code, documentation
28 | source, and configuration files.
29 |
30 | "Object" form shall mean any form resulting from mechanical
31 | transformation or translation of a Source form, including but
32 | not limited to compiled object code, generated documentation,
33 | and conversions to other media types.
34 |
35 | "Work" shall mean the work of authorship, whether in Source or
36 | Object form, made available under the License, as indicated by a
37 | copyright notice that is included in or attached to the work
38 | (an example is provided in the Appendix below).
39 |
40 | "Derivative Works" shall mean any work, whether in Source or Object
41 | form, that is based on (or derived from) the Work and for which the
42 | editorial revisions, annotations, elaborations, or other modifications
43 | represent, as a whole, an original work of authorship. For the purposes
44 | of this License, Derivative Works shall not include works that remain
45 | separable from, or merely link (or bind by name) to the interfaces of,
46 | the Work and Derivative Works thereof.
47 |
48 | "Contribution" shall mean any work of authorship, including
49 | the original version of the Work and any modifications or additions
50 | to that Work or Derivative Works thereof, that is intentionally
51 | submitted to Licensor for inclusion in the Work by the copyright owner
52 | or by an individual or Legal Entity authorized to submit on behalf of
53 | the copyright owner. For the purposes of this definition, "submitted"
54 | means any form of electronic, verbal, or written communication sent
55 | to the Licensor or its representatives, including but not limited to
56 | communication on electronic mailing lists, source code control systems,
57 | and issue tracking systems that are managed by, or on behalf of, the
58 | Licensor for the purpose of discussing and improving the Work, but
59 | excluding communication that is conspicuously marked or otherwise
60 | designated in writing by the copyright owner as "Not a Contribution."
61 |
62 | "Contributor" shall mean Licensor and any individual or Legal Entity
63 | on behalf of whom a Contribution has been received by Licensor and
64 | subsequently incorporated within the Work.
65 |
66 | 2. Grant of Copyright License. Subject to the terms and conditions of
67 | this License, each Contributor hereby grants to You a perpetual,
68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable
69 | copyright license to reproduce, prepare Derivative Works of,
70 | publicly display, publicly perform, sublicense, and distribute the
71 | Work and such Derivative Works in Source or Object form.
72 |
73 | 3. Grant of Patent License. Subject to the terms and conditions of
74 | this License, each Contributor hereby grants to You a perpetual,
75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable
76 | (except as stated in this section) patent license to make, have made,
77 | use, offer to sell, sell, import, and otherwise transfer the Work,
78 | where such license applies only to those patent claims licensable
79 | by such Contributor that are necessarily infringed by their
80 | Contribution(s) alone or by combination of their Contribution(s)
81 | with the Work to which such Contribution(s) was submitted. If You
82 | institute patent litigation against any entity (including a
83 | cross-claim or counterclaim in a lawsuit) alleging that the Work
84 | or a Contribution incorporated within the Work constitutes direct
85 | or contributory patent infringement, then any patent licenses
86 | granted to You under this License for that Work shall terminate
87 | as of the date such litigation is filed.
88 |
89 | 4. Redistribution. You may reproduce and distribute copies of the
90 | Work or Derivative Works thereof in any medium, with or without
91 | modifications, and in Source or Object form, provided that You
92 | meet the following conditions:
93 |
94 | (a) You must give any other recipients of the Work or
95 | Derivative Works a copy of this License; and
96 |
97 | (b) You must cause any modified files to carry prominent notices
98 | stating that You changed the files; and
99 |
100 | (c) You must retain, in the Source form of any Derivative Works
101 | that You distribute, all copyright, patent, trademark, and
102 | attribution notices from the Source form of the Work,
103 | excluding those notices that do not pertain to any part of
104 | the Derivative Works; and
105 |
106 | (d) If the Work includes a "NOTICE" text file as part of its
107 | distribution, then any Derivative Works that You distribute must
108 | include a readable copy of the attribution notices contained
109 | within such NOTICE file, excluding those notices that do not
110 | pertain to any part of the Derivative Works, in at least one
111 | of the following places: within a NOTICE text file distributed
112 | as part of the Derivative Works; within the Source form or
113 | documentation, if provided along with the Derivative Works; or,
114 | within a display generated by the Derivative Works, if and
115 | wherever such third-party notices normally appear. The contents
116 | of the NOTICE file are for informational purposes only and
117 | do not modify the License. You may add Your own attribution
118 | notices within Derivative Works that You distribute, alongside
119 | or as an addendum to the NOTICE text from the Work, provided
120 | that such additional attribution notices cannot be construed
121 | as modifying the License.
122 |
123 | You may add Your own copyright statement to Your modifications and
124 | may provide additional or different license terms and conditions
125 | for use, reproduction, or distribution of Your modifications, or
126 | for any such Derivative Works as a whole, provided Your use,
127 | reproduction, and distribution of the Work otherwise complies with
128 | the conditions stated in this License.
129 |
130 | 5. Submission of Contributions. Unless You explicitly state otherwise,
131 | any Contribution intentionally submitted for inclusion in the Work
132 | by You to the Licensor shall be under the terms and conditions of
133 | this License, without any additional terms or conditions.
134 | Notwithstanding the above, nothing herein shall supersede or modify
135 | the terms of any separate license agreement you may have executed
136 | with Licensor regarding such Contributions.
137 |
138 | 6. Trademarks. This License does not grant permission to use the trade
139 | names, trademarks, service marks, or product names of the Licensor,
140 | except as required for reasonable and customary use in describing the
141 | origin of the Work and reproducing the content of the NOTICE file.
142 |
143 | 7. Disclaimer of Warranty. Unless required by applicable law or
144 | agreed to in writing, Licensor provides the Work (and each
145 | Contributor provides its Contributions) on an "AS IS" BASIS,
146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
147 | implied, including, without limitation, any warranties or conditions
148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
149 | PARTICULAR PURPOSE. You are solely responsible for determining the
150 | appropriateness of using or redistributing the Work and assume any
151 | risks associated with Your exercise of permissions under this License.
152 |
153 | 8. Limitation of Liability. In no event and under no legal theory,
154 | whether in tort (including negligence), contract, or otherwise,
155 | unless required by applicable law (such as deliberate and grossly
156 | negligent acts) or agreed to in writing, shall any Contributor be
157 | liable to You for damages, including any direct, indirect, special,
158 | incidental, or consequential damages of any character arising as a
159 | result of this License or out of the use or inability to use the
160 | Work (including but not limited to damages for loss of goodwill,
161 | work stoppage, computer failure or malfunction, or any and all
162 | other commercial damages or losses), even if such Contributor
163 | has been advised of the possibility of such damages.
164 |
165 | 9. Accepting Warranty or Additional Liability. While redistributing
166 | the Work or Derivative Works thereof, You may choose to offer,
167 | and charge a fee for, acceptance of support, warranty, indemnity,
168 | or other liability obligations and/or rights consistent with this
169 | License. However, in accepting such obligations, You may act only
170 | on Your own behalf and on Your sole responsibility, not on behalf
171 | of any other Contributor, and only if You agree to indemnify,
172 | defend, and hold each Contributor harmless for any liability
173 | incurred by, or claims asserted against, such Contributor by reason
174 | of your accepting any such warranty or additional liability.
175 |
176 | END OF TERMS AND CONDITIONS
177 |
178 | APPENDIX: How to apply the Apache License to your work.
179 |
180 | To apply the Apache License to your work, attach the following
181 | boilerplate notice, with the fields enclosed by brackets "[]"
182 | replaced with your own identifying information. (Don't include
183 | the brackets!) The text should be enclosed in the appropriate
184 | comment syntax for the file format. We also recommend that a
185 | file or class name and description of purpose be included on the
186 | same "printed page" as the copyright notice for easier
187 | identification within third-party archives.
188 |
189 | Copyright [yyyy] [name of copyright owner]
190 |
191 | Licensed under the Apache License, Version 2.0 (the "License");
192 | you may not use this file except in compliance with the License.
193 | You may obtain a copy of the License at
194 |
195 | http://www.apache.org/licenses/LICENSE-2.0
196 |
197 | Unless required by applicable law or agreed to in writing, software
198 | distributed under the License is distributed on an "AS IS" BASIS,
199 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
200 | See the License for the specific language governing permissions and
201 | limitations under the License.
202 |
--------------------------------------------------------------------------------