Compare commits

...

24 Commits

Author SHA1 Message Date
4fcba6be6c Merge pull request #6 from nikdoof/aaisp2mqtt
Add aaisp2mqtt
2020-05-16 16:54:25 +01:00
9fa7c5254d Add aaisp2mqtt 2020-05-16 16:45:13 +01:00
f67ffc9a81 Merge pull request #5 from nikdoof/config-improvements
vsphere-influxdb-go: Improve configuration
2020-05-08 10:53:34 +01:00
5e16f5a805 [vsphere-influxdb-go] Build config.json from values 2020-05-08 10:43:58 +01:00
8b67ed8628 Merge pull request #4 from nikdoof/vsphere-influxdb-go-testing
Add Chart Testing and fixes for Deluge
2020-05-07 21:55:29 +01:00
0da018df2f Deluge fixes for #3 2020-05-07 21:47:48 +01:00
4dc7b0f9f2 Bump versions 2020-05-07 21:20:04 +01:00
4f8a41ab16 Fix all lint issues 2020-05-07 21:17:52 +01:00
10a68e25b9 Add missing newlines 2020-05-07 21:04:29 +01:00
c1461dd083 Update Chart.yaml files 2020-05-07 21:02:53 +01:00
338beeead8 Add chart testing 2020-05-07 20:46:16 +01:00
365626339a Update documentation 2020-05-07 19:55:03 +01:00
9a55b3f92c Merge pull request #1 from nikdoof/deluge-dockermods-fix
[deluge] Fix DockerMods
2020-05-07 17:13:36 +01:00
9701be4c26 Merge pull request #2 from nikdoof/calibre-web-fixes
[calibre-web] Fix DockerMods value
2020-05-07 16:46:25 +01:00
67b78606aa [deluge] Add missing CR at the end of Chart.yaml 2020-05-07 16:42:38 +01:00
c912051b78 [calibre-web] Fix DockerMods value 2020-05-07 16:39:01 +01:00
c9e3c402ad [deluge] Fix DockerMods 2020-05-07 16:38:26 +01:00
b26a4822da Revert lint testing changes 2020-05-07 16:33:35 +01:00
1f8d744ce0 Enable chart testing for master pushes 2020-05-07 16:31:40 +01:00
a8b6847b24 [vsphere-go-influxdb] New chart 2020-05-06 12:30:19 +01:00
7db31d9be6 [aaisp-to-mqtt] Cleanup templates and remove some issues 2020-05-06 12:17:41 +01:00
f110d08221 [aaisp-to-mqtt] Upgrade to 0.2.3 2020-05-06 08:20:16 +01:00
e6392a803f [aaisp-to-mqtt] Cleanup resources 2020-05-04 14:24:40 +01:00
9984fc2666 [aaisp-to-mqtt] Fix Base64 Function 2020-05-04 12:49:40 +01:00
37 changed files with 877 additions and 53 deletions

16
.editorconfig Normal file
View File

@@ -0,0 +1,16 @@
# EditorConfig helps us maintain consistent formatting on non-source files.
# Visit https://editorconfig.org/ for details on how to configure your editor to respect these settings.
# This is the terminal .editorconfig in this repository.
root = true
[*]
indent_style = space
trim_trailing_whitespace = true
insert_final_newline = true
end_of_line = lf
[*.{yaml,yml}]
indent_size = 2

32
README.md Normal file
View File

@@ -0,0 +1,32 @@
# Helm Charts
A small set of custom Helm charts to cover some smaller applications not covered by Stable and other repos.
[![License](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)
[![](https://github.com/nikdoof/helm-charts/workflows/Release%20Charts/badge.svg?branch=master)](https://github.com/nikdoof/helm-charts/actions)
## Usage
[Helm](https://helm.sh) must be installed to use the charts.
Please refer to Helm's [documentation](https://helm.sh/docs/) to get started.
Once Helm is set up properly, add the repo as follows:
```console
helm repo add nikdoof https://nikdoof.github.io/helm-charts/
```
You can then run `helm search nikdoof` to see the charts.
## Charts
See [charts folder](./charts) for a complete list.
* [aaisp2mqtt](./charts/aaisp2mqtt) - A tool to pull information from [Andrews & Arnold](https://www.aa.net.uk/) CHAOSv2 API and output to MQTT
* [calibre-web](./charts/calibre-web) - Web app for browsing, reading and downloading eBooks stored in a Calibre database
* [deluge](./charts/deluge) - Deluge torrent client
## License
[MIT License](./LICENSE)

View File

@@ -2,4 +2,14 @@ apiVersion: v1
appVersion: "0.2"
description: Pulls data from the AAISP CHAOSv2 API into MQTT
name: aaisp-to-mqtt
version: 0.2.0
version: 0.2.5
keywords:
- aaisp
- mqtt
home: https://github.com/nikdoof/aaisp-to-mqtt
sources:
- https://hub.docker.com/r/nikdoof/aaisp-to-mqtt/
- https://github.com/natm/aaisp-to-mqtt
maintainers:
- name: nikdoof
email: andy@tensixtyone.com

View File

@@ -0,0 +1,4 @@
mqtt:
broker: localhost
existingSecretName: aaisp-to-mqtt-secret

View File

@@ -0,0 +1,6 @@
aaisp:
username: test1@a
password: TesttestTest
mqtt:
broker: localhost

View File

@@ -15,10 +15,16 @@ metadata:
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/managed-by: {{ include "aaisp-to-mqtt.name" . }}
spec:
concurrencyPolicy: {{ .Values.cronjob.concurrencyPolicy }}
schedule: {{ .Values.cronjob.schedule | quote }}
successfulJobsHistoryLimit: {{ .Values.cronjob.successfulJobsHistoryLimit }}
failedJobsHistoryLimit: {{ .Values.cronjob.failedJobsHistoryLimit }}
concurrencyPolicy: Forbid
{{- if .Values.cronjob.startingDeadlineSeconds }}
startingDeadlineSeconds: {{ .Values.cronjob.startingDeadlineSeconds }}
{{- end }}
jobTemplate:
spec:
backoffLimit: 0
template:
metadata:
labels:
@@ -38,37 +44,37 @@ spec:
- name: {{ .Chart.Name }}
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
imagePullPolicy: {{ .Values.image.pullPolicy }}
resources:
{{ toYaml .Values.resources | indent 16 }}
env:
- name: AAISP_USERNAME
valueFrom:
secretKeyRef:
name: {{- default "aaisp-to-mqtt-secret" .Values.existingSecretName }}
name: {{ default "aaisp-to-mqtt-secret" .Values.existingSecretName }}
key: aaisp.username
- name: AAISP_PASSWORD
valueFrom:
secretKeyRef:
name: {{- default "aaisp-to-mqtt-secret" .Values.existingSecretName }}
name: {{ default "aaisp-to-mqtt-secret" .Values.existingSecretName }}
key: aaisp.password
- name: MQTT_BROKER
value: {{ .Values.mqtt.broker }}
- name: MQTT_PORT
value: {{- default 1883 .Values.mqtt.port }}
value: "{{ default 1883 .Values.mqtt.port }}"
{{- if .Values.mqtt.authenticated }}
- name: MQTT_USERNAME
valueFrom:
secretKeyRef:
name: {{- default "aaisp-to-mqtt-secret" .Values.existingSecretName }}
name: {{ default "aaisp-to-mqtt-secret" .Values.existingSecretName }}
key: mqtt.username
- name: MQTT_PASSWORD
valueFrom:
secretKeyRef:
name: {{- default "aaisp-to-mqtt-secret" .Values.existingSecretName }}
name: {{ default "aaisp-to-mqtt-secret" .Values.existingSecretName }}
key: mqtt.password
{{- end }}
- name: MQTT_TOPIC_PREFIX
value: {{ default "aaisp" .Values.mqtt.topicPrefix }}
resources:
{{ toYaml .Values.resources | indent 16 }}
{{- with .Values.nodeSelector }}
nodeSelector:
{{ toYaml . | indent 12 }}
@@ -81,10 +87,3 @@ spec:
tolerations:
{{ toYaml . | indent 12 }}:
{{- end }}
schedule: {{ .Values.schedule | quote }}
successfulJobsHistoryLimit: {{ .Values.cronjob.successfulJobsHistoryLimit }}
failedJobsHistoryLimit: {{ .Values.cronjob.failedJobsHistoryLimit }}
concurrencyPolicy: Forbid
{{- if .Values.cronjob.startingDeadlineSeconds }}
startingDeadlineSeconds: {{ .Values.cronjob.startingDeadlineSeconds }}
{{- end }}

View File

@@ -1,5 +1,5 @@
{{- if not (.Values.existingSecretName) }}
---
{{- if not (.Values.existingSecretName) }}
apiVersion: v1
kind: Secret
metadata:
@@ -11,10 +11,10 @@ metadata:
app.kubernetes.io/managed-by: {{ include "aaisp-to-mqtt.name" . }}
type: Opaque
data:
aaisp.username: {{ .Values.aaisp.username | base64 }}
aaisp.password: {{ .Values.aaisp.password | base64 }}
aaisp.username: {{ .Values.aaisp.username | b64enc }}
aaisp.password: {{ .Values.aaisp.password | b64enc }}
{{- if .Values.mqtt.authenticated }}
mqtt.username: {{ .Values.mqtt.username | base64 }}
mqtt.password: {{ .Values.mqtt.password | base64 }}
mqtt.username: {{ .Values.mqtt.username | b64enc }}
mqtt.password: {{ .Values.mqtt.password | b64enc }}
{{- end }}
{{- end }}

View File

@@ -6,9 +6,9 @@ replicaCount: 1
image:
repository: nikdoof/aaisp-to-mqtt
tag: latest
tag: 0.2.3
pullPolicy: IfNotPresent
imagePullSecrets: []
# imagePullSecrets: []
nameOverride: ""
fullnameOverride: ""
@@ -19,7 +19,7 @@ fullnameOverride: ""
## Connection details
##
aaisp:
aaisp: {}
# username: user1@a
# password: password
@@ -32,7 +32,7 @@ mqtt:
# topicPrefix: aaisp
cronjob:
schedule: "*/10 * * *"
schedule: "*/10 * * * *"
successfulJobsHistoryLimit: 3
failedJobsHistoryLimit: 1
# startingDeadlineSeconds: 10

View File

@@ -0,0 +1,22 @@
# Patterns to ignore when building packages.
# This supports shell glob matching, relative path matching, and
# negation (prefixed with !). Only one pattern per line.
.DS_Store
# Common VCS dirs
.git/
.gitignore
.bzr/
.bzrignore
.hg/
.hgignore
.svn/
# Common backup files
*.swp
*.bak
*.tmp
*~
# Various IDEs
.project
.idea/
*.tmproj
.vscode/

View File

@@ -0,0 +1,15 @@
apiVersion: v1
appVersion: "0.3.0"
description: Pulls data from the AAISP CHAOSv2 API into MQTT
name: aaisp2mqtt
version: 0.3.0
keywords:
- aaisp
- mqtt
home: https://github.com/nikdoof/aaisp2mqtt
sources:
- https://hub.docker.com/r/nikdoof/aaisp2mqtt/
- https://github.com/natm/aaisp2mqtt
maintainers:
- name: nikdoof
email: andy@tensixtyone.com

View File

@@ -0,0 +1,4 @@
mqtt:
broker: localhost
existingSecretName: aaisp2mqtt-secret

View File

@@ -0,0 +1,9 @@
aaisp:
username: test1@a
password: TesttestTest
mqtt:
broker: localhost
homeassistant:
enabled: true

View File

@@ -0,0 +1,6 @@
aaisp:
username: test1@a
password: TesttestTest
mqtt:
broker: localhost

View File

@@ -0,0 +1,56 @@
{{/* vim: set filetype=mustache: */}}
{{/*
Expand the name of the chart.
*/}}
{{- define "aaisp2mqtt.name" -}}
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}}
{{- end -}}
{{/*
Create a default fully qualified app name.
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
If release name contains chart name it will be used as a full name.
*/}}
{{- define "aaisp2mqtt.fullname" -}}
{{- if .Values.fullnameOverride -}}
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}}
{{- else -}}
{{- $name := default .Chart.Name .Values.nameOverride -}}
{{- if contains $name .Release.Name -}}
{{- .Release.Name | trunc 63 | trimSuffix "-" -}}
{{- else -}}
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}}
{{- end -}}
{{- end -}}
{{- end -}}
{{/*
Create chart name and version as used by the chart label.
*/}}
{{- define "aaisp2mqtt.chart" -}}
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}}
{{- end -}}
{{/*
Common labels
*/}}
{{- define "aaisp2mqtt.labels" -}}
app.kubernetes.io/name: {{ include "aaisp2mqtt.name" . }}
helm.sh/chart: {{ include "aaisp2mqtt.chart" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
{{- if .Chart.AppVersion }}
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
{{- end }}
app.kubernetes.io/managed-by: {{ .Release.Service }}
{{- end -}}
{{/*
Create the name of the service account to use
*/}}
{{- define "aaisp2mqtt.serviceAccountName" -}}
{{- if .Values.serviceAccount.create -}}
{{ default (include "aaisp2mqtt.fullname" .) .Values.serviceAccount.name }}
{{- else -}}
{{ default "default" .Values.serviceAccount.name }}
{{- end -}}
{{- end -}}

View File

@@ -0,0 +1,97 @@
---
apiVersion: batch/v1beta1
kind: CronJob
metadata:
name: {{ include "aaisp2mqtt.fullname" . }}-cronjob
{{- if .Values.deploymentAnnotations }}
annotations:
{{- range $key, $value := .Values.deploymentAnnotations }}
{{ $key }}: {{ $value | quote }}
{{- end }}
{{- end }}
labels:
app.kubernetes.io/name: {{ include "aaisp2mqtt.name" . }}
helm.sh/chart: {{ include "aaisp2mqtt.chart" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/managed-by: {{ include "aaisp2mqtt.name" . }}
spec:
schedule: {{ .Values.cronjob.schedule | quote }}
successfulJobsHistoryLimit: {{ .Values.cronjob.successfulJobsHistoryLimit }}
failedJobsHistoryLimit: {{ .Values.cronjob.failedJobsHistoryLimit }}
concurrencyPolicy: Forbid
{{- if .Values.cronjob.startingDeadlineSeconds }}
startingDeadlineSeconds: {{ .Values.cronjob.startingDeadlineSeconds }}
{{- end }}
jobTemplate:
spec:
backoffLimit: 0
template:
metadata:
labels:
app.kubernetes.io/name: {{ include "aaisp2mqtt.name" . }}
helm.sh/chart: {{ include "aaisp2mqtt.chart" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/managed-by: {{ include "aaisp2mqtt.name" . }}
spec:
restartPolicy: Never
{{- if .Values.image.pullSecrets }}
imagePullSecrets:
{{- range .Values.image.pullSecrets }}
- name: {{ . }}
{{- end }}
{{- end }}
containers:
- name: {{ .Chart.Name }}
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
imagePullPolicy: {{ .Values.image.pullPolicy }}
resources:
{{ toYaml .Values.resources | indent 16 }}
env:
- name: AAISP_USERNAME
valueFrom:
secretKeyRef:
name: {{ default "aaisp2mqtt-secret" .Values.existingSecretName }}
key: aaisp.username
- name: AAISP_PASSWORD
valueFrom:
secretKeyRef:
name: {{ default "aaisp2mqtt-secret" .Values.existingSecretName }}
key: aaisp.password
- name: MQTT_BROKER
value: {{ .Values.mqtt.broker }}
- name: MQTT_PORT
value: "{{ default 1883 .Values.mqtt.port }}"
{{- if .Values.mqtt.authenticated }}
- name: MQTT_USERNAME
valueFrom:
secretKeyRef:
name: {{ default "aaisp2mqtt-secret" .Values.existingSecretName }}
key: mqtt.username
- name: MQTT_PASSWORD
valueFrom:
secretKeyRef:
name: {{ default "aaisp2mqtt-secret" .Values.existingSecretName }}
key: mqtt.password
{{- end }}
- name: MQTT_TOPIC_PREFIX
value: {{ default "aaisp" .Values.mqtt.topicPrefix }}
{{- if .Values.homeassistant.enabled }}
- name: HOMEASSISTANT_ENABLED
value: '{{ .Values.homeassistant.enabled }}'
{{- if .Values.homeassistant.discoveryPrefix }}
- name: HOMEASSISTANT_DISCOVERY_PREFIX
value: {{ .Values.homeassistant.discoveryPrefix }}
{{- end }}
{{- end }}
{{- with .Values.nodeSelector }}
nodeSelector:
{{ toYaml . | indent 12 }}
{{- end }}
{{- with .Values.affinity }}
affinity:
{{ toYaml . | indent 12 }}
{{- end }}
{{- with .Values.tolerations }}
tolerations:
{{ toYaml . | indent 12 }}:
{{- end }}

View File

@@ -0,0 +1,20 @@
---
{{- if not (.Values.existingSecretName) }}
apiVersion: v1
kind: Secret
metadata:
name: aaisp2mqtt-secret
labels:
app.kubernetes.io/name: {{ include "aaisp2mqtt.name" . }}
helm.sh/chart: {{ include "aaisp2mqtt.chart" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/managed-by: {{ include "aaisp2mqtt.name" . }}
type: Opaque
data:
aaisp.username: {{ .Values.aaisp.username | b64enc }}
aaisp.password: {{ .Values.aaisp.password | b64enc }}
{{- if .Values.mqtt.authenticated }}
mqtt.username: {{ .Values.mqtt.username | b64enc }}
mqtt.password: {{ .Values.mqtt.password | b64enc }}
{{- end }}
{{- end }}

View File

@@ -0,0 +1,60 @@
# Default values for aaisp2mqtt.
# This is a YAML-formatted file.
# Declare variables to be passed into your templates.
replicaCount: 1
image:
repository: nikdoof/aaisp2mqtt
tag: 0.3.0
pullPolicy: IfNotPresent
# imagePullSecrets: []
nameOverride: ""
fullnameOverride: ""
## Use a pre-existing secret for login information
##
# existingSecretName: existing-secret
## Connection details
##
aaisp: {}
# username: user1@a
# password: password
mqtt:
# broker: localhost
port: 1883
authenticated: false
# username: kube
# password: kube
# topicPrefix: aaisp
homeassistant:
enabled: false
# discoveryPrefix: homeassistant
cronjob:
schedule: "*/10 * * * *"
successfulJobsHistoryLimit: 3
failedJobsHistoryLimit: 1
# startingDeadlineSeconds: 10
resources: {}
# We usually recommend not to specify default resources and to leave this as a conscious
# choice for the user. This also increases chances charts run on environments with little
# resources, such as Minikube. If you do want to specify resources, uncomment the following
# lines, adjust them as necessary, and remove the curly braces after 'resources:'.
# limits:
# cpu: 100m
# memory: 128Mi
# requests:
# cpu: 100m
# memory: 128Mi
nodeSelector: {}
tolerations: []
affinity: {}

View File

@@ -2,15 +2,14 @@ apiVersion: v1
appVersion: 0.6.6-ls58
description: A simple web viewer for Calibre libraries
name: calibre-web
version: 1.1.1
version: 1.1.3
keywords:
- calibre-web
- calibre
home: https://github.com/nikdoof/home-k8s-flux/tree/master/charts/calibre-web
home: https://github.com/janeczku/calibre-web
icon: https://raw.githubusercontent.com/linuxserver/docker-templates/master/linuxserver.io/img/calibre-web-icon.png
sources:
- https://hub.docker.com/r/linuxserver/calibre-web/
- https://github.com/janeczku/calibre-web
maintainers:
- name: nikdoof
email: andy@tensixtyone.com

View File

@@ -5,7 +5,8 @@ This is a helm chart for [calibre-web](https://calibre-web.com/) leveraging the
## TL;DR;
```shell
$ helm install ./calibre-web
$ helm repo add nikdoof https://nikdoof.github.io/helm-charts/
$ helm install calibre-web
```
## Installing the Chart
@@ -13,7 +14,7 @@ $ helm install ./calibre-web
To install the chart with the release name `my-release`:
```console
helm install --name my-release ./calibre-web
helm install --name my-release calibre-web
```
## Uninstalling the Chart
@@ -101,4 +102,4 @@ If you get `Error: rendered manifests contain a resource that already exists. Un
---
Read through the [values.yaml](https://github.com/nikdoof/home-k8s-flux/blob/master/charts/calibre-web/values.yaml) file. It has several commented out suggested values.
Read through the [values.yaml](https://github.com/nikdoof/helm-charts/tree/master/charts/calibre-web/values.yaml) file. It has several commented out suggested values.

View File

@@ -61,7 +61,7 @@ spec:
value: "{{ .Values.puid }}"
- name: PGID
value: "{{ .Values.pgid }}"
{{- if .values.dockerMods }}
{{- if .Values.dockerMods }}
- name: DOCKER_MODS
value: {{ .Values.dockerMods }}
{{- end }}

View File

@@ -1,17 +1,16 @@
apiVersion: v1
description: Deluge is a Python BitTorrent client based on libtorrent
name: deluge
version: 1.1.0
version: 1.2.0
keywords:
- deluge
- libtorrent
home: https://github.com/nikdoof/helm-charts/charts/deluge
home: https://github.com/deluge-torrent/deluge
sources:
- https://hub.docker.com/r/linuxserver/deluge/
- https://github.com/janeczku/deluge
dependencies: []
maintainers:
- name: nikdoof
email: andy@tensixtyone.com
icon: https://raw.githubusercontent.com/linuxserver/docker-templates/master/linuxserver.io/img/deluge-icon.png
appVersion: 2.0.3-2201906121747ubuntu18.04.1-ls57
appVersion: 2.0.3-2201906121747ubuntu18.04.1-ls57

View File

@@ -5,7 +5,8 @@ This is a helm chart for [deluge](https://deluge.com/) leveraging the [Linuxserv
## TL;DR;
```shell
$ helm install ./deluge
$ helm repo add nikdoof https://nikdoof.github.io/helm-charts/
$ helm install deluge
```
## Installing the Chart
@@ -13,7 +14,7 @@ $ helm install ./deluge
To install the chart with the release name `my-release`:
```console
helm install --name my-release ./deluge
helm install --name my-release deluge
```
## Uninstalling the Chart
@@ -105,4 +106,4 @@ If you get `Error: rendered manifests contain a resource that already exists. Un
---
Read through the [values.yaml](https://github.com/nikdoof/home-k8s-flux/blob/master/charts/deluge/values.yaml) file. It has several commented out suggested values.
Read through the [values.yaml](https://github.com/nikdoof/helm-charts/tree/master/charts/deluge/values.yaml) file. It has several commented out suggested values.

View File

@@ -0,0 +1 @@
---

View File

@@ -1,3 +1,5 @@
---
{{ if .Values.btservice.enabled }}
apiVersion: v1
kind: Service
metadata:
@@ -40,21 +42,14 @@ spec:
externalTrafficPolicy: {{ .Values.btservice.externalTrafficPolicy }}
{{- end }}
ports:
- name: daemon
port: 58846
protocol: TCP
targetPort: daemon
{{ if (eq .Values.btservice.type "NodePort") }}
nodePort: 58846
{{ end }}
- name: bt-tcp
port: 58946
protocol: TCP
targetPort: bt-tcp
{{ if (eq .Values.btservice.type "NodePort") }}
nodePort: 58946
nodePort: {{ default 30846 .Values.btservice.nodePort }}
{{ end }}
selector:
app.kubernetes.io/name: {{ include "deluge.name" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
{{ end }}

View File

@@ -1,3 +1,5 @@
---
{{ if .Values.btservice.enabled }}
apiVersion: v1
kind: Service
metadata:
@@ -45,9 +47,9 @@ spec:
protocol: UDP
targetPort: bt-udp
{{ if (eq .Values.btservice.type "NodePort") }}
nodePort: 58946
nodePort: {{ default 30846 .Values.btservice.nodePort }}
{{ end }}
selector:
app.kubernetes.io/name: {{ include "deluge.name" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
{{ end }}

View File

@@ -0,0 +1,53 @@
apiVersion: v1
kind: Service
metadata:
name: {{ template "deluge.fullname" . }}-daemon
labels:
app.kubernetes.io/name: {{ include "deluge.name" . }}
helm.sh/chart: {{ include "deluge.chart" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/managed-by: {{ .Release.Service }}
{{- if .Values.daemonservice.labels }}
{{ toYaml .Values.daemonservice.labels | indent 4 }}
{{- end }}
{{- with .Values.daemonservice.annotations }}
annotations:
{{ toYaml . | indent 4 }}
{{- end }}
spec:
{{- if (or (eq .Values.daemonservice.type "ClusterIP") (empty .Values.daemonservice.type)) }}
type: ClusterIP
{{- if .Values.daemonservice.clusterIP }}
clusterIP: {{ .Values.daemonservice.clusterIP }}
{{end}}
{{- else if eq .Values.daemonservice.type "LoadBalancer" }}
type: {{ .Values.daemonservice.type }}
{{- if .Values.daemonservice.loadBalancerIP }}
loadBalancerIP: {{ .Values.daemonservice.loadBalancerIP }}
{{- end }}
{{- if .Values.daemonservice.loadBalancerSourceRanges }}
loadBalancerSourceRanges:
{{ toYaml .Values.daemonservice.loadBalancerSourceRanges | indent 4 }}
{{- end -}}
{{- else }}
type: {{ .Values.daemonservice.type }}
{{- end }}
{{- if .Values.daemonservice.externalIPs }}
externalIPs:
{{ toYaml .Values.daemonservice.externalIPs | indent 4 }}
{{- end }}
{{- if .Values.daemonservice.externalTrafficPolicy }}
externalTrafficPolicy: {{ .Values.daemonservice.externalTrafficPolicy }}
{{- end }}
ports:
- name: daemon
port: 58846
protocol: TCP
targetPort: daemon
{{ if (eq .Values.daemonservice.type "NodePort") }}
nodePort: {{ default 30846 .Values.daemonservice.nodePort }}
{{ end }}
selector:
app.kubernetes.io/name: {{ include "deluge.name" . }}
app.kubernetes.io/instance: {{ .Release.Name }}

View File

@@ -70,7 +70,7 @@ spec:
value: "{{ .Values.puid }}"
- name: PGID
value: "{{ .Values.pgid }}"
{{- if .values.dockerMods }}
{{- if .Values.dockerMods }}
- name: DOCKER_MODS
value: {{ .Values.dockerMods }}
{{- end }}

View File

@@ -32,6 +32,7 @@ pgid: 1001
##
# dockerMods: linuxserver/deluge:ssh
## Service for the WebUI port
webuiservice:
type: ClusterIP
port: 8112
@@ -53,8 +54,10 @@ webuiservice:
## Set the externalTrafficPolicy in the Service to either Cluster or Local
# externalTrafficPolicy: Cluster
btservice:
type: NodePort
## Service for the Daemon port
daemonservice:
type: ClusterIP
port:
## Specify the nodePort value for the LoadBalancer and NodePort service types.
## ref: https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport
##
@@ -73,6 +76,31 @@ btservice:
## Set the externalTrafficPolicy in the Service to either Cluster or Local
# externalTrafficPolicy: Cluster
## Service for the BT taffic port - ideally these should be a LB due to a high port
## and also sharing TCP and UDP services on the same port.
btservice:
enabled: false
type: LoadBalancer
## Specify the nodePort value for the LoadBalancer and NodePort service types.
## ref: https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport
##
# nodePort:
## Provide any additional annotations which may be required. This can be used to
## set the LoadBalancer service type to internal only.
## ref: https://kubernetes.io/docs/concepts/services-networking/service/#internal-load-balancer
##
annotations: {}
# annotations:
# metallb.universe.tf/allow-shared-ip: deluge
labels: {}
## Use loadBalancerIP to request a specific static IP,
## otherwise leave blank
##
loadBalancerIP:
# loadBalancerSourceRanges: []
## Set the externalTrafficPolicy in the Service to either Cluster or Local
# externalTrafficPolicy: Cluster
ingress:
enabled: false
annotations: {}

View File

@@ -0,0 +1,22 @@
# Patterns to ignore when building packages.
# This supports shell glob matching, relative path matching, and
# negation (prefixed with !). Only one pattern per line.
.DS_Store
# Common VCS dirs
.git/
.gitignore
.bzr/
.bzrignore
.hg/
.hgignore
.svn/
# Common backup files
*.swp
*.bak
*.tmp
*~
# Various IDEs
.project
.idea/
*.tmproj
.vscode/

View File

@@ -0,0 +1,16 @@
apiVersion: v1
appVersion: "0.8.5"
description: Collect VMware vCenter and ESXi performance metrics and send them to InfluxDB
name: vsphere-influxdb-go
version: 0.2.0
keywords:
- vsphere
- influxdb
- esx
home: https://github.com/Oxalide/vsphere-influxdb-go
sources:
- https://hub.docker.com/r/nikdoof/vsphere-influxdb-go/
- https://github.com/janeczku/calibre-web
maintainers:
- name: nikdoof
email: andy@tensixtyone.com

View File

@@ -0,0 +1,7 @@
vsphere:
hostname: vcenter
username: test
password: test
influxdb:
hostname: test

View File

@@ -0,0 +1,56 @@
{{/* vim: set filetype=mustache: */}}
{{/*
Expand the name of the chart.
*/}}
{{- define "vsphere-influxdb-go.name" -}}
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}}
{{- end -}}
{{/*
Create a default fully qualified app name.
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
If release name contains chart name it will be used as a full name.
*/}}
{{- define "vsphere-influxdb-go.fullname" -}}
{{- if .Values.fullnameOverride -}}
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}}
{{- else -}}
{{- $name := default .Chart.Name .Values.nameOverride -}}
{{- if contains $name .Release.Name -}}
{{- .Release.Name | trunc 63 | trimSuffix "-" -}}
{{- else -}}
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}}
{{- end -}}
{{- end -}}
{{- end -}}
{{/*
Create chart name and version as used by the chart label.
*/}}
{{- define "vsphere-influxdb-go.chart" -}}
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}}
{{- end -}}
{{/*
Common labels
*/}}
{{- define "vsphere-influxdb-go.labels" -}}
app.kubernetes.io/name: {{ include "vsphere-influxdb-go.name" . }}
helm.sh/chart: {{ include "vsphere-influxdb-go.chart" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
{{- if .Chart.AppVersion }}
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
{{- end }}
app.kubernetes.io/managed-by: {{ .Release.Service }}
{{- end -}}
{{/*
Create the name of the service account to use
*/}}
{{- define "vsphere-influxdb-go.serviceAccountName" -}}
{{- if .Values.serviceAccount.create -}}
{{ default (include "vsphere-influxdb-go.fullname" .) .Values.serviceAccount.name }}
{{- else -}}
{{ default "default" .Values.serviceAccount.name }}
{{- end -}}
{{- end -}}

View File

@@ -0,0 +1,13 @@
---
apiVersion: v1
kind: ConfigMap
metadata:
name: vsphere-influxdb-go-config
labels:
app.kubernetes.io/name: {{ include "vsphere-influxdb-go.name" . }}
helm.sh/chart: {{ include "vsphere-influxdb-go.chart" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/managed-by: {{ include "vsphere-influxdb-go.name" . }}
data:
config.json: |-
{{ toJson .Values.config | indent 4}}

View File

@@ -0,0 +1,98 @@
---
apiVersion: batch/v1beta1
kind: CronJob
metadata:
name: {{ include "vsphere-influxdb-go.fullname" . }}-cronjob
{{- if .Values.deploymentAnnotations }}
annotations:
{{- range $key, $value := .Values.deploymentAnnotations }}
{{ $key }}: {{ $value | quote }}
{{- end }}
{{- end }}
labels:
app.kubernetes.io/name: {{ include "vsphere-influxdb-go.name" . }}
helm.sh/chart: {{ include "vsphere-influxdb-go.chart" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/managed-by: {{ include "vsphere-influxdb-go.name" . }}
spec:
schedule: {{ .Values.cronjob.schedule | quote }}
successfulJobsHistoryLimit: {{ .Values.cronjob.successfulJobsHistoryLimit }}
failedJobsHistoryLimit: {{ .Values.cronjob.failedJobsHistoryLimit }}
concurrencyPolicy: Forbid
{{- if .Values.cronjob.startingDeadlineSeconds }}
startingDeadlineSeconds: {{ .Values.cronjob.startingDeadlineSeconds }}
{{- end }}
jobTemplate:
spec:
backoffLimit: 0
template:
metadata:
labels:
app.kubernetes.io/name: {{ include "vsphere-influxdb-go.name" . }}
helm.sh/chart: {{ include "vsphere-influxdb-go.chart" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/managed-by: {{ include "vsphere-influxdb-go.name" . }}
spec:
restartPolicy: Never
{{- if .Values.image.pullSecrets }}
imagePullSecrets:
{{- range .Values.image.pullSecrets }}
- name: {{ . }}
{{- end }}
{{- end }}
containers:
- name: {{ .Chart.Name }}
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
command: ["/vsphere-influxdb-go", "-config=/config/config.json"]
imagePullPolicy: {{ .Values.image.pullPolicy }}
resources:
{{ toYaml .Values.resources | indent 16 }}
env:
- name: VSPHERE_HOSTNAME
value: {{ .Values.vsphere.hostname }}
- name: VSPHERE_USERNAME
valueFrom:
secretKeyRef:
name: {{ default "vsphere-influxdb-go-secret" .Values.existingSecretName }}
key: vsphere.username
- name: VSPHERE_PASSWORD
valueFrom:
secretKeyRef:
name: {{ default "vsphere-influxdb-go-secret" .Values.existingSecretName }}
key: vsphere.password
- name: INFLUX_HOSTNAME
value: {{ .Values.influxdb.hostname }}
- name: INFLUX_DATABASE
value: {{ .Values.influxdb.database }}
{{- if .Values.influxdb.authenticated }}
- name: INFLUX_USERNAME
valueFrom:
secretKeyRef:
name: {{ default "vsphere-influxdb-go-secret" .Values.existingSecretName }}
key: influxdb.username
- name: INFLUX_PASSWORD
valueFrom:
secretKeyRef:
name: {{ default "vsphere-influxdb-go-secret" .Values.existingSecretName }}
key: influxdb.password
{{- end }}
volumeMounts:
- name: config-volume
mountPath: /config
volumes:
- name: config-volume
configMap:
name: vsphere-influxdb-go-config
{{- with .Values.nodeSelector }}
nodeSelector:
{{ toYaml . | indent 12 }}
{{- end }}
{{- with .Values.affinity }}
affinity:
{{ toYaml . | indent 12 }}
{{- end }}
{{- with .Values.tolerations }}
tolerations:
{{ toYaml . | indent 12 }}:
{{- end }}

View File

@@ -0,0 +1,20 @@
---
{{- if not (.Values.existingSecretName) }}
apiVersion: v1
kind: Secret
metadata:
name: vsphere-influxdb-go-secret
labels:
app.kubernetes.io/name: {{ include "vsphere-influxdb-go.name" . }}
helm.sh/chart: {{ include "vsphere-influxdb-go.chart" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/managed-by: {{ include "vsphere-influxdb-go.name" . }}
type: Opaque
data:
vsphere.username: {{ .Values.vsphere.username | b64enc }}
vsphere.password: {{ .Values.vsphere.password | b64enc }}
{{- if .Values.influxdb.authenticated }}
influxdb.username: {{ .Values.influxdb.username | b64enc }}
influxdb.password: {{ .Values.influxdb.password | b64enc }}
{{- end }}
{{- end }}

View File

@@ -0,0 +1,155 @@
# Default values for vsphere-influxdb-go.
# This is a YAML-formatted file.
# Declare variables to be passed into your templates.
replicaCount: 1
image:
repository: nikdoof/vsphere-influxdb-go
tag: latest
pullPolicy: IfNotPresent
# imagePullSecrets: []
nameOverride: ""
fullnameOverride: ""
## Use a pre-existing secret for login information
##
# existingSecretName: existing-secret
## Connection details
##
vsphere:
hostname:
username:
password:
influxdb:
hostname: http://influxdb:8086
authenticated: false
# username:
# password:
database: vmware_performance
cronjob:
schedule: "* * * * *"
successfulJobsHistoryLimit: 3
failedJobsHistoryLimit: 1
# startingDeadlineSeconds: 10
## Configuration data that is wrote to vsphere-influxdb-go
## If you need additional metrics then this is where you can
## add them.
##
config:
Domain: ".lab"
RemoveHostDomainName: false
Interval: 60
VCenters: {}
InfluxDB: {}
Metrics:
- ObjectType:
- VirtualMachine
- HostSystem
Definition:
- Metric: cpu.usage.average
Instances: "*"
- Metric: cpu.usage.maximum
Instances: "*"
- Metric: cpu.usagemhz.average
Instances: "*"
- Metric: cpu.usagemhz.maximum
Instances: "*"
- Metric: cpu.wait.summation
Instances: "*"
- Metric: cpu.system.summation
Instances: "*"
- Metric: cpu.ready.summation
Instances: "*"
- Metric: mem.usage.average
Instances: "*"
- Metric: mem.usage.maximum
Instances: "*"
- Metric: mem.consumed.average
Instances: "*"
- Metric: mem.consumed.maximum
Instances: "*"
- Metric: mem.active.average
Instances: "*"
- Metric: mem.active.maximum
Instances: "*"
- Metric: mem.vmmemctl.average
Instances: "*"
- Metric: mem.vmmemctl.maximum
Instances: "*"
- Metric: mem.totalCapacity.average
Instances: "*"
- Metric: net.packetsRx.summation
Instances: "*"
- Metric: net.packetsTx.summation
Instances: "*"
- Metric: net.throughput.usage.average
Instances: "*"
- Metric: net.received.average
Instances: "*"
- Metric: net.transmitted.average
Instances: "*"
- Metric: net.throughput.usage.nfs.average
Instances: "*"
- Metric: datastore.numberReadAveraged.average
Instances: "*"
- Metric: datastore.numberWriteAveraged.average
Instances: "*"
- Metric: datastore.read.average
Instances: "*"
- Metric: datastore.write.average
Instances: "*"
- Metric: datastore.totalReadLatency.average
Instances: "*"
- Metric: datastore.totalWriteLatency.average
Instances: "*"
- Metric: mem.capacity.provisioned.average
Instances: "*"
- Metric: cpu.corecount.provisioned.average
Instances: "*"
- ObjectType:
- VirtualMachine
Definition:
- Metric: datastore.datastoreVMObservedLatency.latest
Instances: "*"
- ObjectType:
- HostSystem
Definition:
- Metric: disk.maxTotalLatency.latest
Instances: ''
- Metric: disk.numberReadAveraged.average
Instances: "*"
- Metric: disk.numberWriteAveraged.average
Instances: "*"
- Metric: net.throughput.contention.summation
Instances: "*"
- ObjectType:
- Datastore
Definition:
- Metric: disk.capacity.latest
Instances: "*"
- Metric: disk.used.latest
Instances: "*"
resources: {}
# We usually recommend not to specify default resources and to leave this as a conscious
# choice for the user. This also increases chances charts run on environments with little
# resources, such as Minikube. If you do want to specify resources, uncomment the following
# lines, adjust them as necessary, and remove the curly braces after 'resources:'.
# limits:
# cpu: 100m
# memory: 128Mi
# requests:
# cpu: 100m
# memory: 128Mi
nodeSelector: {}
tolerations: []
affinity: {}

2
ct.yaml Normal file
View File

@@ -0,0 +1,2 @@
chart-dirs:
- charts