mirror of
https://github.com/lukaszraczylo/helm-charts.git
synced 2026-10-12 05:32:44 +00:00
Release gohoarder 0.1.13
This commit is contained in:
@@ -2,8 +2,8 @@ apiVersion: v2
|
|||||||
name: gohoarder
|
name: gohoarder
|
||||||
description: A universal package cache proxy supporting npm, PyPI, and Go modules with security scanning
|
description: A universal package cache proxy supporting npm, PyPI, and Go modules with security scanning
|
||||||
type: application
|
type: application
|
||||||
version: 0.1.10
|
version: 0.1.13
|
||||||
appVersion: "0.1.10"
|
appVersion: "0.1.13"
|
||||||
keywords:
|
keywords:
|
||||||
- package-manager
|
- package-manager
|
||||||
- cache
|
- cache
|
||||||
|
|||||||
@@ -181,7 +181,7 @@ Validate SQLite configuration - SQLite cannot be used with SMB/NFS network stora
|
|||||||
{{- if .Values.metadata.sqlite.persistence.enabled }}
|
{{- if .Values.metadata.sqlite.persistence.enabled }}
|
||||||
{{- $storageClass := .Values.metadata.sqlite.persistence.storageClass | default .Values.storage.storageClass }}
|
{{- $storageClass := .Values.metadata.sqlite.persistence.storageClass | default .Values.storage.storageClass }}
|
||||||
{{- if or (contains "smb" ($storageClass | lower)) (contains "cifs" ($storageClass | lower)) (contains "nfs" ($storageClass | lower)) }}
|
{{- if or (contains "smb" ($storageClass | lower)) (contains "cifs" ($storageClass | lower)) (contains "nfs" ($storageClass | lower)) }}
|
||||||
{{- fail "\n\n❌ ERROR: SQLite cannot be used with SMB/CIFS/NFS network storage!\n\nSQLite requires POSIX file locking which is not reliably supported over network filesystems.\nThis will cause 'database is locked' errors and data corruption.\n\nPlease choose ONE of the following solutions:\n\n1. Use PostgreSQL for network storage (RECOMMENDED for production):\n metadata:\n backend: postgresql\n postgresql:\n host: your-postgres-host\n ...\n\n2. Use local storage for SQLite (OK for development):\n metadata:\n sqlite:\n persistence:\n enabled: true\n storageClass: local-path # or another local storage class\n\n3. Disable persistence (data will be lost on pod restart):\n metadata:\n sqlite:\n persistence:\n enabled: false\n\nFor more information, see: https://www.sqlite.org/lockingv3.html\n" }}
|
{{- fail "\n\n❌ ERROR: SQLite cannot be used with SMB/CIFS/NFS network storage!\n\nSQLite requires POSIX file locking which is not reliably supported over network filesystems.\nThis will cause 'database is locked' errors and data corruption.\n\nPlease choose ONE of the following solutions:\n\n1. Use PostgreSQL for network storage (RECOMMENDED for production):\n metadata:\n backend: postgresql\n postgresql:\n host: your-postgres-host\n ...\n\n2. Use MySQL/MariaDB for network storage (alternative to PostgreSQL):\n metadata:\n backend: mysql\n mysql:\n host: your-mysql-host\n ...\n\n3. Use local storage for SQLite (OK for development):\n metadata:\n sqlite:\n persistence:\n enabled: true\n storageClass: local-path # or another local storage class\n\n4. Disable persistence (data will be lost on pod restart):\n metadata:\n sqlite:\n persistence:\n enabled: false\n\nFor more information, see: https://www.sqlite.org/lockingv3.html\n" }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
|
|||||||
@@ -29,6 +29,77 @@ spec:
|
|||||||
serviceAccountName: {{ include "gohoarder.serviceAccountName" . }}
|
serviceAccountName: {{ include "gohoarder.serviceAccountName" . }}
|
||||||
securityContext:
|
securityContext:
|
||||||
{{- toYaml .Values.podSecurityContext | nindent 8 }}
|
{{- toYaml .Values.podSecurityContext | nindent 8 }}
|
||||||
|
{{- if .Values.migration.enabled }}
|
||||||
|
initContainers:
|
||||||
|
# Wait for database to be ready
|
||||||
|
- name: wait-for-db
|
||||||
|
image: busybox:1.36
|
||||||
|
command:
|
||||||
|
- sh
|
||||||
|
- -c
|
||||||
|
- |
|
||||||
|
echo "Waiting for database..."
|
||||||
|
{{- if eq .Values.metadata.backend "postgresql" }}
|
||||||
|
until nc -z {{ .Values.metadata.postgresql.host }} {{ .Values.metadata.postgresql.port }}; do
|
||||||
|
echo " PostgreSQL not ready, retrying in 2s..."
|
||||||
|
sleep 2
|
||||||
|
done
|
||||||
|
echo "✓ PostgreSQL is ready"
|
||||||
|
{{- else if eq .Values.metadata.backend "mysql" }}
|
||||||
|
until nc -z {{ .Values.metadata.mysql.host }} {{ .Values.metadata.mysql.port }}; do
|
||||||
|
echo " MySQL not ready, retrying in 2s..."
|
||||||
|
sleep 2
|
||||||
|
done
|
||||||
|
echo "✓ MySQL is ready"
|
||||||
|
{{- else }}
|
||||||
|
echo "✓ SQLite (no wait needed)"
|
||||||
|
{{- end }}
|
||||||
|
securityContext:
|
||||||
|
allowPrivilegeEscalation: false
|
||||||
|
runAsNonRoot: true
|
||||||
|
runAsUser: 1000
|
||||||
|
resources:
|
||||||
|
limits:
|
||||||
|
cpu: 100m
|
||||||
|
memory: 64Mi
|
||||||
|
requests:
|
||||||
|
cpu: 10m
|
||||||
|
memory: 32Mi
|
||||||
|
# Run database migrations
|
||||||
|
- name: migrate
|
||||||
|
image: "{{ .Values.migration.image.repository }}:{{ .Values.migration.image.tag | default .Chart.AppVersion }}"
|
||||||
|
imagePullPolicy: {{ .Values.migration.image.pullPolicy }}
|
||||||
|
env:
|
||||||
|
- name: DB_DRIVER
|
||||||
|
value: {{ .Values.metadata.backend | quote }}
|
||||||
|
{{- if eq .Values.metadata.backend "postgresql" }}
|
||||||
|
- name: DATABASE_URL
|
||||||
|
value: "postgresql://{{ .Values.metadata.postgresql.username }}:{{ .Values.metadata.postgresql.password }}@{{ .Values.metadata.postgresql.host }}:{{ .Values.metadata.postgresql.port }}/{{ .Values.metadata.postgresql.database }}?sslmode={{ .Values.metadata.postgresql.sslMode }}"
|
||||||
|
{{- else if eq .Values.metadata.backend "mysql" }}
|
||||||
|
- name: DATABASE_URL
|
||||||
|
value: "{{ .Values.metadata.mysql.username }}:{{ .Values.metadata.mysql.password }}@tcp({{ .Values.metadata.mysql.host }}:{{ .Values.metadata.mysql.port }})/{{ .Values.metadata.mysql.database }}?charset={{ .Values.metadata.mysql.charset }}&parseTime={{ .Values.metadata.mysql.parseTime }}"
|
||||||
|
{{- else }}
|
||||||
|
- name: DATABASE_URL
|
||||||
|
value: "/var/lib/gohoarder/metadata/gohoarder.db"
|
||||||
|
{{- end }}
|
||||||
|
args:
|
||||||
|
- --driver=$(DB_DRIVER)
|
||||||
|
- --dsn=$(DATABASE_URL)
|
||||||
|
- --action=migrate
|
||||||
|
- --log-level={{ .Values.migration.logLevel | default "info" }}
|
||||||
|
- --timeout={{ .Values.migration.timeout | default "5m" }}
|
||||||
|
securityContext:
|
||||||
|
allowPrivilegeEscalation: false
|
||||||
|
runAsNonRoot: true
|
||||||
|
runAsUser: 1000
|
||||||
|
resources:
|
||||||
|
{{- toYaml .Values.migration.resources | nindent 10 }}
|
||||||
|
{{- if eq .Values.metadata.backend "sqlite" }}
|
||||||
|
volumeMounts:
|
||||||
|
- name: metadata
|
||||||
|
mountPath: /var/lib/gohoarder/metadata
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
containers:
|
containers:
|
||||||
- name: scanner
|
- name: scanner
|
||||||
securityContext:
|
securityContext:
|
||||||
@@ -38,6 +109,52 @@ spec:
|
|||||||
env:
|
env:
|
||||||
- name: CONFIG_FILE
|
- name: CONFIG_FILE
|
||||||
value: /etc/gohoarder/config.yaml
|
value: /etc/gohoarder/config.yaml
|
||||||
|
{{- if and (eq .Values.metadata.backend "postgresql") .Values.metadata.postgresql.existingSecret }}
|
||||||
|
- name: POSTGRES_USER
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: {{ .Values.metadata.postgresql.existingSecret }}
|
||||||
|
key: username
|
||||||
|
- name: POSTGRES_PASSWORD
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: {{ .Values.metadata.postgresql.existingSecret }}
|
||||||
|
key: password
|
||||||
|
{{- else if and (eq .Values.metadata.backend "postgresql") .Values.metadata.postgresql.username }}
|
||||||
|
- name: POSTGRES_USER
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: {{ include "gohoarder.fullname" . }}-postgresql
|
||||||
|
key: username
|
||||||
|
- name: POSTGRES_PASSWORD
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: {{ include "gohoarder.fullname" . }}-postgresql
|
||||||
|
key: password
|
||||||
|
{{- end }}
|
||||||
|
{{- if and (or (eq .Values.metadata.backend "mysql") (eq .Values.metadata.backend "mariadb")) .Values.metadata.mysql.existingSecret }}
|
||||||
|
- name: MYSQL_USER
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: {{ .Values.metadata.mysql.existingSecret }}
|
||||||
|
key: username
|
||||||
|
- name: MYSQL_PASSWORD
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: {{ .Values.metadata.mysql.existingSecret }}
|
||||||
|
key: password
|
||||||
|
{{- else if and (or (eq .Values.metadata.backend "mysql") (eq .Values.metadata.backend "mariadb")) .Values.metadata.mysql.username }}
|
||||||
|
- name: MYSQL_USER
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: {{ include "gohoarder.fullname" . }}-mysql
|
||||||
|
key: username
|
||||||
|
- name: MYSQL_PASSWORD
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: {{ include "gohoarder.fullname" . }}-mysql
|
||||||
|
key: password
|
||||||
|
{{- end }}
|
||||||
{{- if and .Values.security.scanners.ghsa.enabled .Values.security.scanners.ghsa.existingSecret }}
|
{{- if and .Values.security.scanners.ghsa.enabled .Values.security.scanners.ghsa.existingSecret }}
|
||||||
- name: GHSA_TOKEN
|
- name: GHSA_TOKEN
|
||||||
valueFrom:
|
valueFrom:
|
||||||
|
|||||||
@@ -30,6 +30,77 @@ spec:
|
|||||||
serviceAccountName: {{ include "gohoarder.serviceAccountName" . }}
|
serviceAccountName: {{ include "gohoarder.serviceAccountName" . }}
|
||||||
securityContext:
|
securityContext:
|
||||||
{{- toYaml .Values.podSecurityContext | nindent 8 }}
|
{{- toYaml .Values.podSecurityContext | nindent 8 }}
|
||||||
|
{{- if .Values.migration.enabled }}
|
||||||
|
initContainers:
|
||||||
|
# Wait for database to be ready
|
||||||
|
- name: wait-for-db
|
||||||
|
image: busybox:1.36
|
||||||
|
command:
|
||||||
|
- sh
|
||||||
|
- -c
|
||||||
|
- |
|
||||||
|
echo "Waiting for database..."
|
||||||
|
{{- if eq .Values.metadata.backend "postgresql" }}
|
||||||
|
until nc -z {{ .Values.metadata.postgresql.host }} {{ .Values.metadata.postgresql.port }}; do
|
||||||
|
echo " PostgreSQL not ready, retrying in 2s..."
|
||||||
|
sleep 2
|
||||||
|
done
|
||||||
|
echo "✓ PostgreSQL is ready"
|
||||||
|
{{- else if eq .Values.metadata.backend "mysql" }}
|
||||||
|
until nc -z {{ .Values.metadata.mysql.host }} {{ .Values.metadata.mysql.port }}; do
|
||||||
|
echo " MySQL not ready, retrying in 2s..."
|
||||||
|
sleep 2
|
||||||
|
done
|
||||||
|
echo "✓ MySQL is ready"
|
||||||
|
{{- else }}
|
||||||
|
echo "✓ SQLite (no wait needed)"
|
||||||
|
{{- end }}
|
||||||
|
securityContext:
|
||||||
|
allowPrivilegeEscalation: false
|
||||||
|
runAsNonRoot: true
|
||||||
|
runAsUser: 1000
|
||||||
|
resources:
|
||||||
|
limits:
|
||||||
|
cpu: 100m
|
||||||
|
memory: 64Mi
|
||||||
|
requests:
|
||||||
|
cpu: 10m
|
||||||
|
memory: 32Mi
|
||||||
|
# Run database migrations
|
||||||
|
- name: migrate
|
||||||
|
image: "{{ .Values.migration.image.repository }}:{{ .Values.migration.image.tag | default .Chart.AppVersion }}"
|
||||||
|
imagePullPolicy: {{ .Values.migration.image.pullPolicy }}
|
||||||
|
env:
|
||||||
|
- name: DB_DRIVER
|
||||||
|
value: {{ .Values.metadata.backend | quote }}
|
||||||
|
{{- if eq .Values.metadata.backend "postgresql" }}
|
||||||
|
- name: DATABASE_URL
|
||||||
|
value: "postgresql://{{ .Values.metadata.postgresql.username }}:{{ .Values.metadata.postgresql.password }}@{{ .Values.metadata.postgresql.host }}:{{ .Values.metadata.postgresql.port }}/{{ .Values.metadata.postgresql.database }}?sslmode={{ .Values.metadata.postgresql.sslMode }}"
|
||||||
|
{{- else if eq .Values.metadata.backend "mysql" }}
|
||||||
|
- name: DATABASE_URL
|
||||||
|
value: "{{ .Values.metadata.mysql.username }}:{{ .Values.metadata.mysql.password }}@tcp({{ .Values.metadata.mysql.host }}:{{ .Values.metadata.mysql.port }})/{{ .Values.metadata.mysql.database }}?charset={{ .Values.metadata.mysql.charset }}&parseTime={{ .Values.metadata.mysql.parseTime }}"
|
||||||
|
{{- else }}
|
||||||
|
- name: DATABASE_URL
|
||||||
|
value: "/var/lib/gohoarder/metadata/gohoarder.db"
|
||||||
|
{{- end }}
|
||||||
|
args:
|
||||||
|
- --driver=$(DB_DRIVER)
|
||||||
|
- --dsn=$(DATABASE_URL)
|
||||||
|
- --action=migrate
|
||||||
|
- --log-level={{ .Values.migration.logLevel | default "info" }}
|
||||||
|
- --timeout={{ .Values.migration.timeout | default "5m" }}
|
||||||
|
securityContext:
|
||||||
|
allowPrivilegeEscalation: false
|
||||||
|
runAsNonRoot: true
|
||||||
|
runAsUser: 1000
|
||||||
|
resources:
|
||||||
|
{{- toYaml .Values.migration.resources | nindent 10 }}
|
||||||
|
{{- if eq .Values.metadata.backend "sqlite" }}
|
||||||
|
volumeMounts:
|
||||||
|
- name: metadata
|
||||||
|
mountPath: /var/lib/gohoarder/metadata
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
containers:
|
containers:
|
||||||
- name: server
|
- name: server
|
||||||
securityContext:
|
securityContext:
|
||||||
@@ -125,6 +196,29 @@ spec:
|
|||||||
name: {{ include "gohoarder.fullname" . }}-postgresql
|
name: {{ include "gohoarder.fullname" . }}-postgresql
|
||||||
key: password
|
key: password
|
||||||
{{- end }}
|
{{- end }}
|
||||||
|
{{- if and (or (eq .Values.metadata.backend "mysql") (eq .Values.metadata.backend "mariadb")) .Values.metadata.mysql.existingSecret }}
|
||||||
|
- name: MYSQL_USER
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: {{ .Values.metadata.mysql.existingSecret }}
|
||||||
|
key: username
|
||||||
|
- name: MYSQL_PASSWORD
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: {{ .Values.metadata.mysql.existingSecret }}
|
||||||
|
key: password
|
||||||
|
{{- else if and (or (eq .Values.metadata.backend "mysql") (eq .Values.metadata.backend "mariadb")) .Values.metadata.mysql.username }}
|
||||||
|
- name: MYSQL_USER
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: {{ include "gohoarder.fullname" . }}-mysql
|
||||||
|
key: username
|
||||||
|
- name: MYSQL_PASSWORD
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: {{ include "gohoarder.fullname" . }}-mysql
|
||||||
|
key: password
|
||||||
|
{{- end }}
|
||||||
{{- if and .Values.security.scanners.ghsa.enabled .Values.security.scanners.ghsa.existingSecret }}
|
{{- if and .Values.security.scanners.ghsa.enabled .Values.security.scanners.ghsa.existingSecret }}
|
||||||
- name: GHSA_TOKEN
|
- name: GHSA_TOKEN
|
||||||
valueFrom:
|
valueFrom:
|
||||||
|
|||||||
@@ -53,6 +53,19 @@ data:
|
|||||||
password: {{ .Values.metadata.postgresql.password | b64enc | quote }}
|
password: {{ .Values.metadata.postgresql.password | b64enc | quote }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
---
|
---
|
||||||
|
{{- if and (or (eq .Values.metadata.backend "mysql") (eq .Values.metadata.backend "mariadb")) (not .Values.metadata.mysql.existingSecret) .Values.metadata.mysql.username }}
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Secret
|
||||||
|
metadata:
|
||||||
|
name: {{ include "gohoarder.fullname" . }}-mysql
|
||||||
|
labels:
|
||||||
|
{{- include "gohoarder.labels" . | nindent 4 }}
|
||||||
|
type: Opaque
|
||||||
|
data:
|
||||||
|
username: {{ .Values.metadata.mysql.username | b64enc | quote }}
|
||||||
|
password: {{ .Values.metadata.mysql.password | b64enc | quote }}
|
||||||
|
{{- end }}
|
||||||
|
---
|
||||||
{{- if and .Values.security.scanners.ghsa.enabled (not .Values.security.scanners.ghsa.existingSecret) .Values.security.scanners.ghsa.token }}
|
{{- if and .Values.security.scanners.ghsa.enabled (not .Values.security.scanners.ghsa.existingSecret) .Values.security.scanners.ghsa.token }}
|
||||||
apiVersion: v1
|
apiVersion: v1
|
||||||
kind: Secret
|
kind: Secret
|
||||||
|
|||||||
@@ -51,17 +51,17 @@ image:
|
|||||||
server:
|
server:
|
||||||
repository: ghcr.io/lukaszraczylo/gohoarder-server
|
repository: ghcr.io/lukaszraczylo/gohoarder-server
|
||||||
pullPolicy: IfNotPresent
|
pullPolicy: IfNotPresent
|
||||||
tag: "0.1.10"
|
tag: "0.1.13"
|
||||||
|
|
||||||
frontend:
|
frontend:
|
||||||
repository: ghcr.io/lukaszraczylo/gohoarder-frontend
|
repository: ghcr.io/lukaszraczylo/gohoarder-frontend
|
||||||
pullPolicy: IfNotPresent
|
pullPolicy: IfNotPresent
|
||||||
tag: "0.1.10"
|
tag: "0.1.13"
|
||||||
|
|
||||||
scanner:
|
scanner:
|
||||||
repository: ghcr.io/lukaszraczylo/gohoarder-scanner
|
repository: ghcr.io/lukaszraczylo/gohoarder-scanner
|
||||||
pullPolicy: IfNotPresent
|
pullPolicy: IfNotPresent
|
||||||
tag: "0.1.10"
|
tag: "0.1.13"
|
||||||
|
|
||||||
# Service Account
|
# Service Account
|
||||||
serviceAccount:
|
serviceAccount:
|
||||||
@@ -272,7 +272,7 @@ storage:
|
|||||||
|
|
||||||
# Metadata storage configuration
|
# Metadata storage configuration
|
||||||
metadata:
|
metadata:
|
||||||
# Backend: sqlite, postgresql
|
# Backend: sqlite, postgresql, mysql
|
||||||
#
|
#
|
||||||
# IMPORTANT: SQLite CANNOT be used with SMB/CIFS/NFS network storage!
|
# IMPORTANT: SQLite CANNOT be used with SMB/CIFS/NFS network storage!
|
||||||
# SQLite requires POSIX file locking which causes "database is locked" errors on network filesystems.
|
# SQLite requires POSIX file locking which causes "database is locked" errors on network filesystems.
|
||||||
@@ -286,6 +286,13 @@ metadata:
|
|||||||
# 2. PostgreSQL with any storage (RECOMMENDED for production)
|
# 2. PostgreSQL with any storage (RECOMMENDED for production)
|
||||||
# - Set backend: postgresql
|
# - Set backend: postgresql
|
||||||
# - Configure postgresql settings below
|
# - Configure postgresql settings below
|
||||||
|
# - Works with any storage including SMB/NFS
|
||||||
|
# - Supports multiple replicas and high availability
|
||||||
|
#
|
||||||
|
# 3. MySQL/MariaDB with any storage (alternative to PostgreSQL)
|
||||||
|
# - Set backend: mysql
|
||||||
|
# - Configure mysql settings below
|
||||||
|
# - Works with any storage including SMB/NFS
|
||||||
#
|
#
|
||||||
backend: "sqlite"
|
backend: "sqlite"
|
||||||
|
|
||||||
@@ -305,6 +312,8 @@ metadata:
|
|||||||
walMode: false
|
walMode: false
|
||||||
|
|
||||||
# PostgreSQL configuration
|
# PostgreSQL configuration
|
||||||
|
# Works with any storage including SMB/NFS
|
||||||
|
# Recommended for production deployments
|
||||||
postgresql:
|
postgresql:
|
||||||
# Use bundled PostgreSQL (sets up postgresql subchart)
|
# Use bundled PostgreSQL (sets up postgresql subchart)
|
||||||
enabled: false
|
enabled: false
|
||||||
@@ -313,10 +322,57 @@ metadata:
|
|||||||
database: "gohoarder"
|
database: "gohoarder"
|
||||||
username: "gohoarder"
|
username: "gohoarder"
|
||||||
password: ""
|
password: ""
|
||||||
sslMode: "disable"
|
sslMode: "disable" # disable, require, verify-ca, verify-full
|
||||||
# Use existing secret for PostgreSQL credentials
|
# Use existing secret for PostgreSQL credentials
|
||||||
existingSecret: ""
|
existingSecret: ""
|
||||||
|
|
||||||
|
# MySQL/MariaDB configuration
|
||||||
|
# Works with any storage including SMB/NFS
|
||||||
|
# Alternative to PostgreSQL for production deployments
|
||||||
|
mysql:
|
||||||
|
host: "localhost"
|
||||||
|
port: 3306
|
||||||
|
database: "gohoarder"
|
||||||
|
username: "gohoarder"
|
||||||
|
password: ""
|
||||||
|
charset: "utf8mb4"
|
||||||
|
parseTime: true
|
||||||
|
# Use existing secret for MySQL credentials
|
||||||
|
existingSecret: ""
|
||||||
|
|
||||||
|
# GORM connection pool settings (applies to all database backends)
|
||||||
|
# These settings control database connection pooling and performance
|
||||||
|
maxOpenConns: 25 # Maximum number of open connections to the database
|
||||||
|
maxIdleConns: 5 # Maximum number of idle connections in the pool
|
||||||
|
connMaxLifetime: 3600 # Maximum lifetime of a connection in seconds (1 hour)
|
||||||
|
logLevel: "warn" # GORM log level: silent, error, warn, info
|
||||||
|
|
||||||
|
# Database migration configuration
|
||||||
|
migration:
|
||||||
|
# Enable automatic database migrations via init containers
|
||||||
|
# When enabled, each pod will run migrations before starting the main container
|
||||||
|
# Gormigrate handles concurrency automatically - safe for multiple pods
|
||||||
|
enabled: true
|
||||||
|
|
||||||
|
# Migration image configuration
|
||||||
|
image:
|
||||||
|
repository: ghcr.io/lukaszraczylo/gohoarder-migrate
|
||||||
|
pullPolicy: IfNotPresent
|
||||||
|
tag: "0.1.13"
|
||||||
|
|
||||||
|
# Migration settings
|
||||||
|
logLevel: "info" # debug, info, warn, error
|
||||||
|
timeout: "5m" # Maximum time for migrations to complete
|
||||||
|
|
||||||
|
# Resource limits for migration init container
|
||||||
|
resources:
|
||||||
|
limits:
|
||||||
|
cpu: 500m
|
||||||
|
memory: 256Mi
|
||||||
|
requests:
|
||||||
|
cpu: 100m
|
||||||
|
memory: 128Mi
|
||||||
|
|
||||||
# Cache configuration
|
# Cache configuration
|
||||||
cache:
|
cache:
|
||||||
defaultTTL: "168h" # 7 days
|
defaultTTL: "168h" # 7 days
|
||||||
|
|||||||
Binary file not shown.
+28
-1
@@ -1,6 +1,33 @@
|
|||||||
apiVersion: v1
|
apiVersion: v1
|
||||||
entries:
|
entries:
|
||||||
gohoarder:
|
gohoarder:
|
||||||
|
- apiVersion: v2
|
||||||
|
appVersion: 0.1.13
|
||||||
|
created: "2026-01-03T21:34:20.568127742Z"
|
||||||
|
description: A universal package cache proxy supporting npm, PyPI, and Go modules
|
||||||
|
with security scanning
|
||||||
|
digest: 2dea0bf5eca95f1c9f0505fc702df15b5a7c28e28509d5837f15320ddb07d773
|
||||||
|
home: https://github.com/lukaszraczylo/gohoarder
|
||||||
|
icon: https://raw.githubusercontent.com/lukaszraczylo/gohoarder/main/docs/logo.png
|
||||||
|
keywords:
|
||||||
|
- package-manager
|
||||||
|
- cache
|
||||||
|
- proxy
|
||||||
|
- npm
|
||||||
|
- pypi
|
||||||
|
- go-modules
|
||||||
|
- security
|
||||||
|
- vulnerability-scanning
|
||||||
|
maintainers:
|
||||||
|
- email: [email protected]
|
||||||
|
name: Lukasz Raczylo
|
||||||
|
name: gohoarder
|
||||||
|
sources:
|
||||||
|
- https://github.com/lukaszraczylo/gohoarder
|
||||||
|
type: application
|
||||||
|
urls:
|
||||||
|
- https://github.com/lukaszraczylo/helm-charts/releases/download/gohoarder-0.1.13/gohoarder-0.1.13.tgz
|
||||||
|
version: 0.1.13
|
||||||
- apiVersion: v2
|
- apiVersion: v2
|
||||||
appVersion: 0.1.10
|
appVersion: 0.1.10
|
||||||
created: "2026-01-03T12:36:54.68991809Z"
|
created: "2026-01-03T12:36:54.68991809Z"
|
||||||
@@ -1786,4 +1813,4 @@ entries:
|
|||||||
urls:
|
urls:
|
||||||
- https://github.com/lukaszraczylo/helm-charts/releases/download/kubemirror-0.2.8/kubemirror-0.2.8.tgz
|
- https://github.com/lukaszraczylo/helm-charts/releases/download/kubemirror-0.2.8/kubemirror-0.2.8.tgz
|
||||||
version: 0.2.8
|
version: 0.2.8
|
||||||
generated: "2026-01-03T12:36:54.688487556Z"
|
generated: "2026-01-03T21:34:20.566521227Z"
|
||||||
|
|||||||
Reference in New Issue
Block a user