├── .gitignore ├── README.md ├── index.yaml ├── kube-eagle-1.1.2.tgz ├── kube-eagle-1.1.3.tgz ├── kube-eagle-1.1.4.tgz ├── kube-eagle-1.1.5.tgz ├── kube-eagle-1.1.6.tgz ├── kube-eagle-2.0.0.tgz └── kube-eagle ├── .helmignore ├── Chart.yaml ├── LICENSE ├── templates ├── NOTES.txt ├── _helpers.tpl ├── clusterrole.yaml ├── clusterrolebinding.yaml ├── deployment.yaml ├── service.yaml ├── serviceaccount.yaml └── servicemonitor.yaml └── values.yaml /.gitignore: -------------------------------------------------------------------------------- 1 | .idea/ 2 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Kube Eagle Helm Chart 2 | 3 | Helm chart for deployment of kube-eagle in Kubernetes. 4 | 5 | ## Installing helm chart 6 | 7 | ```bash 8 | helm repo add kube-eagle https://raw.githubusercontent.com/cloudworkz/kube-eagle-helm-chart/master 9 | helm repo update 10 | helm install kube-eagle kube-eagle/kube-eagle 11 | ``` 12 | 13 | If using helm version 2 : 14 | 15 | ```bash 16 | helm install --name=kube-eagle kube-eagle/kube-eagle 17 | ``` 18 | 19 | ## Chart configuration 20 | 21 | | Parameter | Description | Default | 22 | | --------------------------------- | ------------------------------------------------------------------ | --------------------- | 23 | | `rbac.create` | Create and use role based access resources | `true` | 24 | | `telemetry.host` | Host for prometheus server to to listen on | `0.0.0.0` | 25 | | `telemetry.port` | Port for prometheus server to listen on | `8080` | 26 | | `serviceMonitor.create` | Whether or not to create a service monitor for prometheus operator | `false` | 27 | | `serviceMonitor.interval` | Scrape interval for prometheus operator | `10s` | 28 | | `serviceMonitor.scrapeTimeout` | Scrape timeout for prometheus operator | `10s` | 29 | | `serviceMonitor.releaseLabel` | Release label being used for prometheus operator selector | `prometheus-operator` | 30 | | `serviceMonitor.additionalLabels` | Additional labels to add to the ServiceMonitor | | 31 | | `metricsNamespace` | Prefix of exposed prometheus metrics | `eagle` | 32 | | `logLevel` | Logger's log granularity (debug, info, warn, error, fatal, panic) | `info` | 33 | | `podSecurityContext.runAsUser` | UserID to use for the pod | `99` | 34 | | `podSecurityContext.runAsUser` | User group to use for the pod | `99` | 35 | | `containerSecurityContext` | Security Context for the kube eagle container | `{}` | 36 | | `podAnnotations` | Pod annotations | `{}` | 37 | | `priorityClassName` | Priority Class to be used by the pod | `""` | 38 | | `env` | Additional environment variables | `{}` | 39 | -------------------------------------------------------------------------------- /index.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | entries: 3 | kube-eagle: 4 | - apiVersion: v1 5 | appVersion: 1.1.4 6 | created: "2021-05-19T10:01:43.206684+02:00" 7 | description: Prometheus exporter for Kubernetes pod & node resource requests, limits and usage. 8 | digest: e45699a5dcb4c21ee82967b228585f63397fec4d883137abdb70241f621a6366 9 | name: kube-eagle 10 | urls: 11 | - kube-eagle-2.0.0.tgz 12 | version: 2.0.0 13 | - apiVersion: v1 14 | appVersion: 1.1.4 15 | created: "2021-05-19T10:01:43.206684+02:00" 16 | description: Prometheus exporter for Kubernetes pod & node resource requests, limits and usage. 17 | digest: 3aa5d99681f9f6d737804780f4a7637e8f4f6176c5e8c957beecfba0a816ee1a 18 | name: kube-eagle 19 | urls: 20 | - kube-eagle-1.1.6.tgz 21 | version: 1.1.6 22 | - apiVersion: v1 23 | appVersion: 1.1.0 24 | created: "2021-05-19T10:01:43.2017128+02:00" 25 | description: Prometheus exporter for Kubernetes pod & node resource requests, limits and usage. 26 | digest: 948f121ea035d120bb32870d6c619d51d8093fe4eac09c514adcaea2c81fb276 27 | name: kube-eagle 28 | urls: 29 | - kube-eagle-1.1.5.tgz 30 | version: 1.1.5 31 | - apiVersion: v1 32 | appVersion: 1.1.0 33 | created: "2021-05-19T10:01:43.1967132+02:00" 34 | description: Prometheus exporter for Kubernetes pod & node resource requests, limits and usage. 35 | digest: 6b57b4011c97a6a8ab5ab43670a54f76f5062abb21235dededf77985ce6a45d5 36 | name: kube-eagle 37 | urls: 38 | - kube-eagle-1.1.4.tgz 39 | version: 1.1.4 40 | - apiVersion: v1 41 | appVersion: 1.1.0 42 | created: "2021-05-19T10:01:43.1916843+02:00" 43 | description: Prometheus exporter for Kubernetes pod & node resource requests, limits and usage. 44 | digest: 3c803fe23293b527b0a363b3867232f62e003d1b658e427a71eaadc66611cb2e 45 | name: kube-eagle 46 | urls: 47 | - kube-eagle-1.1.3.tgz 48 | version: 1.1.3 49 | - apiVersion: v1 50 | appVersion: 1.1.0 51 | created: "2021-05-19T10:01:43.1866834+02:00" 52 | description: Prometheus exporter for Kubernetes pod & node resource requests, limits and usage. 53 | digest: e76934acc559f92e51b775f4ccb9dcbc03c0cb3f36bb8b9d99e3639c5bef5f47 54 | name: kube-eagle 55 | urls: 56 | - kube-eagle-1.1.2.tgz 57 | version: 1.1.2 58 | generated: "2021-05-19T10:01:43.178683+02:00" 59 | -------------------------------------------------------------------------------- /kube-eagle-1.1.2.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cloudworkz/kube-eagle-helm-chart/7db9c3438a371f8489923f0e35feab7837acf5ed/kube-eagle-1.1.2.tgz -------------------------------------------------------------------------------- /kube-eagle-1.1.3.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cloudworkz/kube-eagle-helm-chart/7db9c3438a371f8489923f0e35feab7837acf5ed/kube-eagle-1.1.3.tgz -------------------------------------------------------------------------------- /kube-eagle-1.1.4.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cloudworkz/kube-eagle-helm-chart/7db9c3438a371f8489923f0e35feab7837acf5ed/kube-eagle-1.1.4.tgz -------------------------------------------------------------------------------- /kube-eagle-1.1.5.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cloudworkz/kube-eagle-helm-chart/7db9c3438a371f8489923f0e35feab7837acf5ed/kube-eagle-1.1.5.tgz -------------------------------------------------------------------------------- /kube-eagle-1.1.6.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cloudworkz/kube-eagle-helm-chart/7db9c3438a371f8489923f0e35feab7837acf5ed/kube-eagle-1.1.6.tgz -------------------------------------------------------------------------------- /kube-eagle-2.0.0.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cloudworkz/kube-eagle-helm-chart/7db9c3438a371f8489923f0e35feab7837acf5ed/kube-eagle-2.0.0.tgz -------------------------------------------------------------------------------- /kube-eagle/.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 | *~ 18 | # Various IDEs 19 | .project 20 | .idea/ 21 | *.tmproj 22 | README.md 23 | LICENSE 24 | -------------------------------------------------------------------------------- /kube-eagle/Chart.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | description: Prometheus exporter for Kubernetes pod & node resource requests, limits and usage. 3 | name: kube-eagle 4 | version: 2.0.0 5 | appVersion: 1.1.4 6 | -------------------------------------------------------------------------------- /kube-eagle/LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2018 Google Cloud Tools 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /kube-eagle/templates/NOTES.txt: -------------------------------------------------------------------------------- 1 | ### Kube-eagle ### 2 | 3 | export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app={{ template "kube-eagle.name" . }},release={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}") 4 | 5 | echo "To test the functionality, setup a kubectl port-forward on your local machine. Then you can visit the below URLs" 6 | echo "Visit http://127.0.0.1:8080/metrics to check the exposed metrics" 7 | echo "Visit http://127.0.0.1:8080/health to make sure kube eagle is running as expected" 8 | -------------------------------------------------------------------------------- /kube-eagle/templates/_helpers.tpl: -------------------------------------------------------------------------------- 1 | {{/* vim: set filetype=mustache: */}} 2 | {{/* 3 | Expand the name of the chart. 4 | */}} 5 | {{- define "kube-eagle.name" -}} 6 | {{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}} 7 | {{- end -}} 8 | 9 | {{/* 10 | Create a default fully qualified app name. 11 | We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). 12 | If release name contains chart name it will be used as a full name. 13 | */}} 14 | {{- define "kube-eagle.fullname" -}} 15 | {{- if .Values.fullnameOverride -}} 16 | {{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}} 17 | {{- else -}} 18 | {{- $name := default .Chart.Name .Values.nameOverride -}} 19 | {{- if contains $name .Release.Name -}} 20 | {{- .Release.Name | trunc 63 | trimSuffix "-" -}} 21 | {{- else -}} 22 | {{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}} 23 | {{- end -}} 24 | {{- end -}} 25 | {{- end -}} 26 | 27 | {{/* 28 | Create chart name and version as used by the chart label. 29 | */}} 30 | {{- define "kube-eagle.chart" -}} 31 | {{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}} 32 | {{- end -}} 33 | -------------------------------------------------------------------------------- /kube-eagle/templates/clusterrole.yaml: -------------------------------------------------------------------------------- 1 | {{- if .Values.rbac.create }} 2 | apiVersion: rbac.authorization.k8s.io/v1 3 | kind: ClusterRole 4 | metadata: 5 | labels: 6 | app: {{ template "kube-eagle.name" . }} 7 | chart: {{ template "kube-eagle.chart" . }} 8 | release: {{ .Release.Name }} 9 | heritage: {{ .Release.Service }} 10 | name: {{ template "kube-eagle.fullname" . }} 11 | rules: 12 | - apiGroups: 13 | - "" 14 | resources: 15 | - nodes 16 | - pods 17 | verbs: 18 | - get 19 | - list 20 | - apiGroups: 21 | - metrics.k8s.io 22 | resources: 23 | - pods 24 | - nodes 25 | verbs: 26 | - get 27 | - list 28 | {{- end }} 29 | -------------------------------------------------------------------------------- /kube-eagle/templates/clusterrolebinding.yaml: -------------------------------------------------------------------------------- 1 | {{- if .Values.rbac.create }} 2 | apiVersion: rbac.authorization.k8s.io/v1 3 | kind: ClusterRoleBinding 4 | metadata: 5 | labels: 6 | app: {{ template "kube-eagle.name" . }} 7 | chart: {{ template "kube-eagle.chart" . }} 8 | release: {{ .Release.Name }} 9 | heritage: {{ .Release.Service }} 10 | name: {{ template "kube-eagle.fullname" . }} 11 | subjects: 12 | - kind: ServiceAccount 13 | name: {{ .Values.serviceAccountName }} 14 | namespace: {{ .Release.Namespace }} 15 | roleRef: 16 | apiGroup: rbac.authorization.k8s.io 17 | kind: ClusterRole 18 | name: {{ template "kube-eagle.fullname" . }} 19 | {{- end }} 20 | -------------------------------------------------------------------------------- /kube-eagle/templates/deployment.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: apps/v1 2 | kind: Deployment 3 | metadata: 4 | name: {{ template "kube-eagle.fullname" . }} 5 | labels: 6 | app: {{ template "kube-eagle.name" . }} 7 | chart: {{ template "kube-eagle.chart" . }} 8 | release: {{ .Release.Name }} 9 | heritage: {{ .Release.Service }} 10 | spec: 11 | replicas: {{ .Values.replicaCount }} 12 | selector: 13 | matchLabels: 14 | app: {{ template "kube-eagle.name" . }} 15 | release: {{ .Release.Name }} 16 | template: 17 | metadata: 18 | annotations: 19 | {{- with .Values.podAnnotations }} 20 | {{- toYaml . | nindent 8 }} 21 | {{- end }} 22 | prometheus.io/scrape: "true" 23 | prometheus.io/port: {{ .Values.service.port | quote }} 24 | prometheus.io/path: "/metrics" 25 | labels: 26 | app: {{ template "kube-eagle.name" . }} 27 | release: {{ .Release.Name }} 28 | spec: 29 | {{- if .Values.podSecurityContext }} 30 | securityContext: 31 | {{ toYaml .Values.podSecurityContext | indent 8 }} 32 | {{- end }} 33 | serviceAccountName: {{ .Values.serviceAccountName }} 34 | {{- if .Values.priorityClassName }} 35 | priorityClassName: {{ .Values.priorityClassName }} 36 | {{- end }} 37 | containers: 38 | - name: {{ .Chart.Name }} 39 | {{- if .Values.containerSecurityContext }} 40 | securityContext: 41 | {{ toYaml .Values.containerSecurityContext | indent 12 }} 42 | {{- end }} 43 | image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}" 44 | imagePullPolicy: {{ .Values.image.pullPolicy }} 45 | env: 46 | - name: TELEMETRY_HOST 47 | value: {{ .Values.telemetry.host | quote }} 48 | - name: TELEMETRY_PORT 49 | value: {{ .Values.telemetry.port | quote }} 50 | - name: METRICS_NAMESPACE 51 | value: {{ .Values.metricsNamespace | quote }} 52 | - name: LOG_LEVEL 53 | value: {{ .Values.logLevel | quote }} 54 | {{- if .Values.env }} 55 | {{- with .Values.env }} 56 | {{- toYaml . | nindent 12 }} 57 | {{- end }} 58 | {{- end }} 59 | ports: 60 | - name: http 61 | containerPort: {{ .Values.service.port }} 62 | protocol: TCP 63 | livenessProbe: 64 | timeoutSeconds: {{ .Values.livenessProbe.timeoutSeconds }} 65 | httpGet: 66 | path: /health 67 | port: http 68 | readinessProbe: 69 | timeoutSeconds: {{ .Values.readinessProbe.timeoutSeconds }} 70 | httpGet: 71 | path: /health 72 | port: http 73 | resources: 74 | {{ toYaml .Values.resources | indent 12 }} 75 | {{- with .Values.nodeSelector }} 76 | nodeSelector: 77 | {{ toYaml . | indent 8 }} 78 | {{- end }} 79 | {{- with .Values.affinity }} 80 | affinity: 81 | {{ toYaml . | indent 8 }} 82 | {{- end }} 83 | {{- with .Values.tolerations }} 84 | tolerations: 85 | {{ toYaml . | indent 8 }} 86 | {{- end }} 87 | -------------------------------------------------------------------------------- /kube-eagle/templates/service.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: {{ template "kube-eagle.fullname" . }} 5 | labels: 6 | app: {{ template "kube-eagle.name" . }} 7 | chart: {{ template "kube-eagle.chart" . }} 8 | release: {{ .Release.Name }} 9 | heritage: {{ .Release.Service }} 10 | spec: 11 | type: {{ .Values.service.type }} 12 | ports: 13 | - port: {{ .Values.service.port }} 14 | targetPort: http 15 | protocol: TCP 16 | name: http 17 | selector: 18 | app: {{ template "kube-eagle.name" . }} 19 | release: {{ .Release.Name }} 20 | -------------------------------------------------------------------------------- /kube-eagle/templates/serviceaccount.yaml: -------------------------------------------------------------------------------- 1 | {{- if .Values.rbac.create }} 2 | apiVersion: v1 3 | kind: ServiceAccount 4 | metadata: 5 | labels: 6 | app: {{ template "kube-eagle.name" . }} 7 | chart: {{ template "kube-eagle.chart" . }} 8 | release: {{ .Release.Name }} 9 | heritage: {{ .Release.Service }} 10 | name: {{ .Values.serviceAccountName }} 11 | {{- end }} -------------------------------------------------------------------------------- /kube-eagle/templates/servicemonitor.yaml: -------------------------------------------------------------------------------- 1 | {{- if .Values.serviceMonitor.create }} 2 | apiVersion: monitoring.coreos.com/v1 3 | kind: ServiceMonitor 4 | metadata: 5 | labels: 6 | app: {{ template "kube-eagle.name" . }} 7 | chart: {{ template "kube-eagle.chart" . }} 8 | release: {{ if .Values.serviceMonitor.additionalLabels -}} 9 | {{- .Release.Name -}} 10 | {{- else -}} 11 | {{- .Values.serviceMonitor.releaseLabel -}} 12 | {{- end }} 13 | heritage: {{ .Release.Service }} 14 | {{- if .Values.serviceMonitor.additionalLabels }} 15 | {{- range $key, $value := .Values.serviceMonitor.additionalLabels }} 16 | {{ $key }}: {{ $value }} 17 | {{- end }} 18 | {{- end }} 19 | name: {{ template "kube-eagle.fullname" . }} 20 | spec: 21 | endpoints: 22 | - interval: {{ .Values.serviceMonitor.interval }} 23 | port: http 24 | path: /metrics 25 | scrapeTimeout: {{ .Values.serviceMonitor.scrapeTimeout }} 26 | honorLabels: true 27 | selector: 28 | matchLabels: 29 | app: {{ template "kube-eagle.name" . }} 30 | {{- end }} 31 | -------------------------------------------------------------------------------- /kube-eagle/values.yaml: -------------------------------------------------------------------------------- 1 | # Default values for kube-eagle. 2 | replicaCount: 1 3 | 4 | image: 5 | repository: quay.io/google-cloud-tools/kube-eagle 6 | tag: 1.1.4 7 | pullPolicy: IfNotPresent 8 | 9 | service: 10 | type: ClusterIP 11 | port: 8080 12 | 13 | resources: {} 14 | # We usually recommend not to specify default resources and to leave this as a conscious 15 | # choice for the user. This also increases chances charts run on environments with little 16 | # resources, such as Minikube. If you do want to specify resources, uncomment the following 17 | # lines, adjust them as necessary, and remove the curly braces after 'resources:'. 18 | # limits: 19 | # cpu: 100m 20 | # memory: 128Mi 21 | # requests: 22 | # cpu: 100m 23 | # memory: 128Mi 24 | 25 | nodeSelector: {} 26 | 27 | tolerations: [] 28 | 29 | affinity: {} 30 | 31 | podAnnotations: {} 32 | 33 | # Create and use role based access resources 34 | rbac: 35 | create: true 36 | 37 | serviceAccountName: sa-kube-eagle 38 | 39 | priorityClassName: "" 40 | 41 | # Healthness and readiness probes need relatively large timeouts because they query the kubernetes master 42 | readinessProbe: 43 | timeoutSeconds: 5 44 | 45 | livenessProbe: 46 | timeoutSeconds: 5 47 | 48 | # Kube Eagle specific settings 49 | telemetry: 50 | host: 0.0.0.0 51 | port: 8080 52 | 53 | metricsNamespace: eagle 54 | 55 | logLevel: info 56 | 57 | podSecurityContext: 58 | runAsUser: 99 59 | fsGroup: 99 60 | containerSecurityContext: {} 61 | 62 | # Create ServiceMonitor custom resource required for Prometheus Operator to scrape the service 63 | serviceMonitor: 64 | create: false 65 | interval: 10s 66 | scrapeTimeout: 10s 67 | # By default, Prometheus Operator uses its own Release label as the selector for ServiceMonitors. 68 | # Update this to match the release name of your Prometheus Operator installation if 69 | # you aren't using custom match labels on your Prometheus definition. 70 | releaseLabel: prometheus-operator 71 | # Additional labels to add to the ServiceMonitor in case Prometheus Operator is configured with 72 | # different matchLabels configuration, to make sure it matches this ServiceMonitor. 73 | # If this is defined, the release label of the service monitor will match kube-eagle's one 74 | additionalLabels: 75 | 76 | env: {} 77 | # Add ability to include more opinionated environment variables 78 | # - name: POD_IP 79 | # valueFrom: 80 | # fieldRef: 81 | # fieldPath: status.podIP 82 | # - name: SERVICE_8000_NAME 83 | # value: metrics-server-exporter 84 | --------------------------------------------------------------------------------