modem-stats chart

This commit is contained in:
Jeff Billimek 2018-06-23 21:36:15 -04:00
parent f8539965dc
commit 29f65c1a63
11 changed files with 251 additions and 2 deletions

View File

@ -1,5 +1,4 @@
apiVersion: extensions/v1beta1
#apiVersion: apps/v1beta2
kind: Deployment
metadata:
name: {{ template "comcast.fullname" . }}

23
modem-stats/.helmignore Normal file
View File

@ -0,0 +1,23 @@
# 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
# OWNERS file for Kubernetes
OWNERS

15
modem-stats/Chart.yaml Normal file
View File

@ -0,0 +1,15 @@
apiVersion: v1
name: modem-stats
version: 1.0.0
appVersion: 1.0.0
description: periodic cable modem data collection and save the results to InfluxDB
keywords:
- sb6183
- influxdb
home: https://github.com/billimek/SB6183-stats-for-influxdb
sources:
- https://github.com/billimek/SB6183-stats-for-influxdb
- https://github.com/billimek/billimek-charts
maintainers:
- name: billimek
email: jeff@billimek.com

4
modem-stats/OWNERS Normal file
View File

@ -0,0 +1,4 @@
approvers:
- billimek
reviewers:
- billimek

68
modem-stats/README.md Normal file
View File

@ -0,0 +1,68 @@
# cable modem (sb6183) signal and stats collection agent for influxdb
![Screenshot](https://camo.githubusercontent.com/939e044c0491abf790d91bd1d7f909b187e4098c/68747470733a2f2f692e696d6775722e636f6d2f70705a6a6e6b502e706e67)
This tool allows you to run periodic scanning of the sb6183 cable modem and save the results to Influxdb
## TL;DR;
```console
$ helm repo add billimek https://raw.githubusercontent.com/billimek/helm-repo/master
$ helm install billimek/modem-stats
```
## Installing the Chart
To install the chart with the release name `my-release`:
```console
$ helm install --name my-release billimek/modem-stats
```
## Uninstalling the Chart
To uninstall/delete the `my-release` deployment:
```console
$ helm delete my-release --purge
```
The command removes all the Kubernetes components associated with the chart and deletes the release.
## Configuration
The configuration is set as a block of text through a configmap and mouted as a file in /src/config.ini Any value in this text block should match the defined sb6183 configuration. There are several values here that will have to match our kubernetes configuration.
## Configuration
The following tables lists the configurable parameters of the Sentry chart and their default values.
| Parameter | Description | Default |
| ------------------------------- | ------------------------------- | ---------------------------------------------------------- |
| `image.repository` | modem-stats image | `billimek/sb6183-for-influxdb` |
| `image.tag` | modem-stats image tag | `latest` |
| `image.pullPolicy` | modem-stats image pull policy | `IfNotPresent` |
| `debug` | Display debugging output | `false` |
| `config.delay` | how many seconds to wait between checks | `3600` |
| `config.influxdb.host` | InfluxDB hostname | `influxdb-influxdb` |
| `config.influxdb.port` | InfluxDB port | `8086` |
| `config.influxdb.database` | InfluxDB database | `sb6183` |
| `config.influxdb.username` | InfluxDB username | `` |
| `config.influxdb.password` | InfluxDB password | `` |
| `config.influxdb.ssl` | InfluxDB connection using SSL | `false` |
| `config.modem.url` | sb6183 stats URL page | `http://192.168.100.1/RgConnect.asp` |
Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. For example,
```console
$ helm install --name my-release \
--set onfig.influxdb.host=some-influx-host \
billimek/modem-stats
```
Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart. For example,
```console
$ helm install --name my-release -f values.yaml billimek/modem-stats
```
Read through the [values.yaml](values.yaml) file. It has several commented out suggested values.

View File

@ -0,0 +1,7 @@
You can connect to the container running modem-stats. To open a shell session in the pod run the following:
- kubectl exec -i -t --namespace {{ .Release.Namespace }} $(kubectl get pods --namespace {{ .Release.Namespace }} -l app={{ template "modem-stats.fullname" . }} -o jsonpath='{.items[0].metadata.name}') /bin/sh
To trail the logs for the modem-stats pod run the following:
- kubectl logs -f --namespace {{ .Release.Namespace }} $(kubectl get pods --namespace {{ .Release.Namespace }} -l app={{ template "modem-stats.fullname" . }} -o jsonpath='{ .items[0].metadata.name }')

View File

@ -0,0 +1,27 @@
{{/* vim: set filetype=mustache: */}}
{{/*
Expand the name of the chart.
*/}}
{{- define "modem-stats.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 "modem-stats.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 -}}

View File

@ -0,0 +1,31 @@
apiVersion: v1
kind: ConfigMap
metadata:
name: {{ template "modem-stats.fullname" . }}
labels:
app: {{ template "modem-stats.name" . }}
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
release: "{{ .Release.Name }}"
heritage: "{{ .Release.Service }}"
data:
config.ini: |
[GENERAL]
Delay = {{ .Values.config.delay }}
{{- if .Values.debug }}
Output = True
{{- else }}
Output = False
{{- end }}
[INFLUXDB]
Address = {{ .Values.config.influxdb.host }}
Port = {{ .Values.config.influxdb.port }}
Database = {{ .Values.config.influxdb.database }}
Username = {{ .Values.config.influxdb.username }}
Password = {{ .Values.config.influxdb.password }}
{{- if .Values.config.influxdb.ssl }}
Verify_SSL = True
{{- else }}
Verify_SSL = False
{{- end }}
[MODEM]
URL = {{ .Values.config.modem.url }}

View File

@ -0,0 +1,42 @@
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: {{ template "modem-stats.fullname" . }}
labels:
app: {{ template "modem-stats.name" . }}
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
release: {{ .Release.Name }}
heritage: {{ .Release.Service }}
spec:
selector:
matchLabels:
app: {{ template "modem-stats.name" . }}
release: {{ .Release.Name }}
replicas: {{ default 1 .Values.replicas }}
template:
metadata:
labels:
app: {{ template "modem-stats.name" . }}
release: {{ .Release.Name }}
spec:
containers:
- name: {{ .Chart.Name }}
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
imagePullPolicy: {{ .Values.image.pullPolicy }}
resources:
{{ toYaml .Values.resources | indent 12 }}
volumeMounts:
- name: {{ template "modem-stats.name" . }}
mountPath: /src/config.ini
subPath: config.ini
{{- if .Values.nodeSelector }}
nodeSelector:
{{ toYaml .Values.nodeSelector | indent 8 }}
{{- end }}
volumes:
- name: {{ template "modem-stats.name" . }}
configMap:
name: {{ template "modem-stats.fullname" . }}
items:
- key: config.ini
path: config.ini

34
modem-stats/values.yaml Normal file
View File

@ -0,0 +1,34 @@
# Default values for modem-stats.
# This is a YAML-formatted file.
# Declare variables to be passed into your templates.
replicaCount: 1
image:
repository: billimek/sb6183-for-influxdb
tag: latest
pullPolicy: IfNotPresent
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: {}
debug: false
config:
# how many seconds to wait between checks
delay: 3600
influxdb:
# host/port/database are mandatory - change as needed
host: influxdb-influxdb
port: 8086
database: cable_modem_stats
# username:
# password:
ssl: false
modem:
url: http://192.168.100.1/RgConnect.asp

View File

@ -1,5 +1,4 @@
apiVersion: extensions/v1beta1
#apiVersion: apps/v1beta2
kind: Deployment
metadata:
name: {{ template "speedtest.fullname" . }}