From 5d4d91071540395e810796872ab523483dae59f3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?c=C4=83t=C4=83lin?= Date: Thu, 30 Jul 2026 10:01:53 +0200 Subject: [PATCH] feat: update vaultwarden to 1.37.1 --- k8s/argo-apps/vaultwarden.yaml | 4 +- k8s/charts/miniflux/Chart.yaml | 2 +- k8s/charts/vaultwarden/Chart.yaml | 2 +- k8s/charts/vaultwarden/templates/pvc.yaml | 21 ---- .../{deployment.yaml => statefulset.yaml} | 32 +++-- k8s/charts/vaultwarden/values.yaml | 2 +- scripts/hbd.sh | 112 ++++++++++++++++++ 7 files changed, 140 insertions(+), 35 deletions(-) delete mode 100644 k8s/charts/vaultwarden/templates/pvc.yaml rename k8s/charts/vaultwarden/templates/{deployment.yaml => statefulset.yaml} (78%) create mode 100755 scripts/hbd.sh diff --git a/k8s/argo-apps/vaultwarden.yaml b/k8s/argo-apps/vaultwarden.yaml index 7340aa3..be9c37e 100644 --- a/k8s/argo-apps/vaultwarden.yaml +++ b/k8s/argo-apps/vaultwarden.yaml @@ -11,8 +11,8 @@ spec: server: https://kubernetes.default.svc sources: - repoURL: git.roboces.dev/catalin/fukuops - chart: vaultwarden/vaultwarden - targetRevision: 0.1.0 + chart: vaultwarden + targetRevision: 0.1.1 helm: valuesObject: conf: diff --git a/k8s/charts/miniflux/Chart.yaml b/k8s/charts/miniflux/Chart.yaml index 385a887..081d49a 100644 --- a/k8s/charts/miniflux/Chart.yaml +++ b/k8s/charts/miniflux/Chart.yaml @@ -3,4 +3,4 @@ name: miniflux description: A Helm chart for Miniflux RSS reader type: application version: 0.1.0 -appVersion: "2.2.18" +appVersion: 2.2.18 diff --git a/k8s/charts/vaultwarden/Chart.yaml b/k8s/charts/vaultwarden/Chart.yaml index 66593fd..724e66f 100644 --- a/k8s/charts/vaultwarden/Chart.yaml +++ b/k8s/charts/vaultwarden/Chart.yaml @@ -3,4 +3,4 @@ name: vaultwarden description: A Helm chart for Vaultwarden password manager type: application version: 0.1.0 -appVersion: "1.37.0" +appVersion: 1.37.1 diff --git a/k8s/charts/vaultwarden/templates/pvc.yaml b/k8s/charts/vaultwarden/templates/pvc.yaml deleted file mode 100644 index 74c2c7c..0000000 --- a/k8s/charts/vaultwarden/templates/pvc.yaml +++ /dev/null @@ -1,21 +0,0 @@ -{{- if and .Values.persistence.enabled (not .Values.persistence.existingClaim) }} -apiVersion: v1 -kind: PersistentVolumeClaim -metadata: - name: {{ include "vaultwarden.fullname" . }}-data - labels: - {{- include "vaultwarden.labels" . | nindent 4 }} -spec: - accessModes: - - {{ .Values.persistence.accessMode }} - {{- if .Values.persistence.storageClass }} - {{- if eq "-" .Values.persistence.storageClass }} - storageClassName: "" - {{- else }} - storageClassName: "{{ .Values.persistence.storageClass }}" - {{- end }} - {{- end }} - resources: - requests: - storage: {{ .Values.persistence.size }} -{{- end }} diff --git a/k8s/charts/vaultwarden/templates/deployment.yaml b/k8s/charts/vaultwarden/templates/statefulset.yaml similarity index 78% rename from k8s/charts/vaultwarden/templates/deployment.yaml rename to k8s/charts/vaultwarden/templates/statefulset.yaml index d9e7446..0c1e7c8 100644 --- a/k8s/charts/vaultwarden/templates/deployment.yaml +++ b/k8s/charts/vaultwarden/templates/statefulset.yaml @@ -1,18 +1,17 @@ apiVersion: apps/v1 -kind: Deployment +kind: StatefulSet metadata: name: {{ include "vaultwarden.fullname" . }} labels: {{- include "vaultwarden.labels" . | nindent 4 }} spec: + serviceName: {{ include "vaultwarden.fullname" . }}-headless {{- if not .Values.autoscaling.enabled }} replicas: {{ .Values.replicaCount }} {{- end }} selector: matchLabels: {{- include "vaultwarden.selectorLabels" . | nindent 6 }} - strategy: - type: Recreate template: metadata: {{- with .Values.podAnnotations }} @@ -32,7 +31,7 @@ spec: - name: {{ .Chart.Name }} securityContext: {{- toYaml .Values.securityContext | nindent 12 }} - image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}" + image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default (printf "%s-alpine" .Chart.AppVersion) }}" imagePullPolicy: {{ .Values.image.pullPolicy }} envFrom: - secretRef: @@ -69,15 +68,12 @@ spec: volumeMounts: - name: data mountPath: /data + {{- if .Values.persistence.existingClaim }} volumes: - name: data - {{- if .Values.persistence.existingClaim }} persistentVolumeClaim: claimName: {{ .Values.persistence.existingClaim }} - {{- else }} - persistentVolumeClaim: - claimName: {{ include "vaultwarden.fullname" . }}-data - {{- end }} + {{- end }} {{- with .Values.nodeSelector }} nodeSelector: {{- toYaml . | nindent 8 }} @@ -92,3 +88,21 @@ spec: {{- end }} restartPolicy: Always automountServiceAccountToken: false + {{- if and .Values.persistence.enabled (not .Values.persistence.existingClaim) }} + volumeClaimTemplates: + - metadata: + name: data + spec: + accessModes: + - {{ .Values.persistence.accessMode }} + {{- if .Values.persistence.storageClass }} + {{- if eq "-" .Values.persistence.storageClass }} + storageClassName: "" + {{- else }} + storageClassName: {{ .Values.persistence.storageClass | quote }} + {{- end }} + {{- end }} + resources: + requests: + storage: {{ .Values.persistence.size }} + {{- end }} diff --git a/k8s/charts/vaultwarden/values.yaml b/k8s/charts/vaultwarden/values.yaml index 228bbf1..e8f40b8 100644 --- a/k8s/charts/vaultwarden/values.yaml +++ b/k8s/charts/vaultwarden/values.yaml @@ -4,7 +4,7 @@ replicaCount: 1 image: repository: vaultwarden/server pullpolicy: Always - tag: "1.37.1-alpine" + tag: "" imagePullSecrets: [] podAnnotations: {} diff --git a/scripts/hbd.sh b/scripts/hbd.sh new file mode 100755 index 0000000..a2d3ba5 --- /dev/null +++ b/scripts/hbd.sh @@ -0,0 +1,112 @@ +#!/usr/bin/env bash +set -euo pipefail + +USAGE="Usage: $0 [version] [--oci-register ]" + +function usage() { + echo "$USAGE" + exit 1 +} + +function next_patch_version() { + local chart="$1" + local ver + ver=$(yq '.version' "$chart/Chart.yaml") + if [[ -z "$ver" || "$ver" == "null" ]]; then + echo "Error: Could not find version in $chart/Chart.yaml" >&2 + exit 1 + fi + + IFS='.' read -r major minor patch <<< "$ver" + echo "$major.$minor.$((patch + 1))" +} + +function build_and_push() { + local chart_name="$1" + local version="$2" + local oci_registry="${3:-oci://git.roboces.dev/catalin/fukuops}" + + local chart_path="k8s/charts/$chart_name" + if [[ ! -d "$chart_path" ]]; then + echo "Error: Chart '$chart_name' not found at $chart_path" >&2 + exit 1 + fi + + if [[ ! -f "$chart_path/Chart.yaml" ]]; then + echo "Error: Chart.yaml not found in $chart_path" >&2 + exit 1 + fi + + echo "Building and pushing $chart_name version $version to $oci_registry" + + local current_version + current_version=$(yq -r '.version' "$chart_path/Chart.yaml") + yq -y -i ".version = \"$version\"" "$chart_path/Chart.yaml" + + mkdir -p /tmp/helm-pkg/ + helm package "$chart_path" -d /tmp/helm-pkg/ + helm push "/tmp/helm-pkg/${chart_name}-${version}.tgz" "$oci_registry" + + yq -y -i ".version = \"$current_version\"" "$chart_path/Chart.yaml" + + echo "Successfully pushed $chart_name-$version to $oci_registry" +} + +function main() { + if [[ $# -lt 1 ]]; then + usage + fi + + local chart_name="" + local version="" + local oci_registry="oci://git.roboces.dev/catalin/fukuops" + + while [[ $# -gt 0 ]]; do + case "$1" in + --oci-register) + if [[ -z "${2:-}" ]] || [[ "$2" == -* ]]; then + echo "Error: --oci-register requires a registry argument" >&2 + exit 1 + fi + oci_registry="$2" + shift 2 + ;; + -h|--help) + echo "$USAGE" + echo "" + echo "Options:" + echo " --oci-register Override default OCI registry (default: oci://git.roboces.dev/catalin/fukuops)" + exit 0 + ;; + -*) + echo "Error: Unknown option: $1" >&2 + usage + ;; + *) + if [[ -z "$chart_name" ]]; then + chart_name="$1" + elif [[ -z "$version" ]]; then + version="$1" + else + echo "Error: Too many arguments" >&2 + usage + fi + shift + ;; + esac + done + + if [[ -z "$chart_name" ]]; then + echo "Error: Chart name is required" >&2 + usage + fi + + if [[ -z "$version" ]]; then + version=$(next_patch_version "k8s/charts/$chart_name") + echo "No version provided, calculated next patch version: $version" + fi + + build_and_push "$chart_name" "$version" "$oci_registry" +} + +main "$@"