Skip to content

Commit

Permalink
✨ (obico): Create Obico chart
Browse files Browse the repository at this point in the history
  • Loading branch information
gabe565 committed Mar 8, 2023
1 parent f917168 commit b189e59
Show file tree
Hide file tree
Showing 10 changed files with 473 additions and 0 deletions.
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,7 @@ helm delete my-<chart-name>
| [mnemonic-ninja](charts/mnemonic-ninja/) | Mnemonic Ninja is a website to convert between a number and its corresponding word to aid in memorization. |
| [monica](charts/monica/) | Personal CRM. Remember everything about your friends, family and business relationships. |
| [nightscout](charts/nightscout/) | Web-based CGM (Continuous Glucose Monitor) to allow multiple caregivers to remotely view a patient's glucose data in real time. |
| [obico](charts/obico/) | Obico is a community-built, open-source smart 3D printing platform used by makers, enthusiasts, and tinkerers around the world. |
| [pictshare](charts/pictshare/) | PictShare is an open source image, mp4, pastebin hosting service with a simple resizing and upload API that you can host yourself. |
| [podgrab](charts/podgrab/) | A self-hosted podcast manager to download episodes as soon as they become live. |
| [portfolio](charts/portfolio/) | My personal portfolio website |
Expand Down
25 changes: 25 additions & 0 deletions charts/obico/.helmignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
# 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
*.orig
*~
# Various IDEs
.project
.idea/
*.tmproj
.vscode/
# helm-docs templates
*.gotmpl
9 changes: 9 additions & 0 deletions charts/obico/Chart.lock
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
dependencies:
- name: common
repository: https://bjw-s.github.io/helm-charts
version: 1.3.2
- name: redis
repository: https://charts.bitnami.com/bitnami
version: 17.8.0
digest: sha256:c00e28a4fcecc4d6e3798d95eba9bdbe3f57c29b4f0406d89315b53db2cf20ec
generated: "2023-03-08T13:56:46.491098-06:00"
29 changes: 29 additions & 0 deletions charts/obico/Chart.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
apiVersion: v2
name: obico
description: Obico is a community-built, open-source smart 3D printing platform used by makers, enthusiasts, and tinkerers around the world.
home: https://charts.gabe565.com/charts/obico
icon: https://raw.githubusercontent.com/TheSpaghettiDetective/OctoPrint-Obico/master/octoprint_obico/static/img/logo-square.svg
type: application
version: 0.0.1
# renovate datasource=docker depName=ghcr.io/gabe565/obico/web
appVersion: sha-72b26dfa6f35800388816c621870664e5501dd19
kubeVersion: ">=1.22.0-0"
keywords:
- 3d-printing
- machine-learning
dependencies:
- name: common
repository: https://bjw-s.github.io/helm-charts
version: 1.3.2
- name: redis
repository: https://charts.bitnami.com/bitnami
version: 17.8.0
condition: redis.enabled
sources:
- https://github.com/gabe565/charts/tree/main/charts/obico
- https://github.com/TheSpaghettiDetective/obico-server
- https://github.com/gabe565/docker-obico
annotations:
artifacthub.io/changes: |-
- kind: added
description: Initial release
113 changes: 113 additions & 0 deletions charts/obico/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,113 @@
# obico

<img src="https://raw.githubusercontent.com/TheSpaghettiDetective/OctoPrint-Obico/master/octoprint_obico/static/img/logo-square.svg" align="right" width="92" alt="obico logo" style="padding-left: 20px">

![Version: 0.0.1](https://img.shields.io/badge/Version-0.0.1-informational?style=flat)
![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat)
![AppVersion: sha-72b26dfa6f35800388816c621870664e5501dd19](https://img.shields.io/badge/AppVersion-sha--72b26dfa6f35800388816c621870664e5501dd19-informational?style=flat)

Obico is a community-built, open-source smart 3D printing platform used by makers, enthusiasts, and tinkerers around the world.

**Homepage:** <https://charts.gabe565.com/charts/obico>

**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/gabe565/charts/issues/new)**

## Source Code

* <https://github.com/gabe565/charts/tree/main/charts/obico>
* <https://github.com/TheSpaghettiDetective/obico-server>
* <https://github.com/gabe565/docker-obico>

## Requirements

Kubernetes: `>=1.22.0-0`

## Dependencies

| Repository | Name | Version |
|------------|------|---------|
| <https://bjw-s.github.io/helm-charts> | common | 1.3.2 |
| <https://charts.bitnami.com/bitnami> | redis | 17.8.0 |

## TL;DR

```console
helm repo add gabe565 https://charts.gabe565.com
helm repo update
helm install obico gabe565/obico
```

## Installing the Chart

To install the chart with the release name `obico`

```console
helm install obico gabe565/obico
```

## Uninstalling the Chart

To uninstall the `obico` deployment

```console
helm uninstall obico
```

The command removes all the Kubernetes components associated with the chart **including persistent volumes** and deletes the release.

## Configuration

Read through the [values.yaml](./values.yaml) file. It has several commented out suggested values.
Other values may be used from the [values.yaml](https://github.com/bjw-s/helm-charts/tree/main/charts/library/common/values.yaml) from the [bjw-s common library](https://github.com/bjw-s/helm-charts/tree/main/charts/library/common).

Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`.

```console
helm install obico \
--set env.TZ="America/New York" \
gabe565/obico
```

Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart.

```console
helm install obico gabe565/obico -f values.yaml
```

## Custom configuration

N/A

## Values

**Important**: When deploying an application Helm chart you can add more values from the bjw-s common library chart [here](https://github.com/bjw-s/helm-charts/tree/main/charts/library/common)

| Key | Type | Default | Description |
|-----|------|---------|-------------|
| ml-api.command | list | See [values.yaml](./values.yaml) | Command to run ML API. |
| ml-api.controller.strategy | string | `"RollingUpdate"` | Set the ML API upgrade strategy |
| ml-api.env.DEBUG | string | `"True"` | Enables debug logging |
| ml-api.image.pullPolicy | string | `"IfNotPresent"` | ML API image pull policy |
| ml-api.image.repository | string | `"ghcr.io/gabe565/obico/ml-api"` | ML API image repository |
| ml-api.image.tag | string | chart.appVersion | ML API image tag |
| ml-api.service | object | See [values.yaml](./values.yaml) | Configures service settings for the ML API. |
| podSecurityContext.fsGroup | int | `65534` | Volume binds will be granted to `nobody` group |
| podSecurityContext.runAsGroup | int | `65534` | Run as `nobody` group |
| podSecurityContext.runAsUser | int | `65534` | Run as `nobody` user |
| redis | object | See [values.yaml](./values.yaml) | Enable and configure redis subchart under this key. [[ref]](https://github.com/bitnami/charts/tree/master/bitnami/redis) |
| server.additionalContainers.tasks.command | list | See [values.yaml](./values.yaml) | Task command. |
| server.command | list | See [values.yaml](./values.yaml) | Command to run Obico server. |
| server.env | string | See [values.yaml](./values.yaml) | Server environment variables. [[ref]](https://github.com/TheSpaghettiDetective/obico-server/blob/master/dotenv.example) |
| server.image.pullPolicy | string | `"IfNotPresent"` | Server image pull policy |
| server.image.repository | string | `"ghcr.io/gabe565/obico/web"` | Server image repository |
| server.image.tag | string | chart.appVersion | Server image tag |
| server.ingress.main | object | See [values.yaml](./values.yaml) | Enable and configure ingress settings for the chart under this key. |
| server.initContainers.collectstatic.command | list | See [values.yaml](./values.yaml) | Static asset generation command. |
| server.initContainers.migrate.command | list | See [values.yaml](./values.yaml) | Database migration command. |
| server.persistence.data | object | See [values.yaml](./values.yaml) | Data persistence config. |
| server.persistence.media | object | See [values.yaml](./values.yaml) | Media persistence config. |
| server.persistence.static | object | See [values.yaml](./values.yaml) | Static asset persistence config. |
| server.service | object | See [values.yaml](./values.yaml) | Configures service settings for the ML API. |

---
Autogenerated from chart metadata using [helm-docs](https://github.com/norwoodj/helm-docs)
9 changes: 9 additions & 0 deletions charts/obico/README_CONFIG.md.gotmpl
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
{{- define "custom.custom.configuration.header" -}}
## Custom configuration
{{- end -}}

{{- define "custom.custom.configuration" -}}
{{ template "custom.custom.configuration.header" . }}

N/A
{{- end -}}
4 changes: 4 additions & 0 deletions charts/obico/templates/NOTES.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
{{- $ctx := deepCopy . -}}
{{- $_ := mergeOverwrite $ctx.Values .Values.server -}}
{{- $_ = include "obico.server.hardcodedValues" . | fromYaml | merge $ctx.Values -}}
{{- include "bjw-s.common.lib.chart.notes" $ctx -}}
12 changes: 12 additions & 0 deletions charts/obico/templates/ml-api.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
{{- define "obico.mlApi.hardcodedValues" -}}
global:
nameOverride: ml-api

env:
FLASK_APP: server.py
{{- end }}

{{- $ctx := deepCopy . -}}
{{- $_ := get .Values "ml-api" | mergeOverwrite $ctx.Values -}}
{{- $_ = include "obico.mlApi.hardcodedValues" . | fromYaml | merge $ctx.Values -}}
{{- include "bjw-s.common.loader.all" $ctx }}
85 changes: 85 additions & 0 deletions charts/obico/templates/server.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
{{- define "obico.server.redisValues" -}}
{{- with .Values.redis }}
{{- if .enabled }}
REDIS_PASSWORD:
secretKeyRef:
name: {{ $.Release.Name }}-redis
key: redis-password
REDIS_URL: "redis://:$(REDIS_PASSWORD)@{{ include "bjw-s.common.lib.chart.names.fullname" $ }}-redis-master:{{ default .master.service.ports.redis 6379 }}"
{{- end }}
{{- end }}
{{- end -}}

{{- define "obico.server.env" -}}
DEBUG: "False"
DATABASE_URL: "sqlite:////data/db.sqlite3"
WEBPACK_LOADER_ENABLED: "False"

{{- with .Values.server.ingress.main }}
SITE_USES_HTTPS: "{{ if .tls }}True{{ else }}False{{ end }}"
{{- end }}

INTERNAL_MEDIA_HOST: "http://{{ include "bjw-s.common.lib.chart.names.fullname" $ }}-server:{{ .Values.server.service.main.ports.http.port }}"
ML_API_HOST: "http://{{ include "bjw-s.common.lib.chart.names.fullname" $ }}-ml-api:{{ (get .Values "ml-api").service.main.ports.http.port }}"
{{- end -}}

{{- define "obico.server.hardcodedValues" -}}
{{- $env := deepCopy .Values.server.env }}
{{- $_ := include "obico.server.redisValues" . | fromYaml | merge $env }}
{{- $_ = include "obico.server.env" . | fromYaml | merge $env }}

global:
nameOverride: server

env: {{ toYaml $env | nindent 2 }}

initContainers:
collectstatic:
image: {{ .Values.server.image.repository }}:{{ .Values.server.image.tag }}
env: {{ toYaml $env | nindent 6 }}
{{- with .Values.server.persistence }}
volumeMounts:
{{- if .data.enabled }}
- name: data
mountPath: /data
{{- end }}
{{- if .static.enabled }}
- name: static
mountPath: /app/static_build
{{- end }}
{{- end }}
securityContext:
runAsUser: 0
runAsGroup: 0
migrate:
image: {{ .Values.server.image.repository }}:{{ .Values.server.image.tag }}
env: {{ toYaml $env | nindent 6 }}
{{- with .Values.server.persistence }}
volumeMounts:
{{- if .data.enabled }}
- name: data
mountPath: /data
{{- end }}
{{- end }}

additionalContainers:
tasks:
image: {{ .Values.server.image.repository }}:{{ .Values.server.image.tag }}
env: {{ toYaml $env | nindent 6 }}
{{- with .Values.server.persistence }}
volumeMounts:
{{- if .data.enabled }}
- name: data
mountPath: /data
{{- end }}
{{- if .media.enabled }}
- name: media
mountPath: /app/static_build/media
{{- end }}
{{- end }}
{{- end -}}

{{- $ctx := deepCopy . -}}
{{- $_ := mergeOverwrite $ctx.Values .Values.server -}}
{{- $_ = include "obico.server.hardcodedValues" . | fromYaml | merge $ctx.Values -}}
{{- include "bjw-s.common.loader.all" $ctx }}
Loading

0 comments on commit b189e59

Please sign in to comment.