forked from RemoteSync/librnms-helm-charts
Add helm chart
This commit is contained in:
3
charts/librenms/templates/_helpers.tpl
Normal file
3
charts/librenms/templates/_helpers.tpl
Normal file
@@ -0,0 +1,3 @@
|
||||
{{- define "librenms.configChecksum" -}}
|
||||
{{- include (print $.Template.BasePath "/librenms-configmap.yml") . | sha256sum -}}
|
||||
{{- end -}}
|
29
charts/librenms/templates/librenms-configmap.yml
Normal file
29
charts/librenms/templates/librenms-configmap.yml
Normal file
@@ -0,0 +1,29 @@
|
||||
---
|
||||
kind: ConfigMap
|
||||
apiVersion: v1
|
||||
metadata:
|
||||
name: {{ .Release.Name }}
|
||||
data:
|
||||
TZ: {{ .Values.librenms.timezone}}
|
||||
DB_TIMEOUT: "60"
|
||||
REDIS_HOST: {{ .Release.Name }}-redis-master
|
||||
REDIS_PORT: "6379"
|
||||
REDIS_DB: "0"
|
||||
RRDCACHED_SERVER: "{{ .Release.Name }}-rrdcached:42217"
|
||||
CACHE_DRIVER: redis
|
||||
SESSION_DRIVER: redis
|
||||
DB_HOST: {{ .Release.Name }}-mysql
|
||||
DB_USERNAME: {{.Values.mysql.auth.username}}
|
||||
DB_DATABASE: {{.Values.mysql.auth.database}}
|
||||
---
|
||||
kind: ConfigMap
|
||||
apiVersion: v1
|
||||
metadata:
|
||||
name: {{ .Release.Name }}-files
|
||||
data:
|
||||
custom.php: |-
|
||||
{{ tpl (.Files.Get "files/custom.php") . | indent 4 }}
|
||||
env: |-
|
||||
{{ tpl (.Files.Get "files/env") . | indent 4 }}
|
||||
init.sh: |-
|
||||
{{ tpl (.Files.Get "files/init.sh") . | indent 4 }}
|
42
charts/librenms/templates/librenms-cron.yml
Normal file
42
charts/librenms/templates/librenms-cron.yml
Normal file
@@ -0,0 +1,42 @@
|
||||
{{- if .Values.librenms.snmp_scanner.enabled }}
|
||||
apiVersion: batch/v1beta1
|
||||
kind: CronJob
|
||||
metadata:
|
||||
name: {{ .Release.Name }}-snmp-scanner
|
||||
spec:
|
||||
schedule: "{{.Values.librenms.snmp_scanner.cron }}"
|
||||
jobTemplate:
|
||||
spec:
|
||||
template:
|
||||
metadata:
|
||||
annotations:
|
||||
checksum/config: {{ include "librenms.configChecksum" . }}
|
||||
spec:
|
||||
volumes:
|
||||
- name: files
|
||||
configMap:
|
||||
name: {{ .Release.Name }}-files
|
||||
containers:
|
||||
- name: snmp-scanner
|
||||
image: '{{ .Values.librenms.image.repository }}:{{ .Values.librenms.image.tag }}'
|
||||
imagePullPolicy: Always
|
||||
envFrom:
|
||||
- configMapRef:
|
||||
name: {{ .Release.Name }}
|
||||
volumeMounts:
|
||||
- name: files
|
||||
mountPath: /opt/librenms/config.d/custom.php
|
||||
subPath: custom.php
|
||||
readOnly: true
|
||||
command:
|
||||
- '/opt/librenms/snmp-scan.py'
|
||||
- '-v'
|
||||
{{- if .Values.librenms.snmp_scanner.resources }}
|
||||
resources: {{ toYaml .Values.librenms.snmp_scanner.resources | nindent 14 }}
|
||||
{{- end }}
|
||||
{{- with .Values.librenms.snmp_scanner.extraEnvs }}
|
||||
env:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
restartPolicy: OnFailure
|
||||
{{ end }}
|
74
charts/librenms/templates/librenms-deployment.yml
Normal file
74
charts/librenms/templates/librenms-deployment.yml
Normal file
@@ -0,0 +1,74 @@
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: {{ .Release.Name }}-frontend
|
||||
spec:
|
||||
replicas: {{ .Values.librenms.frontend.replicas }}
|
||||
selector:
|
||||
matchLabels:
|
||||
app.kubernetes.io/name: {{ .Release.Name }}
|
||||
app.kubernetes.io/instance: frontend
|
||||
template:
|
||||
metadata:
|
||||
annotations:
|
||||
checksum/config: {{ include "librenms.configChecksum" . }}
|
||||
labels:
|
||||
app.kubernetes.io/name: {{ .Release.Name }}
|
||||
app.kubernetes.io/instance: frontend
|
||||
spec:
|
||||
volumes:
|
||||
- name: env-volume
|
||||
emptyDir: {}
|
||||
- name: files
|
||||
configMap:
|
||||
name: {{ .Release.Name }}-files
|
||||
- name: mysql
|
||||
secret:
|
||||
secretName: {{ .Release.Name }}-mysql
|
||||
optional: false
|
||||
initContainers:
|
||||
- name: init
|
||||
image: busybox:1.28
|
||||
command: ["/bin/sh","/data/files/init.sh"]
|
||||
volumeMounts:
|
||||
- name: env-volume
|
||||
mountPath: /data/env-volume
|
||||
- name: files
|
||||
mountPath: /data/files
|
||||
containers:
|
||||
- name: librenms
|
||||
image: '{{ .Values.librenms.image.repository }}:{{ .Values.librenms.image.tag }}'
|
||||
imagePullPolicy: Always
|
||||
envFrom:
|
||||
- configMapRef:
|
||||
name: {{ .Release.Name }}
|
||||
env:
|
||||
- name: DB_PASSWORD
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: {{ .Release.Name }}-mysql
|
||||
key: mysql-password
|
||||
{{- with .Values.librenms.extraEnvs }}
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
volumeMounts:
|
||||
- name: files
|
||||
mountPath: /data/files
|
||||
- name: files
|
||||
mountPath: /data/config/custom.php
|
||||
subPath: custom.php
|
||||
readOnly: true
|
||||
- name: mysql
|
||||
mountPath: "/opt/secrets/mysql/"
|
||||
- name: env-volume
|
||||
mountPath: /data/.env
|
||||
subPath: env
|
||||
{{- if .Values.librenms.frontend.resources }}
|
||||
resources: {{ toYaml .Values.librenms.frontend.resources | nindent 10 }}
|
||||
{{- end }}
|
||||
{{- if .Values.librenms.frontend.readinessProbe }}
|
||||
readinessProbe: {{ toYaml .Values.librenms.frontend.readinessProbe | nindent 10 }}
|
||||
{{- end }}
|
||||
ports:
|
||||
- name: http
|
||||
containerPort: 8000
|
75
charts/librenms/templates/librenms-poller-ss.yml
Normal file
75
charts/librenms/templates/librenms-poller-ss.yml
Normal file
@@ -0,0 +1,75 @@
|
||||
apiVersion: apps/v1
|
||||
kind: StatefulSet
|
||||
metadata:
|
||||
name: {{ .Release.Name }}-poller
|
||||
spec:
|
||||
replicas: {{ .Values.librenms.poller.replicas }}
|
||||
selector:
|
||||
matchLabels:
|
||||
app.kubernetes.io/name: {{ .Release.Name }}
|
||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||
serviceName: "poller"
|
||||
template:
|
||||
metadata:
|
||||
annotations:
|
||||
checksum/config: {{ include "librenms.configChecksum" . }}
|
||||
labels:
|
||||
app.kubernetes.io/name: {{ .Release.Name }}
|
||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||
spec:
|
||||
volumes:
|
||||
- name: env-volume
|
||||
emptyDir: {}
|
||||
- name: files
|
||||
configMap:
|
||||
name: {{ .Release.Name }}-files
|
||||
- name: mysql
|
||||
secret:
|
||||
secretName: {{ .Release.Name }}-mysql
|
||||
initContainers:
|
||||
- name: init
|
||||
image: busybox:1.28
|
||||
command: ["/bin/sh","/data/files/init.sh"]
|
||||
volumeMounts:
|
||||
- name: env-volume
|
||||
mountPath: /data/env-volume
|
||||
- name: files
|
||||
mountPath: /data/files
|
||||
containers:
|
||||
- name: poller
|
||||
image: '{{ .Values.librenms.image.repository }}:{{ .Values.librenms.image.tag }}'
|
||||
imagePullPolicy: Always
|
||||
env:
|
||||
- name: SIDECAR_DISPATCHER
|
||||
value: "1"
|
||||
- name: DB_PASSWORD
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: {{ .Release.Name }}-mysql
|
||||
key: mysql-password
|
||||
{{- with .Values.librenms.poller.extraEnvs }}
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
envFrom:
|
||||
- configMapRef:
|
||||
name: {{ .Release.Name }}
|
||||
volumeMounts:
|
||||
- name: files
|
||||
mountPath: /data/config/custom.php
|
||||
subPath: custom.php
|
||||
readOnly: true
|
||||
- name: env-volume
|
||||
mountPath: /data/.env
|
||||
subPath: env
|
||||
- name: mysql
|
||||
mountPath: "/opt/secrets/mysql/"
|
||||
readOnly: true
|
||||
{{- if .Values.librenms.poller.resources }}
|
||||
resources: {{ toYaml .Values.librenms.poller.resources | nindent 10 }}
|
||||
{{- end }}
|
||||
readinessProbe:
|
||||
exec:
|
||||
command: ["nc", "-z", "-v", "-w1", "{{ .Release.Name }}-mysql", "3306"]
|
||||
initialDelaySeconds: 0
|
||||
periodSeconds: 1
|
||||
failureThreshold: 3
|
13
charts/librenms/templates/librenms-service.yml
Normal file
13
charts/librenms/templates/librenms-service.yml
Normal file
@@ -0,0 +1,13 @@
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: {{ .Release.Name }}
|
||||
spec:
|
||||
selector:
|
||||
app.kubernetes.io/name: {{ .Release.Name }}
|
||||
app.kubernetes.io/instance: frontend
|
||||
ports:
|
||||
- name: {{ .Release.Name }}
|
||||
protocol: TCP
|
||||
port: 8000
|
||||
targetPort: 8000
|
62
charts/librenms/templates/rrdcached-deployment.yml
Normal file
62
charts/librenms/templates/rrdcached-deployment.yml
Normal file
@@ -0,0 +1,62 @@
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: {{ .Release.Name }}-rrdcached
|
||||
spec:
|
||||
strategy:
|
||||
type: Recreate
|
||||
replicas: 1
|
||||
selector:
|
||||
matchLabels:
|
||||
app.kubernetes.io/name: {{ .Release.Name }}
|
||||
app.kubernetes.io/instance: rrdcached
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app.kubernetes.io/name: {{ .Release.Name }}
|
||||
app.kubernetes.io/instance: rrdcached
|
||||
spec:
|
||||
securityContext:
|
||||
fsGroup: 1000
|
||||
volumes:
|
||||
{{- if .Values.librenms.rrdcached.persistence.enabled }}
|
||||
- name: db
|
||||
persistentVolumeClaim:
|
||||
claimName: {{ .Release.Name }}-rrdcached
|
||||
- name: journal
|
||||
persistentVolumeClaim:
|
||||
claimName: {{ .Release.Name }}-rrdcached-journal
|
||||
{{end}}
|
||||
- name: mysql
|
||||
secret:
|
||||
secretName: {{ .Release.Name }}-mysql
|
||||
optional: false # default setting; "mysecret" must exist
|
||||
|
||||
containers:
|
||||
- name: rrdcached
|
||||
image: '{{ .Values.librenms.rrdcached.image.repository }}:{{ .Values.librenms.rrdcached.image.tag }}'
|
||||
imagePullPolicy: Always
|
||||
{{- if .Values.librenms.rrdcached.persistence.enabled }}
|
||||
volumeMounts:
|
||||
- name: db
|
||||
mountPath: /data/db
|
||||
- name: journal
|
||||
mountPath: /data/journal
|
||||
- name: mysql
|
||||
mountPath: "/opt/mysql/"
|
||||
readOnly: true
|
||||
{{end}}
|
||||
env:
|
||||
{{- with .Values.librenms.rrdcached.envs }}
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- with .Values.librenms.rrdcached.extraEnvs }}
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- with .Values.librenms.rrdcached.livenessProbe }}
|
||||
livenessProbe:
|
||||
{{- toYaml . | nindent 10 }}
|
||||
{{- end }}
|
||||
{{- if .Values.librenms.rrdcached.resources }}
|
||||
resources: {{ toYaml .Values.librenms.rrdcached.resources | nindent 10 }}
|
||||
{{- end }}
|
31
charts/librenms/templates/rrdcached-pvc.yml
Normal file
31
charts/librenms/templates/rrdcached-pvc.yml
Normal file
@@ -0,0 +1,31 @@
|
||||
{{- if .Values.librenms.rrdcached.persistence.enabled }}
|
||||
apiVersion: v1
|
||||
kind: PersistentVolumeClaim
|
||||
metadata:
|
||||
name: {{ .Release.Name }}-rrdcached
|
||||
spec:
|
||||
accessModes:
|
||||
- ReadWriteOnce
|
||||
resources:
|
||||
requests:
|
||||
storage: {{ .Values.librenms.rrdcached.persistence.rrdcached.size }}
|
||||
{{- if .Values.librenms.rrdcached.persistence.rrdcached.storageClassName }}
|
||||
storageClassName: {{.Values.librenms.rrdcached.persistence.rrdcached.storageClassName}}
|
||||
{{end}}
|
||||
volumeMode: Filesystem
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: PersistentVolumeClaim
|
||||
metadata:
|
||||
name: {{ .Release.Name }}-rrdcached-journal
|
||||
spec:
|
||||
accessModes:
|
||||
- ReadWriteOnce
|
||||
resources:
|
||||
requests:
|
||||
storage: {{ .Values.librenms.rrdcached.persistence.journal.size }}
|
||||
{{- if .Values.librenms.rrdcached.persistence.journal.storageClassName }}
|
||||
storageClassName: {{.Values.librenms.rrdcached.persistence.journal.storageClassName}}
|
||||
{{end}}
|
||||
volumeMode: Filesystem
|
||||
{{end}}
|
28
charts/librenms/templates/rrdcached-service.yml
Normal file
28
charts/librenms/templates/rrdcached-service.yml
Normal file
@@ -0,0 +1,28 @@
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: {{ .Release.Name }}-rrdcached
|
||||
spec:
|
||||
selector:
|
||||
app.kubernetes.io/name: {{ .Release.Name }}
|
||||
app.kubernetes.io/instance: rrdcached
|
||||
ports:
|
||||
- name: rrdcached
|
||||
protocol: TCP
|
||||
port: 42217
|
||||
targetPort: 42217
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: {{ .Release.Name }}-rrdcached-headless
|
||||
spec:
|
||||
selector:
|
||||
app.kubernetes.io/name: {{ .Release.Name }}
|
||||
app.kubernetes.io/instance: rrdcached
|
||||
ports:
|
||||
- name: rrdcached
|
||||
protocol: TCP
|
||||
port: 42217
|
||||
targetPort: 42217
|
||||
clusterIP: None
|
Reference in New Issue
Block a user