From 6cfc938d34a49dad00e9ec4a0e7f34593f76a81e Mon Sep 17 00:00:00 2001 From: Markus Reiter Date: Mon, 1 Nov 2021 13:21:37 +0100 Subject: [PATCH] [lancache] Add new chart. (#1255) * Add LanCache chart. --- charts/incubator/lancache/.helmignore | 26 ++++ charts/incubator/lancache/Chart.yaml | 21 +++ charts/incubator/lancache/README.md | 135 ++++++++++++++++ charts/incubator/lancache/README.md.gotmpl | 146 ++++++++++++++++++ .../lancache/README_CHANGELOG.md.gotmpl | 27 ++++ .../lancache/README_CONFIG.md.gotmpl | 9 ++ charts/incubator/lancache/templates/NOTES.txt | 1 + .../incubator/lancache/templates/common.yaml | 61 ++++++++ charts/incubator/lancache/values.yaml | 95 ++++++++++++ 9 files changed, 521 insertions(+) create mode 100644 charts/incubator/lancache/.helmignore create mode 100644 charts/incubator/lancache/Chart.yaml create mode 100644 charts/incubator/lancache/README.md create mode 100644 charts/incubator/lancache/README.md.gotmpl create mode 100644 charts/incubator/lancache/README_CHANGELOG.md.gotmpl create mode 100644 charts/incubator/lancache/README_CONFIG.md.gotmpl create mode 100644 charts/incubator/lancache/templates/NOTES.txt create mode 100644 charts/incubator/lancache/templates/common.yaml create mode 100644 charts/incubator/lancache/values.yaml diff --git a/charts/incubator/lancache/.helmignore b/charts/incubator/lancache/.helmignore new file mode 100644 index 00000000..4379e2b3 --- /dev/null +++ b/charts/incubator/lancache/.helmignore @@ -0,0 +1,26 @@ +# 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/ +# OWNERS file for Kubernetes +OWNERS +# helm-docs templates +*.gotmpl diff --git a/charts/incubator/lancache/Chart.yaml b/charts/incubator/lancache/Chart.yaml new file mode 100644 index 00000000..f58f6cee --- /dev/null +++ b/charts/incubator/lancache/Chart.yaml @@ -0,0 +1,21 @@ +apiVersion: v2 +appVersion: 1.0.0 +description: LanCache Monolithic - a caching proxy server for game download content +name: lancache +version: 0.1.0 +kubeVersion: ">=1.16.0-0" +keywords: +- lancache +home: https://github.com/k8s-at-home/charts/tree/master/charts/stable/lancache +icon: https://avatars.githubusercontent.com/u/16938914 +sources: +- https://github.com/lancachenet/monolithic +- https://hub.docker.com/r/lancachenet/monolithic +- https://hub.docker.com/r/lancachenet/lancache-dns +maintainers: +- name: reitermarkus + email: me@reitermark.us +dependencies: +- name: common + repository: https://library-charts.k8s-at-home.com + version: 4.0.1 diff --git a/charts/incubator/lancache/README.md b/charts/incubator/lancache/README.md new file mode 100644 index 00000000..badf357b --- /dev/null +++ b/charts/incubator/lancache/README.md @@ -0,0 +1,135 @@ +# lancache + +![Version: 0.1.0](https://img.shields.io/badge/Version-0.1.0-informational?style=flat-square) ![AppVersion: 1.0.0](https://img.shields.io/badge/AppVersion-1.0.0-informational?style=flat-square) + +LanCache Monolithic - a caching proxy server for game download content + +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/k8s-at-home/charts/issues/new/choose)** + +## Source Code + +* +* +* + +## Requirements + +Kubernetes: `>=1.16.0-0` + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| +| https://library-charts.k8s-at-home.com | common | 4.0.1 | + +## TL;DR + +```console +helm repo add k8s-at-home https://k8s-at-home.com/charts/ +helm repo update +helm install lancache k8s-at-home/lancache +``` + +## Installing the Chart + +To install the chart with the release name `lancache` + +```console +helm install lancache k8s-at-home/lancache +``` + +## Uninstalling the Chart + +To uninstall the `lancache` deployment + +```console +helm uninstall lancache +``` + +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/k8s-at-home/library-charts/tree/main/charts/stable/common/values.yaml) from the [common library](https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common). + +Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. + +```console +helm install lancache \ + --set env.TZ="America/New York" \ + k8s-at-home/lancache +``` + +Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart. + +```console +helm install lancache k8s-at-home/lancache -f values.yaml +``` + +## Custom configuration + +N/A + +## Values + +**Important**: When deploying an application Helm chart you can add more values from our common library chart [here](https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common) + +| Key | Type | Default | Description | +|-----|------|---------|-------------| +| dns.enabled | bool | See values.yaml | Enable and configure LanCache DNS sidecar and service. | +| dns.env | object | `{}` | environment variables. See more environment variables in the [LanCache DNS documentation](https://lancache.net/docs/containers/dns/variables/). Most variables are inherited from the top-level `env`. `LANCACHE_IP` is auto-generated from the `loadBalancerIP` of the `main` service if specified. | +| dns.image.pullPolicy | string | `"Always"` | image pull policy | +| dns.image.repository | string | `"lancachenet/lancache-dns"` | image repository | +| dns.image.tag | string | `"latest"` | image tag | +| dnsConfig.nameservers[0] | string | `"127.0.0.1"` | | +| dnsPolicy | string | `"None"` | LanCache uses custom upstream nameservers, overridable with the `UPSTREAM_DNS` variable. | +| env | object | See below | environment variables. See more environment variables in the [LanCache Monolithic documentation](https://lancache.net/docs/containers/monolithic/variables/). | +| env.TZ | string | `"UTC"` | Set the container timezone | +| image.pullPolicy | string | `"Always"` | image pull policy | +| image.repository | string | `"lancachenet/monolithic"` | image repository | +| image.tag | string | `"latest"` | image tag | +| nodeSelector | object | `{"kubernetes.io/arch":"amd64"}` | The official LanCache image is only available for x86_64. | +| persistence | object | See values.yaml | Configure persistence settings for the chart under this key. | +| probes.liveness.custom | bool | `true` | | +| probes.liveness.spec.httpGet.path | string | `"/lancache-heartbeat"` | | +| probes.liveness.spec.httpGet.port | int | `80` | | +| probes.readiness.custom | bool | `true` | | +| probes.readiness.spec.httpGet.path | string | `"/lancache-heartbeat"` | | +| probes.readiness.spec.httpGet.port | int | `80` | | +| probes.startup.custom | bool | `true` | | +| probes.startup.spec.httpGet.path | string | `"/lancache-heartbeat"` | | +| probes.startup.spec.httpGet.port | int | `80` | | +| service | object | See values.yaml | Configures service settings for the chart. | + +## Changelog + +All notable changes to this application Helm chart will be documented in this file but does not include changes from our common library. To read those click [here](https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common#changelog). + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +### [0.1.0] + +#### Added + +- Initial version + +#### Changed + +- N/A + +#### Removed + +- N/A + +[0.1.0]: #010 + +## Support + +- See the [Docs](https://docs.k8s-at-home.com/our-helm-charts/getting-started/) +- Open an [issue](https://github.com/k8s-at-home/charts/issues/new/choose) +- Ask a [question](https://github.com/k8s-at-home/organization/discussions) +- Join our [Discord](https://discord.gg/sTMX7Vh) community + +---------------------------------------------- +Autogenerated from chart metadata using [helm-docs v1.5.0](https://github.com/norwoodj/helm-docs/releases/v1.5.0) diff --git a/charts/incubator/lancache/README.md.gotmpl b/charts/incubator/lancache/README.md.gotmpl new file mode 100644 index 00000000..358abe31 --- /dev/null +++ b/charts/incubator/lancache/README.md.gotmpl @@ -0,0 +1,146 @@ +{{- define "custom.repository.organization" -}} +k8s-at-home +{{- end -}} + +{{- define "custom.repository.url" -}} +https://github.com/k8s-at-home/charts +{{- end -}} + +{{- define "custom.helm.url" -}} +https://k8s-at-home.com/charts/ +{{- end -}} + +{{- define "custom.helm.path" -}} +{{ template "custom.repository.organization" . }}/{{ template "chart.name" . }} +{{- end -}} + +{{- define "custom.notes" -}} +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/k8s-at-home/charts/issues/new/choose)** +{{- end -}} + +{{- define "custom.requirements" -}} +## Requirements + +{{ template "chart.kubeVersionLine" . }} +{{- end -}} + +{{- define "custom.dependencies" -}} +## Dependencies + +{{ template "chart.requirementsTable" . }} +{{- end -}} + +{{- define "custom.install.tldr" -}} +## TL;DR + +```console +helm repo add {{ template "custom.repository.organization" . }} {{ template "custom.helm.url" . }} +helm repo update +helm install {{ template "chart.name" . }} {{ template "custom.helm.path" . }} +``` +{{- end -}} + +{{- define "custom.install" -}} +## Installing the Chart + +To install the chart with the release name `{{ template "chart.name" . }}` + +```console +helm install {{ template "chart.name" . }} {{ template "custom.helm.path" . }} +``` +{{- end -}} + +{{- define "custom.uninstall" -}} +## Uninstalling the Chart + +To uninstall the `{{ template "chart.name" . }}` deployment + +```console +helm uninstall {{ template "chart.name" . }} +``` + +The command removes all the Kubernetes components associated with the chart **including persistent volumes** and deletes the release. +{{- end -}} + +{{- define "custom.configuration.header" -}} +## Configuration +{{- end -}} + +{{- define "custom.configuration.readValues" -}} +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/k8s-at-home/library-charts/tree/main/charts/stable/common/values.yaml) from the [common library](https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common). +{{- end -}} + +{{- define "custom.configuration.example.set" -}} +Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. + +```console +helm install {{ template "chart.name" . }} \ + --set env.TZ="America/New York" \ + {{ template "custom.helm.path" . }} +``` +{{- end -}} + +{{- define "custom.configuration.example.file" -}} +Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart. + +```console +helm install {{ template "chart.name" . }} {{ template "custom.helm.path" . }} -f values.yaml +``` +{{- end -}} + +{{- define "custom.valuesSection" -}} +## Values + +**Important**: When deploying an application Helm chart you can add more values from our common library chart [here](https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common) + +{{ template "chart.valuesTable" . }} +{{- end -}} + +{{- define "custom.support" -}} +## Support + +- See the [Docs](https://docs.k8s-at-home.com/our-helm-charts/getting-started/) +- Open an [issue](https://github.com/k8s-at-home/charts/issues/new/choose) +- Ask a [question](https://github.com/k8s-at-home/organization/discussions) +- Join our [Discord](https://discord.gg/sTMX7Vh) community +{{- end -}} + +{{ template "chart.header" . }} + +{{ template "chart.versionBadge" . }}{{ template "chart.typeBadge" . }}{{ template "chart.appVersionBadge" . }} + +{{ template "chart.description" . }} + +{{ template "custom.notes" . }} + +{{ template "chart.sourcesSection" . }} + +{{ template "custom.requirements" . }} + +{{ template "custom.dependencies" . }} + +{{ template "custom.install.tldr" . }} + +{{ template "custom.install" . }} + +{{ template "custom.uninstall" . }} + +{{ template "custom.configuration.header" . }} + +{{ template "custom.configuration.readValues" . }} + +{{ template "custom.configuration.example.set" . }} + +{{ template "custom.configuration.example.file" . }} + +{{ template "custom.custom.configuration" . }} + +{{ template "custom.valuesSection" . }} + +{{ template "custom.changelog" . }} + +{{ template "custom.support" . }} + +{{ template "helm-docs.versionFooter" . }} +{{ "" }} diff --git a/charts/incubator/lancache/README_CHANGELOG.md.gotmpl b/charts/incubator/lancache/README_CHANGELOG.md.gotmpl new file mode 100644 index 00000000..aaaf5ec5 --- /dev/null +++ b/charts/incubator/lancache/README_CHANGELOG.md.gotmpl @@ -0,0 +1,27 @@ +{{- define "custom.changelog.header" -}} +## Changelog +{{- end -}} + +{{- define "custom.changelog" -}} +{{ template "custom.changelog.header" . }} + +All notable changes to this application Helm chart will be documented in this file but does not include changes from our common library. To read those click [here](https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common#changelog). + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +### [0.1.0] + +#### Added + +- Initial version + +#### Changed + +- N/A + +#### Removed + +- N/A + +[0.1.0]: #010 +{{- end -}} diff --git a/charts/incubator/lancache/README_CONFIG.md.gotmpl b/charts/incubator/lancache/README_CONFIG.md.gotmpl new file mode 100644 index 00000000..e93d80bf --- /dev/null +++ b/charts/incubator/lancache/README_CONFIG.md.gotmpl @@ -0,0 +1,9 @@ +{{- define "custom.custom.configuration.header" -}} +## Custom configuration +{{- end -}} + +{{- define "custom.custom.configuration" -}} +{{ template "custom.custom.configuration.header" . }} + +N/A +{{- end -}} diff --git a/charts/incubator/lancache/templates/NOTES.txt b/charts/incubator/lancache/templates/NOTES.txt new file mode 100644 index 00000000..90f7b653 --- /dev/null +++ b/charts/incubator/lancache/templates/NOTES.txt @@ -0,0 +1 @@ +{{- include "common.notes.defaultNotes" . -}} diff --git a/charts/incubator/lancache/templates/common.yaml b/charts/incubator/lancache/templates/common.yaml new file mode 100644 index 00000000..b6d551e9 --- /dev/null +++ b/charts/incubator/lancache/templates/common.yaml @@ -0,0 +1,61 @@ +{{/* Make sure all variables are set properly */}} +{{- include "common.values.setup" . }} + +{{/* Append the hardcoded settings */}} +{{- define "lancache.harcodedValues" -}} +{{ if .Values.dns.enabled }} +additionalContainers: + dns: + name: dns + image: "{{ .Values.dns.image.repository }}:{{ .Values.dns.image.tag }}" + imagePullPolicy: {{ .Values.dns.image.pullPolicy }} + env: + {{- if .Values.env.TZ }} + - name: TZ + value: {{ .Values.env.TZ | quote }} + {{- end }} + {{- if or (not .Values.env.CACHE_MODE) (eq .Values.env.CACHE_MODE "generic") }} + - name: USE_GENERIC_CACHE + value: 'true' + {{- end }} + {{- if .Values.dns.env.LANCACHE_IP }} + - name: LANCACHE_IP + value: {{ .Values.dns.env.LANCACHE_IP | quote }} + {{- else if .Values.service.main.loadBalancerIP }} + - name: LANCACHE_IP + value: {{ .Values.service.main.loadBalancerIP | quote }} + {{- else }} + - name: LANCACHE_IP + value: {{ printf "$(%v_SERVICE_HOST)" (include "common.names.fullname" . | upper | replace "-" "_" ) | quote }} + {{- end }} + {{- if .Values.env.UPSTREAM_DNS }} + - name: UPSTREAM_DNS + value: {{ .Values.env.UPSTREAM_DNS | quote }} + {{- end }} + {{- if .Values.env.CACHE_DOMAINS_REPO }} + - name: CACHE_DOMAINS_REPO + value: {{ .Values.env.CACHE_DOMAINS_REPO | quote }} + {{- end }} + {{- if .Values.env.CACHE_DOMAINS_BRANCH }} + - name: CACHE_DOMAINS_BRANCH + value: {{ .Values.env.CACHE_DOMAINS_BRANCH | quote }} + {{- end }} + ports: + - name: dns + containerPort: 53 + protocol: UDP + +service: + dns: + enabled: true + ports: + dns: + enabled: true + protocol: UDP + containerPort: 53 +{{ end }} +{{- end -}} +{{- $_ := mergeOverwrite .Values (include "lancache.harcodedValues" . | fromYaml) -}} + +{{/* Render the templates */}} +{{ include "common.all" . }} diff --git a/charts/incubator/lancache/values.yaml b/charts/incubator/lancache/values.yaml new file mode 100644 index 00000000..41062b9a --- /dev/null +++ b/charts/incubator/lancache/values.yaml @@ -0,0 +1,95 @@ +# +# IMPORTANT NOTE +# +# This chart inherits from our common library chart. You can check the default values/options here: +# https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common/values.yaml +# + +image: + # -- image repository + repository: lancachenet/monolithic + # -- image tag + tag: latest + # -- image pull policy + pullPolicy: Always + +# -- environment variables. See more environment variables in the [LanCache Monolithic documentation](https://lancache.net/docs/containers/monolithic/variables/). +# @default -- See below +env: + # -- Set the container timezone + TZ: UTC + # UPSTREAM_DNS: + # CACHE_MEM_SIZE: + # CACHE_DISK_SIZE: + # CACHE_MAX_AGE: + +# -- Configures service settings for the chart. +# @default -- See values.yaml +service: + main: + ports: + http: + port: 80 + https: + enabled: true + port: 443 + dns: + enabled: false + ports: + dns: + port: 53 + +# -- LanCache uses custom upstream nameservers, overridable with the `UPSTREAM_DNS` variable. +dnsPolicy: 'None' +dnsConfig: + nameservers: + - 127.0.0.1 + +dns: + # -- Enable and configure LanCache DNS sidecar and service. + # @default -- See values.yaml + enabled: false + # -- environment variables. See more environment variables in the [LanCache DNS documentation](https://lancache.net/docs/containers/dns/variables/). + # Most variables are inherited from the top-level `env`. `LANCACHE_IP` is auto-generated from the `loadBalancerIP` of the `main` service if specified. + env: {} + image: + # -- image repository + repository: lancachenet/lancache-dns + # -- image tag + tag: latest + # -- image pull policy + pullPolicy: Always + +probes: + readiness: + custom: true + spec: + httpGet: + path: /lancache-heartbeat + port: 80 + liveness: + custom: true + spec: + httpGet: + path: /lancache-heartbeat + port: 80 + startup: + custom: true + spec: + httpGet: + path: /lancache-heartbeat + port: 80 + +# -- Configure persistence settings for the chart under this key. +# @default -- See values.yaml +persistence: + data: + enabled: false + mountPath: /data/cache + logs: + enabled: false + mountPath: /data/logs + +# -- The official LanCache image is only available for x86_64. +nodeSelector: + kubernetes.io/arch: amd64