Compare commits

..

3 Commits

Author SHA1 Message Date
044424196a feat(freshrss): disable autoinstall by default (#3) 2023-01-08 14:44:35 +00:00
dc59ccf182 new chart: FreshRSS (#2) 2023-01-08 14:36:29 +00:00
458dbf4dbd feat: add chart releaser Github action (#1) 2022-12-03 18:12:04 +00:00
26 changed files with 940 additions and 289 deletions

32
.github/workflows/chart-releaser.yaml vendored Normal file
View File

@ -0,0 +1,32 @@
name: Release Charts
on:
push:
branches:
- master
jobs:
release-charts:
permissions:
contents: write
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
with:
fetch-depth: 0
- name: Configure Git
run: |
git config user.name "$GITHUB_ACTOR"
git config user.email "$GITHUB_ACTOR@users.noreply.github.com"
- name: Install Helm
uses: azure/setup-helm@v3
with:
version: v3.10.2
- name: Run chart-releaser
uses: helm/chart-releaser-action@v1.4.1
env:
CR_TOKEN: "${{ secrets.GITHUB_TOKEN }}"

23
.github/workflows/lint-charts.yaml vendored Normal file
View File

@ -0,0 +1,23 @@
name: Lint Charts
on:
pull_request:
branches:
- master
jobs:
lint-charts:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
with:
fetch-depth: 0
- name: Install Helm
uses: azure/setup-helm@v3
with:
version: v3.10.2
- name: Lint charts
run: helm lint charts/*

23
charts/cinny/.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
*.orig
*~
# Various IDEs
.project
.idea/
*.tmproj
.vscode/

31
charts/cinny/Chart.yaml Normal file
View File

@ -0,0 +1,31 @@
apiVersion: v2
name: cinny
description: A Helm chart for the Cinny Matrix Client
home: https://cinny.in/
sources:
- https://github.com/cinnyapp/cinny
keywords:
- cinny
- matrix
icon: https://cinny.in/assets/cinny.svg
# A chart can be either an 'application' or a 'library' chart.
#
# Application charts are a collection of templates that can be packaged into versioned archives
# to be deployed.
#
# Library charts provide useful utilities or functions for the chart developer. They're included as
# a dependency of application charts to inject those utilities and functions into the rendering
# pipeline. Library charts do not define any templates and therefore cannot be deployed.
type: application
# This is the chart version. This version number should be incremented each time you make changes
# to the chart and its templates, including the app version.
# Versions are expected to follow Semantic Versioning (https://semver.org/)
version: 1.0.0
# This is the version number of the application being deployed. This version number should be
# incremented each time you make changes to the application. Versions are not expected to
# follow Semantic Versioning. They should reflect the version the application is using.
# It is recommended to use it with quotes.
appVersion: "v2.2.2"

View File

@ -0,0 +1,22 @@
1. Get the application URL by running these commands:
{{- if .Values.ingress.enabled }}
{{- range $host := .Values.ingress.hosts }}
{{- range .paths }}
http{{ if $.Values.ingress.tls }}s{{ end }}://{{ $host.host }}{{ .path }}
{{- end }}
{{- end }}
{{- else if contains "NodePort" .Values.service.type }}
export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "cinny.fullname" . }})
export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}")
echo http://$NODE_IP:$NODE_PORT
{{- else if contains "LoadBalancer" .Values.service.type }}
NOTE: It may take a few minutes for the LoadBalancer IP to be available.
You can watch the status of by running 'kubectl get --namespace {{ .Release.Namespace }} svc -w {{ include "cinny.fullname" . }}'
export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include "cinny.fullname" . }} --template "{{"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}"}}")
echo http://$SERVICE_IP:{{ .Values.service.port }}
{{- else if contains "ClusterIP" .Values.service.type }}
export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ include "cinny.name" . }},app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}")
export CONTAINER_PORT=$(kubectl get pod --namespace {{ .Release.Namespace }} $POD_NAME -o jsonpath="{.spec.containers[0].ports[0].containerPort}")
echo "Visit http://127.0.0.1:8080 to use your application"
kubectl --namespace {{ .Release.Namespace }} port-forward $POD_NAME 8080:$CONTAINER_PORT
{{- end }}

View File

@ -0,0 +1,62 @@
{{/*
Expand the name of the chart.
*/}}
{{- define "cinny.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 "cinny.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 "cinny.chart" -}}
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }}
{{- end }}
{{/*
Common labels
*/}}
{{- define "cinny.labels" -}}
helm.sh/chart: {{ include "cinny.chart" . }}
{{ include "cinny.selectorLabels" . }}
{{- if .Chart.AppVersion }}
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
{{- end }}
app.kubernetes.io/managed-by: {{ .Release.Service }}
{{- end }}
{{/*
Selector labels
*/}}
{{- define "cinny.selectorLabels" -}}
app.kubernetes.io/name: {{ include "cinny.name" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
{{- end }}
{{/*
Create the name of the service account to use
*/}}
{{- define "cinny.serviceAccountName" -}}
{{- if .Values.serviceAccount.create }}
{{- default (include "cinny.fullname" .) .Values.serviceAccount.name }}
{{- else }}
{{- default "default" .Values.serviceAccount.name }}
{{- end }}
{{- end }}

View File

@ -0,0 +1,11 @@
{{- if .Values.customConfig.enabled -}}
apiVersion: v1
kind: ConfigMap
metadata:
name: {{ include "cinny.fullname" . }}
data:
{{- with .Values.customConfig.data }}
config: |
{{- toPrettyJson . | nindent 4 -}}
{{- end }}
{{- end }}

View File

@ -0,0 +1,71 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: {{ include "cinny.fullname" . }}
labels:
{{- include "cinny.labels" . | nindent 4 }}
spec:
replicas: {{ .Values.replicaCount }}
selector:
matchLabels:
{{- include "cinny.selectorLabels" . | nindent 6 }}
template:
metadata:
{{- with .Values.podAnnotations }}
annotations:
{{- toYaml . | nindent 8 }}
{{- end }}
labels:
{{- include "cinny.selectorLabels" . | nindent 8 }}
spec:
{{- with .Values.imagePullSecrets }}
imagePullSecrets:
{{- toYaml . | nindent 8 }}
{{- end }}
serviceAccountName: {{ include "cinny.serviceAccountName" . }}
securityContext:
{{- toYaml .Values.podSecurityContext | nindent 8 }}
containers:
- name: {{ .Chart.Name }}
securityContext:
{{- toYaml .Values.securityContext | nindent 12 }}
image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}"
imagePullPolicy: {{ .Values.image.pullPolicy }}
ports:
- name: http
containerPort: {{ .Values.service.port }}
protocol: TCP
{{- if .Values.customConfig.enabled }}
volumeMounts:
- name: custom-config
mountPath: /app/config.json
subPath: config
{{- end }}
livenessProbe:
httpGet:
path: /
port: http
readinessProbe:
httpGet:
path: /
port: http
resources:
{{- toYaml .Values.resources | nindent 12 }}
{{- with .Values.nodeSelector }}
nodeSelector:
{{- toYaml . | nindent 8 }}
{{- end }}
{{- with .Values.affinity }}
affinity:
{{- toYaml . | nindent 8 }}
{{- end }}
{{- with .Values.tolerations }}
tolerations:
{{- toYaml . | nindent 8 }}
{{- end }}
{{- if .Values.customConfig.enabled }}
volumes:
- name: custom-config
configMap:
name: {{ include "cinny.fullname" . }}
{{- end }}

View File

@ -0,0 +1,61 @@
{{- if .Values.ingress.enabled -}}
{{- $fullName := include "cinny.fullname" . -}}
{{- $svcPort := .Values.service.port -}}
{{- if and .Values.ingress.className (not (semverCompare ">=1.18-0" .Capabilities.KubeVersion.GitVersion)) }}
{{- if not (hasKey .Values.ingress.annotations "kubernetes.io/ingress.class") }}
{{- $_ := set .Values.ingress.annotations "kubernetes.io/ingress.class" .Values.ingress.className}}
{{- end }}
{{- end }}
{{- if semverCompare ">=1.19-0" .Capabilities.KubeVersion.GitVersion -}}
apiVersion: networking.k8s.io/v1
{{- else if semverCompare ">=1.14-0" .Capabilities.KubeVersion.GitVersion -}}
apiVersion: networking.k8s.io/v1beta1
{{- else -}}
apiVersion: extensions/v1beta1
{{- end }}
kind: Ingress
metadata:
name: {{ $fullName }}
labels:
{{- include "cinny.labels" . | nindent 4 }}
{{- with .Values.ingress.annotations }}
annotations:
{{- toYaml . | nindent 4 }}
{{- end }}
spec:
{{- if and .Values.ingress.className (semverCompare ">=1.18-0" .Capabilities.KubeVersion.GitVersion) }}
ingressClassName: {{ .Values.ingress.className }}
{{- end }}
{{- if .Values.ingress.tls }}
tls:
{{- range .Values.ingress.tls }}
- hosts:
{{- range .hosts }}
- {{ . | quote }}
{{- end }}
secretName: {{ .secretName }}
{{- end }}
{{- end }}
rules:
{{- range .Values.ingress.hosts }}
- host: {{ .host | quote }}
http:
paths:
{{- range .paths }}
- path: {{ .path }}
{{- if and .pathType (semverCompare ">=1.18-0" $.Capabilities.KubeVersion.GitVersion) }}
pathType: {{ .pathType }}
{{- end }}
backend:
{{- if semverCompare ">=1.19-0" $.Capabilities.KubeVersion.GitVersion }}
service:
name: {{ $fullName }}
port:
number: {{ $svcPort }}
{{- else }}
serviceName: {{ $fullName }}
servicePort: {{ $svcPort }}
{{- end }}
{{- end }}
{{- end }}
{{- end }}

View File

@ -0,0 +1,15 @@
apiVersion: v1
kind: Service
metadata:
name: {{ include "cinny.fullname" . }}
labels:
{{- include "cinny.labels" . | nindent 4 }}
spec:
type: {{ .Values.service.type }}
ports:
- port: {{ .Values.service.port }}
targetPort: http
protocol: TCP
name: http
selector:
{{- include "cinny.selectorLabels" . | nindent 4 }}

View File

@ -0,0 +1,12 @@
{{- if .Values.serviceAccount.create -}}
apiVersion: v1
kind: ServiceAccount
metadata:
name: {{ include "cinny.serviceAccountName" . }}
labels:
{{- include "cinny.labels" . | nindent 4 }}
{{- with .Values.serviceAccount.annotations }}
annotations:
{{- toYaml . | nindent 4 }}
{{- end }}
{{- end }}

View File

@ -0,0 +1,15 @@
apiVersion: v1
kind: Pod
metadata:
name: "{{ include "cinny.fullname" . }}-test-connection"
labels:
{{- include "cinny.labels" . | nindent 4 }}
annotations:
"helm.sh/hook": test
spec:
containers:
- name: wget
image: busybox
command: ['wget']
args: ['{{ include "cinny.fullname" . }}:{{ .Values.service.port }}']
restartPolicy: Never

87
charts/cinny/values.yaml Normal file
View File

@ -0,0 +1,87 @@
# Default values for cinny.
# This is a YAML-formatted file.
# Declare variables to be passed into your templates.
replicaCount: 1
image:
repository: ajbura/cinny
pullPolicy: IfNotPresent
# Overrides the image tag whose default is the chart appVersion.
tag: "v2.2.2"
imagePullSecrets: []
nameOverride: ""
fullnameOverride: ""
serviceAccount:
# Specifies whether a service account should be created
create: true
# Annotations to add to the service account
annotations: {}
# The name of the service account to use.
# If not set and create is true, a name is generated using the fullname template
name: ""
customConfig:
enabled: false
data:
defaultHomeserver: 3
homeserverList:
- converser.eu
- envs.net
- halogen.city
- matrix.org
- mozilla.org
allowCustomHomeservers: true
podAnnotations: {}
podSecurityContext: {}
# fsGroup: 2000
securityContext: {}
# capabilities:
# drop:
# - ALL
# readOnlyRootFilesystem: true
# runAsNonRoot: true
# runAsUser: 1000
service:
type: ClusterIP
port: 80
ingress:
enabled: false
className: ""
annotations: {}
# kubernetes.io/ingress.class: nginx
# kubernetes.io/tls-acme: "true"
hosts:
- host: cinny.local
paths:
- path: /
pathType: ImplementationSpecific
tls: []
# - secretName: cinny-tls
# hosts:
# - cinny.local
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: 50m
# memory: 64Mi
# requests:
# cpu: 50m
# memory: 64Mi
nodeSelector: {}
tolerations: []
affinity: {}

1
charts/freshrss/.gitignore vendored Normal file
View File

@ -0,0 +1 @@
values.test.yaml

View File

@ -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/
# Test values
values.test.yaml

View File

@ -0,0 +1,32 @@
apiVersion: v2
name: freshrss
description: A Helm chart for FreshRSS
home: https://freshrss.org/
sources:
- https://github.com/FreshRSS/FreshRSS
keywords:
- freshrss
- rss
- feed
icon: https://freshrss.org/images/icon.svg
# A chart can be either an 'application' or a 'library' chart.
#
# Application charts are a collection of templates that can be packaged into versioned archives
# to be deployed.
#
# Library charts provide useful utilities or functions for the chart developer. They're included as
# a dependency of application charts to inject those utilities and functions into the rendering
# pipeline. Library charts do not define any templates and therefore cannot be deployed.
type: application
# This is the chart version. This version number should be incremented each time you make changes
# to the chart and its templates, including the app version.
# Versions are expected to follow Semantic Versioning (https://semver.org/)
version: 0.1.1
# This is the version number of the application being deployed. This version number should be
# incremented each time you make changes to the application. Versions are not expected to
# follow Semantic Versioning. They should reflect the version the application is using.
# It is recommended to use it with quotes.
appVersion: "1.20.2"

View File

@ -0,0 +1,22 @@
1. Get the application URL by running these commands:
{{- if .Values.ingress.enabled }}
{{- range $host := .Values.ingress.hosts }}
{{- range .paths }}
http{{ if $.Values.ingress.tls }}s{{ end }}://{{ $host.host }}{{ .path }}
{{- end }}
{{- end }}
{{- else if contains "NodePort" .Values.service.type }}
export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "freshrss.fullname" . }})
export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}")
echo http://$NODE_IP:$NODE_PORT
{{- else if contains "LoadBalancer" .Values.service.type }}
NOTE: It may take a few minutes for the LoadBalancer IP to be available.
You can watch the status of by running 'kubectl get --namespace {{ .Release.Namespace }} svc -w {{ include "freshrss.fullname" . }}'
export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include "freshrss.fullname" . }} --template "{{"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}"}}")
echo http://$SERVICE_IP:{{ .Values.service.port }}
{{- else if contains "ClusterIP" .Values.service.type }}
export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ include "freshrss.name" . }},app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}")
export CONTAINER_PORT=$(kubectl get pod --namespace {{ .Release.Namespace }} $POD_NAME -o jsonpath="{.spec.containers[0].ports[0].containerPort}")
echo "Visit http://127.0.0.1:8080 to use your application"
kubectl --namespace {{ .Release.Namespace }} port-forward $POD_NAME 8080:$CONTAINER_PORT
{{- end }}

View File

@ -0,0 +1,62 @@
{{/*
Expand the name of the chart.
*/}}
{{- define "freshrss.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 "freshrss.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 "freshrss.chart" -}}
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }}
{{- end }}
{{/*
Common labels
*/}}
{{- define "freshrss.labels" -}}
helm.sh/chart: {{ include "freshrss.chart" . }}
{{ include "freshrss.selectorLabels" . }}
{{- if .Chart.AppVersion }}
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
{{- end }}
app.kubernetes.io/managed-by: {{ .Release.Service }}
{{- end }}
{{/*
Selector labels
*/}}
{{- define "freshrss.selectorLabels" -}}
app.kubernetes.io/name: {{ include "freshrss.name" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
{{- end }}
{{/*
Create the name of the service account to use
*/}}
{{- define "freshrss.serviceAccountName" -}}
{{- if .Values.serviceAccount.create }}
{{- default (include "freshrss.fullname" .) .Values.serviceAccount.name }}
{{- else }}
{{- default "default" .Values.serviceAccount.name }}
{{- end }}
{{- end }}

View File

@ -0,0 +1,95 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: {{ include "freshrss.fullname" . }}
labels:
{{- include "freshrss.labels" . | nindent 4 }}
spec:
replicas: {{ .Values.replicaCount }}
strategy:
{{ toYaml .Values.strategy | indent 4 }}
selector:
matchLabels:
{{- include "freshrss.selectorLabels" . | nindent 6 }}
template:
metadata:
{{- with .Values.podAnnotations }}
annotations:
{{- toYaml . | nindent 8 }}
{{- end }}
labels:
{{- include "freshrss.selectorLabels" . | nindent 8 }}
spec:
{{- with .Values.imagePullSecrets }}
imagePullSecrets:
{{- toYaml . | nindent 8 }}
{{- end }}
serviceAccountName: {{ include "freshrss.serviceAccountName" . }}
securityContext:
{{- toYaml .Values.podSecurityContext | nindent 8 }}
containers:
- name: {{ .Chart.Name }}
securityContext:
{{- toYaml .Values.securityContext | nindent 12 }}
image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}"
imagePullPolicy: {{ .Values.image.pullPolicy }}
ports:
- name: http
containerPort: {{ .Values.service.port }}
protocol: TCP
env:
- name: TZ
value: {{ .Values.freshrss.timezone }}
- name: FRESHRSS_ENV
value: {{ .Values.freshrss.freshEnv }}
{{- if .Values.freshrss.autoInstall.enabled }}
- name: FRESHRSS_INSTALL
value: |-
{{- if .Values.freshrss.autoInstall.apiEnabled }}
--api_enabled
{{- end }}
--language {{ .Values.freshrss.autoInstall.language }}
--default_user {{ .Values.freshrss.autoInstall.defaultUser.user }}
- name: FRESHRSS_USER
value: |-
{{- with .Values.freshrss.autoInstall.defaultUser }}
--email {{ .email }}
--password {{ .password }}
--user {{ .user }}
{{- end }}
--language {{ .Values.freshrss.autoInstall.language }}
{{- end }}
livenessProbe:
httpGet:
path: /
port: http
initialDelaySeconds: 30
readinessProbe:
httpGet:
path: /
port: http
resources:
{{- toYaml .Values.resources | nindent 12 }}
volumeMounts:
- name: freshrss-data
mountPath: /var/www/FreshRSS/data
volumes:
- name: freshrss-data
{{- if .Values.persistence.enabled }}
persistentVolumeClaim:
claimName: {{ if .Values.persistence.existingClaim }}{{ .Values.persistence.existingClaim }}{{- else }}{{ template "freshrss.fullname" . }}-pvc{{- end }}
{{- else }}
emptyDir: {}
{{- end }}
{{- with .Values.nodeSelector }}
nodeSelector:
{{- toYaml . | nindent 8 }}
{{- end }}
{{- with .Values.affinity }}
affinity:
{{- toYaml . | nindent 8 }}
{{- end }}
{{- with .Values.tolerations }}
tolerations:
{{- toYaml . | nindent 8 }}
{{- end }}

View File

@ -0,0 +1,61 @@
{{- if .Values.ingress.enabled -}}
{{- $fullName := include "freshrss.fullname" . -}}
{{- $svcPort := .Values.service.port -}}
{{- if and .Values.ingress.className (not (semverCompare ">=1.18-0" .Capabilities.KubeVersion.GitVersion)) }}
{{- if not (hasKey .Values.ingress.annotations "kubernetes.io/ingress.class") }}
{{- $_ := set .Values.ingress.annotations "kubernetes.io/ingress.class" .Values.ingress.className}}
{{- end }}
{{- end }}
{{- if semverCompare ">=1.19-0" .Capabilities.KubeVersion.GitVersion -}}
apiVersion: networking.k8s.io/v1
{{- else if semverCompare ">=1.14-0" .Capabilities.KubeVersion.GitVersion -}}
apiVersion: networking.k8s.io/v1beta1
{{- else -}}
apiVersion: extensions/v1beta1
{{- end }}
kind: Ingress
metadata:
name: {{ $fullName }}
labels:
{{- include "freshrss.labels" . | nindent 4 }}
{{- with .Values.ingress.annotations }}
annotations:
{{- toYaml . | nindent 4 }}
{{- end }}
spec:
{{- if and .Values.ingress.className (semverCompare ">=1.18-0" .Capabilities.KubeVersion.GitVersion) }}
ingressClassName: {{ .Values.ingress.className }}
{{- end }}
{{- if .Values.ingress.tls }}
tls:
{{- range .Values.ingress.tls }}
- hosts:
{{- range .hosts }}
- {{ . | quote }}
{{- end }}
secretName: {{ .secretName }}
{{- end }}
{{- end }}
rules:
{{- range .Values.ingress.hosts }}
- host: {{ .host | quote }}
http:
paths:
{{- range .paths }}
- path: {{ .path }}
{{- if and .pathType (semverCompare ">=1.18-0" $.Capabilities.KubeVersion.GitVersion) }}
pathType: {{ .pathType }}
{{- end }}
backend:
{{- if semverCompare ">=1.19-0" $.Capabilities.KubeVersion.GitVersion }}
service:
name: {{ $fullName }}
port:
number: {{ $svcPort }}
{{- else }}
serviceName: {{ $fullName }}
servicePort: {{ $svcPort }}
{{- end }}
{{- end }}
{{- end }}
{{- end }}

View File

@ -0,0 +1,32 @@
{{- if .Values.persistence.enabled -}}
{{- if not .Values.persistence.existingClaim -}}
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: {{ template "freshrss.fullname" . }}-pvc
labels:
{{- include "freshrss.labels" . | nindent 4 }}
# app.kubernetes.io/name: {{ include "freshrss.name" . }}
# helm.sh/chart: {{ include "freshrss.chart" . }}
# app.kubernetes.io/instance: {{ .Release.Name }}
# app.kubernetes.io/managed-by: {{ .Release.Service }}
# app.kubernetes.io/component: app
{{- if .Values.persistence.annotations }}
annotations:
{{ toYaml .Values.persistence.annotations | indent 4 }}
{{- end }}
spec:
accessModes:
- {{ .Values.persistence.accessMode | quote }}
resources:
requests:
storage: {{ .Values.persistence.size | quote }}
{{- if .Values.persistence.storageClass }}
{{- if (eq "-" .Values.persistence.storageClass) }}
storageClassName: ""
{{- else }}
storageClassName: "{{ .Values.persistence.storageClass }}"
{{- end }}
{{- end }}
{{- end -}}
{{- end -}}

View File

@ -0,0 +1,15 @@
apiVersion: v1
kind: Service
metadata:
name: {{ include "freshrss.fullname" . }}
labels:
{{- include "freshrss.labels" . | nindent 4 }}
spec:
type: {{ .Values.service.type }}
ports:
- port: {{ .Values.service.port }}
targetPort: http
protocol: TCP
name: http
selector:
{{- include "freshrss.selectorLabels" . | nindent 4 }}

View File

@ -0,0 +1,12 @@
{{- if .Values.serviceAccount.create -}}
apiVersion: v1
kind: ServiceAccount
metadata:
name: {{ include "freshrss.serviceAccountName" . }}
labels:
{{- include "freshrss.labels" . | nindent 4 }}
{{- with .Values.serviceAccount.annotations }}
annotations:
{{- toYaml . | nindent 4 }}
{{- end }}
{{- end }}

View File

@ -0,0 +1,15 @@
apiVersion: v1
kind: Pod
metadata:
name: "{{ include "freshrss.fullname" . }}-test-connection"
labels:
{{- include "freshrss.labels" . | nindent 4 }}
annotations:
"helm.sh/hook": test
spec:
containers:
- name: wget
image: busybox
command: ['wget']
args: ['{{ include "freshrss.fullname" . }}:{{ .Values.service.port }}']
restartPolicy: Never

103
charts/freshrss/values.yaml Normal file
View File

@ -0,0 +1,103 @@
# Default values for freshrss.
# This is a YAML-formatted file.
# Declare variables to be passed into your templates.
replicaCount: 1
strategy:
type: Recreate
image:
repository: freshrss/freshrss
pullPolicy: IfNotPresent
# Overrides the image tag whose default is the chart appVersion.
tag: "1.20.2"
imagePullSecrets: []
nameOverride: ""
fullnameOverride: ""
serviceAccount:
# Specifies whether a service account should be created
create: true
# Annotations to add to the service account
annotations: {}
# The name of the service account to use.
# If not set and create is true, a name is generated using the fullname template
name: ""
podAnnotations: {}
podSecurityContext: {}
# fsGroup: 2000
securityContext: {}
# capabilities:
# drop:
# - ALL
# readOnlyRootFilesystem: true
# runAsNonRoot: true
# runAsUser: 1000
service:
type: ClusterIP
port: 80
freshrss:
timezone: UTC
freshEnv: production
autoInstall:
enabled: false
baseUrl: freshrss.local
language: en
apiEnabled: false
dbType: sqlite
dbBase: freshrss
dbHost: ""
dbPassword: freshrss
dbUser: freshrss
defaultUser:
user: admin
password: admin
email: admin@example.com
persistence:
enabled: false
existingClaim: ""
annotations: {}
accessMode: ReadWriteOnce
storageClass: ""
size: 10Gi
ingress:
enabled: false
className: ""
annotations: {}
# kubernetes.io/ingress.class: nginx
# kubernetes.io/tls-acme: "true"
hosts:
- host: freshrss.local
paths:
- path: /
pathType: ImplementationSpecific
tls: []
# - secretName: chart-example-tls
# hosts:
# - chart-example.local
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

@ -1,289 +0,0 @@
apiVersion: v1
entries:
cinny:
- apiVersion: v2
appVersion: v2.2.6
created: "2023-04-26T20:52:10.692066613Z"
description: A Helm chart for the Cinny Matrix Client
digest: 29270e5da0ef56601b4fadfc7e1a7fbde1370b5b8466e08474c9e76a228558be
home: https://cinny.in/
icon: https://cinny.in/assets/cinny.svg
keywords:
- cinny
- matrix
name: cinny
sources:
- https://github.com/cinnyapp/cinny
type: application
urls:
- https://github.com/Thumbscrew/k8s-charts/releases/download/cinny-1.1.0/cinny-1.1.0.tgz
version: 1.1.0
- apiVersion: v2
appVersion: v2.2.6
created: "2023-03-30T18:06:12.064576118Z"
description: A Helm chart for the Cinny Matrix Client
digest: 7c5c6340b1317bda396ddc00cab985a638d33bc6963e5a1054318d2749273ccb
home: https://cinny.in/
icon: https://cinny.in/assets/cinny.svg
keywords:
- cinny
- matrix
name: cinny
sources:
- https://github.com/cinnyapp/cinny
type: application
urls:
- https://github.com/Thumbscrew/k8s-charts/releases/download/cinny-1.0.3/cinny-1.0.3.tgz
version: 1.0.3
- apiVersion: v2
appVersion: v2.2.4
created: "2023-01-30T10:17:57.65651911Z"
description: A Helm chart for the Cinny Matrix Client
digest: 3e759f71aed2186316959fd5b7106210091065129a35ebace4e6549ec1dd16e2
home: https://cinny.in/
icon: https://cinny.in/assets/cinny.svg
keywords:
- cinny
- matrix
name: cinny
sources:
- https://github.com/cinnyapp/cinny
type: application
urls:
- https://github.com/Thumbscrew/k8s-charts/releases/download/cinny-1.0.2/cinny-1.0.2.tgz
version: 1.0.2
- apiVersion: v2
appVersion: v2.2.3
created: "2023-01-15T17:04:16.163723863Z"
description: A Helm chart for the Cinny Matrix Client
digest: defcd57b9915028e611211178c390e99621f6ad21c721aa9b8dd3ea2ff88bd67
home: https://cinny.in/
icon: https://cinny.in/assets/cinny.svg
keywords:
- cinny
- matrix
name: cinny
sources:
- https://github.com/cinnyapp/cinny
type: application
urls:
- https://github.com/Thumbscrew/k8s-charts/releases/download/cinny-1.0.1/cinny-1.0.1.tgz
version: 1.0.1
- apiVersion: v2
appVersion: v2.2.2
created: "2022-12-03T18:12:34.773969772Z"
description: A Helm chart for the Cinny Matrix Client
digest: 6a8fa0b422f3720a5907a4b51e06f79ed47f6c98f79f7c58d5ca29538f4a27c9
home: https://cinny.in/
icon: https://cinny.in/assets/cinny.svg
keywords:
- cinny
- matrix
name: cinny
sources:
- https://github.com/cinnyapp/cinny
type: application
urls:
- https://github.com/Thumbscrew/k8s-charts/releases/download/cinny-1.0.0/cinny-1.0.0.tgz
version: 1.0.0
focalboard:
- apiVersion: v2
appVersion: 7.10.0
created: "2023-05-25T12:54:18.346786179Z"
description: A Helm chart for Mattermost Focalboard
digest: c79e7d5a49838b55eecb3b85a487ab6c6dc7bba5a3d92eae4e864646bb25c95b
home: https://www.focalboard.com/download/personal-edition/
icon: https://www.focalboard.com/img/logo.svg?version=v2
keywords:
- focalboard
- kanban
- mattermost
- project management
name: focalboard
sources:
- https://github.com/mattermost/focalboard
type: application
urls:
- https://github.com/Thumbscrew/k8s-charts/releases/download/focalboard-0.2.0/focalboard-0.2.0.tgz
version: 0.2.0
- apiVersion: v2
appVersion: 7.10.0
created: "2023-05-25T12:45:54.990948806Z"
description: A Helm chart for Mattermost Focalboard
digest: f1e2ac82b64a8203b7c85efcbaa345514b06c4eef16dea39e52474c1127d42a1
home: https://www.focalboard.com/download/personal-edition/
icon: https://www.focalboard.com/img/logo.svg?version=v2
keywords:
- focalboard
- kanban
- mattermost
- project management
name: focalboard
sources:
- https://github.com/mattermost/focalboard
type: application
urls:
- https://github.com/Thumbscrew/k8s-charts/releases/download/focalboard-0.1.0/focalboard-0.1.0.tgz
version: 0.1.0
freshrss:
- apiVersion: v2
appVersion: 1.21.0
created: "2023-04-26T20:52:10.84300583Z"
description: A Helm chart for FreshRSS
digest: a90aec26175f8e76b8af392826ca811b43422551a018aa0e73439b3a9382f116
home: https://freshrss.org/
icon: https://freshrss.org/images/icon.svg
keywords:
- freshrss
- rss
- feed
name: freshrss
sources:
- https://github.com/FreshRSS/FreshRSS
type: application
urls:
- https://github.com/Thumbscrew/k8s-charts/releases/download/freshrss-1.0.0/freshrss-1.0.0.tgz
version: 1.0.0
- apiVersion: v2
appVersion: 1.21.0
created: "2023-03-27T21:23:33.523887728Z"
description: A Helm chart for FreshRSS
digest: f8e7dffde02efe47f82c1c7c67871d150c8d4e1f0ec6a4fc86af703f7331134c
home: https://freshrss.org/
icon: https://freshrss.org/images/icon.svg
keywords:
- freshrss
- rss
- feed
name: freshrss
sources:
- https://github.com/FreshRSS/FreshRSS
type: application
urls:
- https://github.com/Thumbscrew/k8s-charts/releases/download/freshrss-0.4.0/freshrss-0.4.0.tgz
version: 0.4.0
- apiVersion: v2
appVersion: 1.21.0
created: "2023-03-06T11:15:38.801792571Z"
description: A Helm chart for FreshRSS
digest: ffd34baf5fd5ef0d3c03418acf819ffb7dff9008d710cf36a0513130cf617bd1
home: https://freshrss.org/
icon: https://freshrss.org/images/icon.svg
keywords:
- freshrss
- rss
- feed
name: freshrss
sources:
- https://github.com/FreshRSS/FreshRSS
type: application
urls:
- https://github.com/Thumbscrew/k8s-charts/releases/download/freshrss-0.3.0/freshrss-0.3.0.tgz
version: 0.3.0
- apiVersion: v2
appVersion: 1.20.2
created: "2023-02-05T15:11:05.116742197Z"
description: A Helm chart for FreshRSS
digest: bc18d03e25e1e9a08fd473a42ad71c4029f2bcc2bf2ac48fd1fff82acd06e74a
home: https://freshrss.org/
icon: https://freshrss.org/images/icon.svg
keywords:
- freshrss
- rss
- feed
name: freshrss
sources:
- https://github.com/FreshRSS/FreshRSS
type: application
urls:
- https://github.com/Thumbscrew/k8s-charts/releases/download/freshrss-0.2.0/freshrss-0.2.0.tgz
version: 0.2.0
- apiVersion: v2
appVersion: 1.20.2
created: "2023-01-08T14:44:52.722256367Z"
description: A Helm chart for FreshRSS
digest: dc422d8310cb41e595206a25806ce8af915abe55d01fa57a928b62186e5f4392
home: https://freshrss.org/
icon: https://freshrss.org/images/icon.svg
keywords:
- freshrss
- rss
- feed
name: freshrss
sources:
- https://github.com/FreshRSS/FreshRSS
type: application
urls:
- https://github.com/Thumbscrew/k8s-charts/releases/download/freshrss-0.1.1/freshrss-0.1.1.tgz
version: 0.1.1
- apiVersion: v2
appVersion: 1.20.2
created: "2023-01-08T14:36:48.317487579Z"
description: A Helm chart for FreshRSS
digest: 1698041bee7c4ed22fceb472566bc9bfc4feb2f350a6d280f796835d7390ea48
home: https://freshrss.org/
icon: https://freshrss.org/images/icon.svg
keywords:
- freshrss
- rss
- feed
name: freshrss
sources:
- https://github.com/FreshRSS/FreshRSS
type: application
urls:
- https://github.com/Thumbscrew/k8s-charts/releases/download/freshrss-0.1.0/freshrss-0.1.0.tgz
version: 0.1.0
pgadmin:
- apiVersion: v2
appVersion: "6.21"
created: "2023-04-30T18:20:38.483956462Z"
description: A Helm chart for pgAdmin, the open source PostgreSQL administration
tool.
digest: c3f6a4948c9fd3951921492f0bede619f202d482689eb004eccb6fbad5f0d9c4
home: https://www.pgadmin.org/
keywords:
- pgadmin
- postgres
- postgresql
- database
- administration
name: pgadmin
sources:
- https://github.com/pgadmin-org/pgadmin4
type: application
urls:
- https://github.com/Thumbscrew/k8s-charts/releases/download/pgadmin-0.1.0/pgadmin-0.1.0.tgz
version: 0.1.0
unifi-controller:
- apiVersion: v2
appVersion: 7.4.156
created: "2023-06-10T11:22:04.596965692Z"
description: A Helm chart for the Unifi Controller
digest: a6df23eea9b20893f8af5668a2e4b7f1faf61578fdd8cdf10c1c911010a57e5b
name: unifi-controller
type: application
urls:
- https://github.com/Thumbscrew/k8s-charts/releases/download/unifi-controller-1.1.0/unifi-controller-1.1.0.tgz
version: 1.1.0
- apiVersion: v2
appVersion: 7.3.83
created: "2023-04-26T20:52:10.991492327Z"
description: A Helm chart for the Unifi Controller
digest: ab96e92a2b79dae73344dbc2ae0357a6b21764cc36f4c7abc752e153b7f1e379
name: unifi-controller
type: application
urls:
- https://github.com/Thumbscrew/k8s-charts/releases/download/unifi-controller-1.0.0/unifi-controller-1.0.0.tgz
version: 1.0.0
- apiVersion: v2
appVersion: 7.3.83
created: "2023-03-26T20:17:01.079570966Z"
description: A Helm chart for the Unifi Controller
digest: 2ef123b308a47171d5bdaf794e71e6b389d110098646ae8772393f308a3455f2
name: unifi-controller
type: application
urls:
- https://github.com/Thumbscrew/k8s-charts/releases/download/unifi-controller-0.1.0/unifi-controller-0.1.0.tgz
version: 0.1.0
generated: "2023-06-10T11:22:04.596995194Z"