Compare commits
1 Commits
main
...
d5fe756e6a
| Author | SHA1 | Date | |
|---|---|---|---|
|
d5fe756e6a
|
@@ -16,8 +16,8 @@ on:
|
|||||||
env:
|
env:
|
||||||
CLUSTER: cl01tl
|
CLUSTER: cl01tl
|
||||||
BASE_BRANCH: "origin/${{ github.base_ref }}"
|
BASE_BRANCH: "origin/${{ github.base_ref }}"
|
||||||
|
# renovate: datasource=github-releases depName=yannh/kubeconform
|
||||||
KUBECONFORM_VERSION: "v0.6.7"
|
KUBECONFORM_VERSION: "v0.6.7"
|
||||||
ARGOCD_VERSION: "v3.3.6"
|
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
lint-helm:
|
lint-helm:
|
||||||
@@ -102,7 +102,7 @@ jobs:
|
|||||||
echo ""
|
echo ""
|
||||||
echo "${CHANGED_CHARTS}"
|
echo "${CHANGED_CHARTS}"
|
||||||
|
|
||||||
CHANGED_CHARTS_CSV=$(echo "${CHANGED_CHARTS}" | paste -sd ',' -)
|
CHANGED_CHARTS_CSV=$(echo "$CHANGED_CHARTS" | paste -sd ',' -)
|
||||||
|
|
||||||
echo ""
|
echo ""
|
||||||
echo "----"
|
echo "----"
|
||||||
@@ -169,10 +169,9 @@ jobs:
|
|||||||
|
|
||||||
echo ">> Running linting on changed charts ..."
|
echo ">> Running linting on changed charts ..."
|
||||||
|
|
||||||
lint_chart() {
|
for DIR in ${CHANGED_CHARTS}; do
|
||||||
local DIR="$1"
|
CHART_PATH="clusters/${CLUSTER}/helm/${DIR}"
|
||||||
local CHART_PATH="clusters/${CLUSTER}/helm/${DIR}"
|
CHART_NAME=$(basename "${CHART_PATH}")
|
||||||
local CHART_NAME=$(basename "${CHART_PATH}")
|
|
||||||
|
|
||||||
if [ -f "${CHART_PATH}/Chart.yaml" ]; then
|
if [ -f "${CHART_PATH}/Chart.yaml" ]; then
|
||||||
echo ""
|
echo ""
|
||||||
@@ -183,8 +182,15 @@ jobs:
|
|||||||
echo ">> Linting helm chart ${CHART_NAME} ..."
|
echo ">> Linting helm chart ${CHART_NAME} ..."
|
||||||
|
|
||||||
if ! helm lint "${CHART_PATH}" --namespace "default"; then
|
if ! helm lint "${CHART_PATH}" --namespace "default"; then
|
||||||
echo "${DIR}" > ".failed_chart_${CHART_NAME}"
|
EXIT_CODE=1
|
||||||
return 1
|
|
||||||
|
if [ -z "${FAILED_CHARTS}" ]; then
|
||||||
|
FAILED_CHARTS="${DIR}"
|
||||||
|
|
||||||
|
else
|
||||||
|
FAILED_CHARTS="${FAILED_CHARTS}, ${DIR}"
|
||||||
|
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
else
|
else
|
||||||
@@ -192,20 +198,8 @@ jobs:
|
|||||||
echo ">> Directory ${CHART_PATH} does not contain a Chart.yaml. Skipping ..."
|
echo ">> Directory ${CHART_PATH} does not contain a Chart.yaml. Skipping ..."
|
||||||
|
|
||||||
fi
|
fi
|
||||||
}
|
|
||||||
|
|
||||||
export -f lint_chart
|
done
|
||||||
export CLUSTER
|
|
||||||
|
|
||||||
for DIR in ${CHANGED_CHARTS}; do
|
|
||||||
echo "${DIR}"
|
|
||||||
done | xargs -P 4 -I {} bash -c 'OUT=$(lint_chart "$@" 2>&1); printf "%s\n" "$OUT"' _ {}
|
|
||||||
|
|
||||||
if ls .failed_chart_* 1> /dev/null 2>&1; then
|
|
||||||
EXIT_CODE=1
|
|
||||||
FAILED_CHARTS=$(cat .failed_chart_* | paste -sd ',' - | sed 's/,/, /g')
|
|
||||||
rm -f .failed_chart_*
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo ""
|
echo ""
|
||||||
echo "----"
|
echo "----"
|
||||||
@@ -242,17 +236,7 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
|
|
||||||
- name: Cache Kubeconform
|
|
||||||
id: cache-kubeconform
|
|
||||||
uses: actions/cache@668228422ae6a00e4ad889ee87cd7109ec5666a7 # v5
|
|
||||||
with:
|
|
||||||
path: /usr/local/bin/kubeconform
|
|
||||||
key: ${{ runner.os }}-kubeconform-${{ env.KUBECONFORM_VERSION }}
|
|
||||||
restore-keys: |
|
|
||||||
${{ runner.os }}-kubeconform-
|
|
||||||
|
|
||||||
- name: Install Kubeconform
|
- name: Install Kubeconform
|
||||||
if: steps.cache-kubeconform.outputs.cache-hit != 'true'
|
|
||||||
run: |
|
run: |
|
||||||
echo ">> Downloading Kubeconform ${{ env.KUBECONFORM_VERSION }} ..."
|
echo ">> Downloading Kubeconform ${{ env.KUBECONFORM_VERSION }} ..."
|
||||||
wget -q https://github.com/yannh/kubeconform/releases/download/${{ env.KUBECONFORM_VERSION }}/kubeconform-linux-amd64.tar.gz
|
wget -q https://github.com/yannh/kubeconform/releases/download/${{ env.KUBECONFORM_VERSION }}/kubeconform-linux-amd64.tar.gz
|
||||||
@@ -265,8 +249,6 @@ jobs:
|
|||||||
echo ">> Installing Kubeconform ..."
|
echo ">> Installing Kubeconform ..."
|
||||||
sudo mv kubeconform /usr/local/bin/
|
sudo mv kubeconform /usr/local/bin/
|
||||||
|
|
||||||
- name: Verify installation
|
|
||||||
run: |
|
|
||||||
echo ""
|
echo ""
|
||||||
echo ">> Verifying installation ..."
|
echo ">> Verifying installation ..."
|
||||||
kubeconform -v
|
kubeconform -v
|
||||||
@@ -335,38 +317,32 @@ jobs:
|
|||||||
EXIT_CODE=0
|
EXIT_CODE=0
|
||||||
FAILED_CHARTS=""
|
FAILED_CHARTS=""
|
||||||
|
|
||||||
validate_chart() {
|
for DIR in ${CHANGED_CHARTS}; do
|
||||||
local DIR="$1"
|
CHART_PATH="clusters/${CLUSTER}/helm/${DIR}"
|
||||||
local CHART_PATH="clusters/${CLUSTER}/helm/${DIR}"
|
|
||||||
echo ""
|
echo ""
|
||||||
echo ">> Validating: ${DIR}"
|
echo ">> Validating: ${DIR}"
|
||||||
|
|
||||||
helm dependency build "${CHART_PATH}" --skip-refresh
|
helm dependency build "${CHART_PATH}" --skip-refresh
|
||||||
|
|
||||||
if ! helm template "${DIR}" "${CHART_PATH}" --include-crds --namespace default --api-versions "gateway.networking.k8s.io/v1/HTTPRoute,monitoring.coreos.com/v1,monitoring.coreos.com/v1/ServiceMonitor" | \
|
if ! helm template "${DIR}" "${CHART_PATH}" --include-crds --namespace default --api-versions "gateway.networking.k8s.io/v1/HTTPRoute" | \
|
||||||
kubeconform \
|
kubeconform \
|
||||||
${SCHEMA_LOCATIONS} \
|
${SCHEMA_LOCATIONS} \
|
||||||
-ignore-missing-schemas \
|
-ignore-missing-schemas \
|
||||||
-strict \
|
-strict \
|
||||||
-summary; then
|
-summary; then
|
||||||
|
|
||||||
echo "${DIR}" > ".failed_chart_${DIR}"
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
export -f validate_chart
|
|
||||||
export CLUSTER SCHEMA_LOCATIONS
|
|
||||||
|
|
||||||
for DIR in ${CHANGED_CHARTS}; do
|
|
||||||
echo "${DIR}"
|
|
||||||
done | xargs -P 4 -I {} bash -c 'OUT=$(validate_chart "$@" 2>&1); printf "%s\n" "$OUT"' _ {}
|
|
||||||
|
|
||||||
if ls .failed_chart_* 1> /dev/null 2>&1; then
|
|
||||||
EXIT_CODE=1
|
EXIT_CODE=1
|
||||||
FAILED_CHARTS=$(cat .failed_chart_* | paste -sd ',' - | sed 's/,/, /g')
|
|
||||||
rm -f .failed_chart_*
|
if [ -z "${FAILED_CHARTS}" ]; then
|
||||||
|
FAILED_CHARTS="${DIR}"
|
||||||
|
|
||||||
|
else
|
||||||
|
FAILED_CHARTS="${FAILED_CHARTS}, ${DIR}"
|
||||||
|
|
||||||
fi
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
done
|
||||||
|
|
||||||
echo ""
|
echo ""
|
||||||
echo "----"
|
echo "----"
|
||||||
@@ -389,243 +365,3 @@ jobs:
|
|||||||
icon: 'https://cdn.jsdelivr.net/gh/selfhst/icons/png/gitea.png'
|
icon: 'https://cdn.jsdelivr.net/gh/selfhst/icons/png/gitea.png'
|
||||||
actions: '[{"action": "view", "label": "View Run", "url": "${{ vars.USER_URL }}/${{ github.repository }}/actions/runs/${{ github.run_id }}", "clear": true}]'
|
actions: '[{"action": "view", "label": "View Run", "url": "${{ vars.USER_URL }}/${{ github.repository }}/actions/runs/${{ github.run_id }}", "clear": true}]'
|
||||||
image: true
|
image: true
|
||||||
|
|
||||||
# argo-diff:
|
|
||||||
# needs: lint-helm
|
|
||||||
# runs-on: ubuntu-js
|
|
||||||
# if: |
|
|
||||||
# needs.lint-helm.result == 'success' &&
|
|
||||||
# needs.lint-helm.outputs.changes-detected == 'true' &&
|
|
||||||
# github.event_name == 'pull_request'
|
|
||||||
# steps:
|
|
||||||
# - name: Checkout
|
|
||||||
# uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
|
|
||||||
# with:
|
|
||||||
# fetch-depth: 0
|
|
||||||
|
|
||||||
# - name: Cache ArgoCD CLI
|
|
||||||
# id: cache-argocd
|
|
||||||
# uses: actions/cache@668228422ae6a00e4ad889ee87cd7109ec5666a7 # v5
|
|
||||||
# with:
|
|
||||||
# path: /usr/local/bin/argocd
|
|
||||||
# key: ${{ runner.os }}-argocd-${{ env.ARGOCD_VERSION }}
|
|
||||||
# restore-keys: |
|
|
||||||
# ${{ runner.os }}-argocd-
|
|
||||||
|
|
||||||
# - name: Install ArgoCD CLI
|
|
||||||
# if: steps.cache-argocd.outputs.cache-hit != 'true'
|
|
||||||
# run: |
|
|
||||||
# echo ">> Downloading ArgoCD CLI, version: ${{ env.ARGOCD_VERSION }} ..."
|
|
||||||
# curl -sSL -o argocd-linux-amd64 https://github.com/argoproj/argo-cd/releases/download/${{ env.ARGOCD_VERSION }}/argocd-linux-amd64
|
|
||||||
|
|
||||||
# echo ""
|
|
||||||
# echo ">> Installing ArgoCD CLI ..."
|
|
||||||
# sudo install -m 555 argocd-linux-amd64 /usr/local/bin/argocd
|
|
||||||
|
|
||||||
# echo ""
|
|
||||||
# echo "----"
|
|
||||||
|
|
||||||
# - name: Verify installation
|
|
||||||
# run: |
|
|
||||||
# echo ""
|
|
||||||
# echo ">> Verifying installation ..."
|
|
||||||
# argocd version --client
|
|
||||||
|
|
||||||
# echo ""
|
|
||||||
# echo "----"
|
|
||||||
|
|
||||||
# - name: Set Up Helm
|
|
||||||
# uses: azure/setup-helm@dda3372f752e03dde6b3237bc9431cdc2f7a02a2 # v5
|
|
||||||
# with:
|
|
||||||
# token: ${{ secrets.GITEA_TOKEN }}
|
|
||||||
# # renovate: datasource=github-releases depName=helm/helm
|
|
||||||
# version: v4.1.3
|
|
||||||
# cache: true
|
|
||||||
|
|
||||||
# - name: Cache Helm Dependencies
|
|
||||||
# uses: actions/cache@668228422ae6a00e4ad889ee87cd7109ec5666a7 # v5
|
|
||||||
# with:
|
|
||||||
# path: |
|
|
||||||
# ~/.cache/helm
|
|
||||||
# ~/.config/helm
|
|
||||||
# key: helm-cache-${{ runner.os }}-${{ hashFiles('infrastructure/clusters/cl01tl/helm/**/Chart.yaml', 'infrastructure/clusters/cl01tl/helm/**/Chart.lock') }}
|
|
||||||
# restore-keys: |
|
|
||||||
# helm-cache-${{ runner.os }}-
|
|
||||||
|
|
||||||
# - name: Add Repositories
|
|
||||||
# env:
|
|
||||||
# CHANGED_CHARTS: ${{ needs.lint-helm.outputs.chart-dir }}
|
|
||||||
# run: |
|
|
||||||
# echo ">> Adding repositories for chart dependencies ..."
|
|
||||||
# echo ""
|
|
||||||
|
|
||||||
# for DIR in ${CHANGED_CHARTS}; do
|
|
||||||
# helm dependency list --max-col-width 120 clusters/${CLUSTER}/helm/${DIR} 2> /dev/null \
|
|
||||||
# | tail -n +2 \
|
|
||||||
# | awk 'NF > 0 { print $1, $3 }' \
|
|
||||||
# | while read -r REPO_NAME REPO_URL; do
|
|
||||||
# if [[ "${REPO_URL}" == oci://* ]]; then
|
|
||||||
# echo ">> Ignoring OCI repo: ${REPO_URL}"
|
|
||||||
|
|
||||||
# elif [[ -n "${REPO_NAME}" && -n "${REPO_URL}" ]]; then
|
|
||||||
# helm repo add "${REPO_NAME}" "${REPO_URL}"
|
|
||||||
|
|
||||||
# fi
|
|
||||||
|
|
||||||
# done || true
|
|
||||||
# done
|
|
||||||
|
|
||||||
# if helm repo list > /dev/null 2>&1; then
|
|
||||||
# echo ""
|
|
||||||
# echo ">> Update repository cache ..."
|
|
||||||
# helm repo update
|
|
||||||
|
|
||||||
# fi
|
|
||||||
|
|
||||||
# echo ""
|
|
||||||
# echo "----"
|
|
||||||
|
|
||||||
# - name: Render Templates
|
|
||||||
# id: render
|
|
||||||
# env:
|
|
||||||
# CHANGED_CHARTS: ${{ needs.lint-helm.outputs.chart-dir }}
|
|
||||||
# run: |
|
|
||||||
# for APP_NAME in ${CHANGED_CHARTS}; do
|
|
||||||
# echo ">> Render templates for ${APP_NAME} ..."
|
|
||||||
# CHART_PATH="clusters/${CLUSTER}/helm/${APP_NAME}"
|
|
||||||
# OUTPUT_FOLDER="clusters/${CLUSTER}/manifests/${APP_NAME}/"
|
|
||||||
# mkdir -p "${OUTPUT_FOLDER}"
|
|
||||||
|
|
||||||
# helm dependency build "${CHART_PATH}" --skip-refresh
|
|
||||||
|
|
||||||
# NAMESPACE="${APP_NAME}"
|
|
||||||
# case "${APP_NAME}" in
|
|
||||||
# "stack")
|
|
||||||
# NAMESPACE="argocd"
|
|
||||||
# echo ">> Special Rendering into 'argocd' namespace ..."
|
|
||||||
# ;;
|
|
||||||
# "cilium" | "coredns" | "metrics-server")
|
|
||||||
# NAMESPACE="kube-system"
|
|
||||||
# echo ">> Special Rendering for ${APP_NAME} into 'kube-system' namespace ..."
|
|
||||||
# ;;
|
|
||||||
# *)
|
|
||||||
# echo ">> Standard Rendering ..."
|
|
||||||
# esac
|
|
||||||
|
|
||||||
# TEMPLATE=$(helm template "${APP_NAME}" "${CHART_PATH}" --include-crds --namespace "${NAMESPACE}" --api-versions "gateway.networking.k8s.io/v1/HTTPRoute,monitoring.coreos.com/v1,monitoring.coreos.com/v1/ServiceMonitor")
|
|
||||||
|
|
||||||
# # Format and split rendered template
|
|
||||||
# echo "${TEMPLATE}" | yq '... comments=""' | yq 'select(. != null)' | yq -s '"'"${OUTPUT_FOLDER}"'" + .kind + "-" + .metadata.name + ".yaml"'
|
|
||||||
|
|
||||||
# # Strip comments again to ensure formatting correctness
|
|
||||||
# for file in "$OUTPUT_FOLDER"/*; do
|
|
||||||
# yq -i '... comments=""' $file
|
|
||||||
|
|
||||||
# done
|
|
||||||
|
|
||||||
# echo ""
|
|
||||||
# echo ">> Templates in output folder: ${OUTPUT_FOLDER}"
|
|
||||||
# ls ${OUTPUT_FOLDER}
|
|
||||||
# done
|
|
||||||
|
|
||||||
# echo "----"
|
|
||||||
|
|
||||||
# - name: Run App Diff
|
|
||||||
# id: diff
|
|
||||||
# env:
|
|
||||||
# ARGOCD_SERVER: ${{ secrets.ARGOCD_SERVER }}
|
|
||||||
# ARGOCD_AUTH_TOKEN: ${{ secrets.ARGOCD_AUTH_TOKEN }}
|
|
||||||
# CHANGED_CHARTS: ${{ needs.lint-helm.outputs.chart-dir }}
|
|
||||||
# run: |
|
|
||||||
# FAILED_CHARTS=""
|
|
||||||
# DIFF_FOUND="false"
|
|
||||||
# EXIT_CODE=0
|
|
||||||
|
|
||||||
# for APP_NAME in ${CHANGED_CHARTS}; do
|
|
||||||
# echo ">> Running argocd app diff for ${APP_NAME} ..."
|
|
||||||
# if ! argocd app diff "${APP_NAME}" \
|
|
||||||
# --server "${ARGOCD_SERVER}" \
|
|
||||||
# --auth-token "${ARGOCD_AUTH_TOKEN}" \
|
|
||||||
# --revision ${{ github.sha }} \
|
|
||||||
# --local "clusters/${CLUSTER}/manifests/${APP_NAME}" \
|
|
||||||
# --local-repo-root "." \
|
|
||||||
# --grpc-web > "diff_output_${APP_NAME}.txt" 2>&1; then
|
|
||||||
|
|
||||||
# # ArgoCD diff returns non-zero on diff or error.
|
|
||||||
# # Let's capture if it actually generated a diff output to post.
|
|
||||||
# DIFF_FOUND="true"
|
|
||||||
|
|
||||||
# # Check if the output contains validation/connection errors
|
|
||||||
# if grep -iE 'error|failed|connection refused|timeout' "diff_output_${APP_NAME}.txt"; then
|
|
||||||
# echo ">> ArgoCD encountered an error validating ${APP_NAME}!"
|
|
||||||
# EXIT_CODE=1
|
|
||||||
# FAILED_CHARTS="${FAILED_CHARTS} ${APP_NAME}"
|
|
||||||
# fi
|
|
||||||
# fi
|
|
||||||
|
|
||||||
# if [ -s "diff_output_${APP_NAME}.txt" ]; then
|
|
||||||
# echo ">> Argo diff or errors:"
|
|
||||||
# echo ""
|
|
||||||
# cat diff_output_${APP_NAME}.txt
|
|
||||||
# echo ""
|
|
||||||
# else
|
|
||||||
# echo ">> No Argo diff found for ${APP_NAME}"
|
|
||||||
# rm "diff_output_${APP_NAME}.txt"
|
|
||||||
# fi
|
|
||||||
# done
|
|
||||||
|
|
||||||
# echo "----"
|
|
||||||
# echo "diff-detected=${DIFF_FOUND}" >> "$GITHUB_OUTPUT"
|
|
||||||
# echo "failed-charts=${FAILED_CHARTS}" >> "$GITHUB_OUTPUT"
|
|
||||||
|
|
||||||
# exit $EXIT_CODE
|
|
||||||
|
|
||||||
# - name: Post Diff
|
|
||||||
# if: |
|
|
||||||
# always() &&
|
|
||||||
# steps.diff.outputs.diff-detected == 'true' &&
|
|
||||||
# github.event.pull_request.number != null
|
|
||||||
# env:
|
|
||||||
# GITEA_TOKEN: ${{ secrets.GITEA_TOKEN }}
|
|
||||||
# run: |
|
|
||||||
# COMMENT_BODY="### ArgoCD Diff Results
|
|
||||||
# "
|
|
||||||
|
|
||||||
# for f in diff_output_*.txt; do
|
|
||||||
# APP_NAME=$(echo $f | sed 's/diff_output_//;s/.txt//')
|
|
||||||
# DIFF_CONTENT=$(cat "$f")
|
|
||||||
|
|
||||||
# COMMENT_BODY="${COMMENT_BODY}
|
|
||||||
# #### App: ${APP_NAME}
|
|
||||||
# "
|
|
||||||
|
|
||||||
# if [ -z "$DIFF_CONTENT" ]; then
|
|
||||||
# COMMENT_BODY="${COMMENT_BODY} No changes detected."
|
|
||||||
# else
|
|
||||||
# COMMENT_BODY="${COMMENT_BODY}
|
|
||||||
# \`\`\`diff
|
|
||||||
# ${DIFF_CONTENT}
|
|
||||||
# \`\`\`"
|
|
||||||
# fi
|
|
||||||
# done
|
|
||||||
|
|
||||||
# curl -X 'POST' \
|
|
||||||
# "${{ github.server_url }}/api/v1/repos/${{ github.repository }}/issues/${{ github.event.pull_request.number }}/comments" \
|
|
||||||
# -H "Authorization: token ${GITEA_TOKEN}" \
|
|
||||||
# -H "Content-Type: application/json" \
|
|
||||||
# -d "$(jq -n --arg body "$COMMENT_BODY" '{body: $body}')"
|
|
||||||
|
|
||||||
# - name: ntfy Failed
|
|
||||||
# uses: niniyas/ntfy-action@96acac57fdc91d4c4f50b78486c1ed6f03f9f61c # master
|
|
||||||
# if: failure()
|
|
||||||
# with:
|
|
||||||
# url: '${{ secrets.NTFY_URL }}'
|
|
||||||
# topic: '${{ secrets.NTFY_TOPIC }}'
|
|
||||||
# title: 'ArgoCD Diff Failure'
|
|
||||||
# priority: 3
|
|
||||||
# headers: '{"Authorization": "Bearer ${{ secrets.NTFY_CRED }}"}'
|
|
||||||
# tags: action,failed
|
|
||||||
# details: "ArgoCD diff for cluster '${{ env.CLUSTER }}' failed on charts: ${{ steps.diff.outputs.failed-charts }}"
|
|
||||||
# icon: 'https://cdn.jsdelivr.net/gh/selfhst/icons/png/gitea.png'
|
|
||||||
# actions: '[{"action": "view", "label": "View Run", "url": "${{ vars.USER_URL }}/${{ github.repository }}/actions/runs/${{ github.run_id }}", "clear": true}]'
|
|
||||||
# image: true
|
|
||||||
|
|||||||
@@ -50,7 +50,7 @@ jobs:
|
|||||||
cache: true
|
cache: true
|
||||||
|
|
||||||
- name: Configure Kubeconfig
|
- name: Configure Kubeconfig
|
||||||
uses: azure/k8s-set-context@89b837d75b40a7bd2ddafde837473c212db8b313 # v5
|
uses: azure/k8s-set-context@ae59a723ba9abe7a9655538854a025448dbab4aa # v4
|
||||||
with:
|
with:
|
||||||
method: kubeconfig
|
method: kubeconfig
|
||||||
kubeconfig: ${{ secrets.KUBECONFIG }}
|
kubeconfig: ${{ secrets.KUBECONFIG }}
|
||||||
@@ -273,7 +273,7 @@ jobs:
|
|||||||
NAMESPACE="argocd"
|
NAMESPACE="argocd"
|
||||||
echo ">> Special Rendering into 'argocd' namespace ..."
|
echo ">> Special Rendering into 'argocd' namespace ..."
|
||||||
;;
|
;;
|
||||||
"cilium" | "coredns" | "metrics-server")
|
"cilium" | "coredns" | "metrics-server" | "prometheus-operator-crds")
|
||||||
NAMESPACE="kube-system"
|
NAMESPACE="kube-system"
|
||||||
echo ">> Special Rendering for ${CHART_NAME} into 'kube-system' namespace ..."
|
echo ">> Special Rendering for ${CHART_NAME} into 'kube-system' namespace ..."
|
||||||
;;
|
;;
|
||||||
@@ -283,7 +283,7 @@ jobs:
|
|||||||
|
|
||||||
echo ">> Formating rendered template ..."
|
echo ">> Formating rendered template ..."
|
||||||
local TEMPLATE
|
local TEMPLATE
|
||||||
TEMPLATE=$(helm template "${CHART_NAME}" ./ --namespace "${NAMESPACE}" --include-crds --dry-run=server --api-versions "gateway.networking.k8s.io/v1/HTTPRoute,monitoring.coreos.com/v1,monitoring.coreos.com/v1/ServiceMonitor")
|
TEMPLATE=$(helm template "${CHART_NAME}" ./ --namespace "${NAMESPACE}" --include-crds --dry-run=server --api-versions "gateway.networking.k8s.io/v1/HTTPRoute")
|
||||||
|
|
||||||
# Format and split rendered template
|
# Format and split rendered template
|
||||||
echo "${TEMPLATE}" | yq '... comments=""' | yq 'select(. != null)' | yq -s '"'"${OUTPUT_FOLDER}"'" + .kind + "-" + .metadata.name + ".yaml"'
|
echo "${TEMPLATE}" | yq '... comments=""' | yq 'select(. != null)' | yq -s '"'"${OUTPUT_FOLDER}"'" + .kind + "-" + .metadata.name + ".yaml"'
|
||||||
@@ -314,7 +314,7 @@ jobs:
|
|||||||
for DIR in ${RENDER_DIR}; do
|
for DIR in ${RENDER_DIR}; do
|
||||||
echo "${DIR}"
|
echo "${DIR}"
|
||||||
|
|
||||||
done | xargs -P 5 -I {} bash -c 'OUT=$(render_chart "$@" 2>&1); printf "%s\n" "$OUT"' _ {}
|
done | xargs -P 4 -I {} bash -c 'OUT=$(render_chart "$@" 2>&1); printf "%s\n" "$OUT"' _ {}
|
||||||
|
|
||||||
echo ""
|
echo ""
|
||||||
echo "----"
|
echo "----"
|
||||||
|
|||||||
@@ -12,8 +12,8 @@ on:
|
|||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
renovate:
|
renovate:
|
||||||
runs-on: ubuntu-js
|
runs-on: ubuntu-latest
|
||||||
container: ghcr.io/renovatebot/renovate:43.163.4@sha256:b9e6514e1b1feeb77a4898ecab9e6623a9c9cb495983e1b0d2646a7e3d4e81ea
|
container: ghcr.io/renovatebot/renovate:43.99.0@sha256:aae697086b93427dcde46eb92e08e334b018946ce19339bf044ce971ca1626e2
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
|
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
|
||||||
|
|||||||
@@ -4,6 +4,6 @@ dependencies:
|
|||||||
version: 4.6.2
|
version: 4.6.2
|
||||||
- name: volsync-target
|
- name: volsync-target
|
||||||
repository: oci://harbor.alexlebens.net/helm-charts
|
repository: oci://harbor.alexlebens.net/helm-charts
|
||||||
version: 1.1.1
|
version: 0.8.0
|
||||||
digest: sha256:e472c85ad45c6071ccc3a23047927aba42814a931865736e40ad5c16d597ea53
|
digest: sha256:ff81b3d8fc831e4b8048f646fffcf597aa7410e52ecf27690eab8104047dbe6f
|
||||||
generated: "2026-04-28T23:30:55.463292642Z"
|
generated: "2026-03-06T01:04:41.514235218Z"
|
||||||
|
|||||||
@@ -20,8 +20,8 @@ dependencies:
|
|||||||
version: 4.6.2
|
version: 4.6.2
|
||||||
- name: volsync-target
|
- name: volsync-target
|
||||||
alias: volsync-target-data
|
alias: volsync-target-data
|
||||||
version: 1.1.1
|
version: 0.8.0
|
||||||
repository: oci://harbor.alexlebens.net/helm-charts
|
repository: oci://harbor.alexlebens.net/helm-charts
|
||||||
icon: https://cdn.jsdelivr.net/gh/selfhst/icons/png/actual-budget.png
|
icon: https://cdn.jsdelivr.net/gh/selfhst/icons/png/actual-budget.png
|
||||||
# renovate: datasource=github-releases depName=actualbudget/actual
|
# renovate: datasource=github-releases depName=actualbudget/actual
|
||||||
appVersion: 26.5.0
|
appVersion: 26.3.0
|
||||||
|
|||||||
@@ -1,14 +0,0 @@
|
|||||||
{{/*
|
|
||||||
Common labels
|
|
||||||
*/}}
|
|
||||||
{{- define "custom.labels" -}}
|
|
||||||
{{ include "custom.selectorLabels" $ }}
|
|
||||||
{{- end }}
|
|
||||||
|
|
||||||
{{/*
|
|
||||||
Selector labels
|
|
||||||
*/}}
|
|
||||||
{{- define "custom.selectorLabels" -}}
|
|
||||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
|
||||||
app.kubernetes.io/part-of: {{ .Release.Name }}
|
|
||||||
{{- end }}
|
|
||||||
@@ -8,7 +8,7 @@ actual:
|
|||||||
main:
|
main:
|
||||||
image:
|
image:
|
||||||
repository: ghcr.io/actualbudget/actual
|
repository: ghcr.io/actualbudget/actual
|
||||||
tag: 26.5.0@sha256:b733ae30c70a66dc4d03577526e53575a0c04eab4f3ab6ace30934776251058c
|
tag: 26.3.0@sha256:eb8bc26f53025e07e464594c12d77c52c4b95840c8dadd9b95c4f0c4660f8ad2
|
||||||
env:
|
env:
|
||||||
- name: ACTUAL_PORT
|
- name: ACTUAL_PORT
|
||||||
value: 5006
|
value: 5006
|
||||||
@@ -39,6 +39,7 @@ actual:
|
|||||||
http:
|
http:
|
||||||
port: 80
|
port: 80
|
||||||
targetPort: 5006
|
targetPort: 5006
|
||||||
|
protocol: HTTP
|
||||||
route:
|
route:
|
||||||
main:
|
main:
|
||||||
kind: HTTPRoute
|
kind: HTTPRoute
|
||||||
|
|||||||
12
clusters/cl01tl/helm/argo-workflows/Chart.lock
Normal file
12
clusters/cl01tl/helm/argo-workflows/Chart.lock
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
dependencies:
|
||||||
|
- name: argo-workflows
|
||||||
|
repository: https://argoproj.github.io/argo-helm
|
||||||
|
version: 1.0.6
|
||||||
|
- name: argo-events
|
||||||
|
repository: https://argoproj.github.io/argo-helm
|
||||||
|
version: 2.4.21
|
||||||
|
- name: postgres-cluster
|
||||||
|
repository: oci://harbor.alexlebens.net/helm-charts
|
||||||
|
version: 7.10.0
|
||||||
|
digest: sha256:5635bfe609d8a901df257ef3e6cb469396a21bdd4c6f96e7e33f84036019c52b
|
||||||
|
generated: "2026-03-24T16:59:01.228848139Z"
|
||||||
32
clusters/cl01tl/helm/argo-workflows/Chart.yaml
Normal file
32
clusters/cl01tl/helm/argo-workflows/Chart.yaml
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
apiVersion: v2
|
||||||
|
name: argo-workflows
|
||||||
|
version: 1.0.0
|
||||||
|
description: Argo Workflows
|
||||||
|
keywords:
|
||||||
|
- argo-workflows
|
||||||
|
- argo-events
|
||||||
|
- workflows
|
||||||
|
- events
|
||||||
|
home: https://docs.alexlebens.dev/applications/argo-workflows/
|
||||||
|
sources:
|
||||||
|
- https://github.com/argoproj/argo-workflows
|
||||||
|
- https://github.com/argoproj/argo-events
|
||||||
|
- https://github.com/argoproj/argo-helm/tree/main/charts/argo-workflows
|
||||||
|
- https://github.com/argoproj/argo-helm/tree/main/charts/argo-events
|
||||||
|
- https://gitea.alexlebens.dev/alexlebens/helm-charts/src/branch/main/charts/postgres-cluster
|
||||||
|
maintainers:
|
||||||
|
- name: alexlebens
|
||||||
|
dependencies:
|
||||||
|
- name: argo-workflows
|
||||||
|
version: 1.0.6
|
||||||
|
repository: https://argoproj.github.io/argo-helm
|
||||||
|
- name: argo-events
|
||||||
|
version: 2.4.21
|
||||||
|
repository: https://argoproj.github.io/argo-helm
|
||||||
|
- name: postgres-cluster
|
||||||
|
alias: postgres-18-cluster
|
||||||
|
version: 7.10.0
|
||||||
|
repository: oci://harbor.alexlebens.net/helm-charts
|
||||||
|
icon: https://cdn.jsdelivr.net/gh/selfhst/icons/png/argo-cd.png
|
||||||
|
# renovate: datasource=github-releases depName=argoproj/argo-workflows
|
||||||
|
appVersion: v4.0.3
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
apiVersion: external-secrets.io/v1
|
||||||
|
kind: ExternalSecret
|
||||||
|
metadata:
|
||||||
|
name: argo-workflows-oidc-secret
|
||||||
|
namespace: {{ .Release.Namespace }}
|
||||||
|
labels:
|
||||||
|
app.kubernetes.io/name: argo-workflows-oidc-secret
|
||||||
|
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||||
|
app.kubernetes.io/part-of: {{ .Release.Name }}
|
||||||
|
spec:
|
||||||
|
secretStoreRef:
|
||||||
|
kind: ClusterSecretStore
|
||||||
|
name: vault
|
||||||
|
data:
|
||||||
|
- secretKey: secret
|
||||||
|
remoteRef:
|
||||||
|
key: /authentik/oidc/argo-workflows
|
||||||
|
property: secret
|
||||||
|
- secretKey: client
|
||||||
|
remoteRef:
|
||||||
|
key: /authentik/oidc/argo-workflows
|
||||||
|
property: client
|
||||||
109
clusters/cl01tl/helm/argo-workflows/values.yaml
Normal file
109
clusters/cl01tl/helm/argo-workflows/values.yaml
Normal file
@@ -0,0 +1,109 @@
|
|||||||
|
argo-workflows:
|
||||||
|
crds:
|
||||||
|
install: true
|
||||||
|
keep: true
|
||||||
|
full: true
|
||||||
|
upgradeJob:
|
||||||
|
image:
|
||||||
|
repository: registry.k8s.io/kubectl
|
||||||
|
tag: v1.35.3
|
||||||
|
controller:
|
||||||
|
metricsConfig:
|
||||||
|
enabled: true
|
||||||
|
persistence:
|
||||||
|
postgresql:
|
||||||
|
host: argo-workflows-postgresql-18-cluster-rw
|
||||||
|
port: 5432
|
||||||
|
database: app
|
||||||
|
tableName: app
|
||||||
|
userNameSecret:
|
||||||
|
name: argo-workflows-postgresql-18-cluster-app
|
||||||
|
key: username
|
||||||
|
passwordSecret:
|
||||||
|
name: argo-workflows-postgresql-18-cluster-app
|
||||||
|
key: password
|
||||||
|
ssl: false
|
||||||
|
sslMode: disable
|
||||||
|
workflowWorkers: 2
|
||||||
|
workflowTTLWorkers: 2
|
||||||
|
podCleanupWorkers: 2
|
||||||
|
cronWorkflowWorkers: 2
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
cpu: 1m
|
||||||
|
memory: 20Mi
|
||||||
|
serviceMonitor:
|
||||||
|
enabled: true
|
||||||
|
workflowNamespaces:
|
||||||
|
- argo-workflows
|
||||||
|
server:
|
||||||
|
authModes:
|
||||||
|
- sso
|
||||||
|
httproute:
|
||||||
|
enabled: true
|
||||||
|
parentRefs:
|
||||||
|
- group: gateway.networking.k8s.io
|
||||||
|
kind: Gateway
|
||||||
|
name: traefik-gateway
|
||||||
|
namespace: traefik
|
||||||
|
hostnames:
|
||||||
|
- argo-workflows.alexlebens.net
|
||||||
|
rules:
|
||||||
|
- matches:
|
||||||
|
- path:
|
||||||
|
type: PathPrefix
|
||||||
|
value: /
|
||||||
|
sso:
|
||||||
|
enabled: true
|
||||||
|
issuer: https://authentik.alexlebens.net/application/o/argo-workflows/
|
||||||
|
clientId:
|
||||||
|
name: argo-workflows-oidc-secret
|
||||||
|
key: client
|
||||||
|
clientSecret:
|
||||||
|
name: argo-workflows-oidc-secret
|
||||||
|
key: secret
|
||||||
|
redirectUrl: https://argo-workflows.alexlebens.net/oauth2/callback
|
||||||
|
rbac:
|
||||||
|
enabled: false
|
||||||
|
scopes:
|
||||||
|
- openid
|
||||||
|
- email
|
||||||
|
- profile
|
||||||
|
argo-events:
|
||||||
|
crds:
|
||||||
|
install: true
|
||||||
|
keep: true
|
||||||
|
controller:
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
cpu: 1m
|
||||||
|
memory: 32Mi
|
||||||
|
metrics:
|
||||||
|
enabled: true
|
||||||
|
serviceMonitor:
|
||||||
|
enabled: true
|
||||||
|
webhook:
|
||||||
|
enabled: true
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
cpu: 1m
|
||||||
|
memory: 20Mi
|
||||||
|
postgres-18-cluster:
|
||||||
|
mode: recovery
|
||||||
|
recovery:
|
||||||
|
method: objectStore
|
||||||
|
objectStore:
|
||||||
|
index: 1
|
||||||
|
backup:
|
||||||
|
objectStore:
|
||||||
|
- name: garage-local
|
||||||
|
index: 1
|
||||||
|
destinationBucket: postgres-backups
|
||||||
|
externalSecretCredentialPath: /garage/home-infra/postgres-backups
|
||||||
|
isWALArchiver: true
|
||||||
|
scheduledBackups:
|
||||||
|
- name: live-backup
|
||||||
|
suspend: false
|
||||||
|
immediate: true
|
||||||
|
schedule: "0 0 14 * * *"
|
||||||
|
backupName: garage-local
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
dependencies:
|
dependencies:
|
||||||
- name: argo-cd
|
- name: argo-cd
|
||||||
repository: https://argoproj.github.io/argo-helm
|
repository: https://argoproj.github.io/argo-helm
|
||||||
version: 9.5.11
|
version: 9.4.17
|
||||||
digest: sha256:78e2094dde7b3d0326da14640dbc012ce6e6e899f23270dc4d9a13b168c1ef89
|
digest: sha256:17752dbf03861cf70ee31c9a17373a5175656a2edd00ba5fcd3988a195147da8
|
||||||
generated: "2026-05-02T00:45:16.287556363Z"
|
generated: "2026-03-28T01:51:34.832601868Z"
|
||||||
|
|||||||
@@ -13,8 +13,8 @@ maintainers:
|
|||||||
- name: alexlebens
|
- name: alexlebens
|
||||||
dependencies:
|
dependencies:
|
||||||
- name: argo-cd
|
- name: argo-cd
|
||||||
version: 9.5.11
|
version: 9.4.17
|
||||||
repository: https://argoproj.github.io/argo-helm
|
repository: https://argoproj.github.io/argo-helm
|
||||||
icon: https://cdn.jsdelivr.net/gh/selfhst/icons/png/argo-cd.png
|
icon: https://cdn.jsdelivr.net/gh/selfhst/icons/png/argo-cd.png
|
||||||
# renovate: datasource=github-releases depName=argoproj/argo-cd
|
# renovate: datasource=github-releases depName=argoproj/argo-cd
|
||||||
appVersion: v3.3.9
|
appVersion: v3.3.6
|
||||||
|
|||||||
@@ -1,14 +0,0 @@
|
|||||||
{{/*
|
|
||||||
Common labels
|
|
||||||
*/}}
|
|
||||||
{{- define "custom.labels" -}}
|
|
||||||
{{ include "custom.selectorLabels" $ }}
|
|
||||||
{{- end }}
|
|
||||||
|
|
||||||
{{/*
|
|
||||||
Selector labels
|
|
||||||
*/}}
|
|
||||||
{{- define "custom.selectorLabels" -}}
|
|
||||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
|
||||||
app.kubernetes.io/part-of: {{ .Release.Name }}
|
|
||||||
{{- end }}
|
|
||||||
@@ -1,40 +1,70 @@
|
|||||||
apiVersion: external-secrets.io/v1
|
apiVersion: external-secrets.io/v1
|
||||||
kind: ExternalSecret
|
kind: ExternalSecret
|
||||||
metadata:
|
metadata:
|
||||||
name: argocd-oidc-authentik
|
name: argocd-oidc-secret
|
||||||
namespace: {{ .Release.Namespace }}
|
namespace: {{ .Release.Namespace }}
|
||||||
labels:
|
labels:
|
||||||
app.kubernetes.io/name: argocd-oidc-authentik
|
app.kubernetes.io/name: argocd-oidc-secret
|
||||||
{{- include "custom.labels" . | nindent 4 }}
|
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||||
|
app.kubernetes.io/part-of: {{ .Release.Name }}
|
||||||
spec:
|
spec:
|
||||||
secretStoreRef:
|
secretStoreRef:
|
||||||
kind: ClusterSecretStore
|
kind: ClusterSecretStore
|
||||||
name: openbao
|
name: vault
|
||||||
data:
|
data:
|
||||||
- secretKey: secret
|
- secretKey: secret
|
||||||
remoteRef:
|
remoteRef:
|
||||||
key: /cl01tl/authentik/oidc/argocd
|
key: /authentik/oidc/argocd
|
||||||
property: secret
|
property: secret
|
||||||
- secretKey: client
|
- secretKey: client
|
||||||
remoteRef:
|
remoteRef:
|
||||||
key: /cl01tl/authentik/oidc/argocd
|
key: /authentik/oidc/argocd
|
||||||
property: client
|
property: client
|
||||||
|
|
||||||
---
|
---
|
||||||
apiVersion: external-secrets.io/v1
|
apiVersion: external-secrets.io/v1
|
||||||
kind: ExternalSecret
|
kind: ExternalSecret
|
||||||
metadata:
|
metadata:
|
||||||
name: argocd-notifications-ntfy
|
name: argocd-notifications-secret
|
||||||
namespace: {{ .Release.Namespace }}
|
namespace: {{ .Release.Namespace }}
|
||||||
labels:
|
labels:
|
||||||
app.kubernetes.io/name: argocd-notifications-ntfy
|
app.kubernetes.io/name: argocd-notifications-secret
|
||||||
{{- include "custom.labels" . | nindent 4 }}
|
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||||
|
app.kubernetes.io/part-of: {{ .Release.Name }}
|
||||||
spec:
|
spec:
|
||||||
secretStoreRef:
|
secretStoreRef:
|
||||||
kind: ClusterSecretStore
|
kind: ClusterSecretStore
|
||||||
name: openbao
|
name: vault
|
||||||
data:
|
data:
|
||||||
- secretKey: ntfy-token
|
- secretKey: ntfy-token
|
||||||
remoteRef:
|
remoteRef:
|
||||||
key: /cl01tl/ntfy/users/cl01tl
|
key: /ntfy/user/cl01tl
|
||||||
property: token
|
property: token
|
||||||
|
|
||||||
|
---
|
||||||
|
apiVersion: external-secrets.io/v1
|
||||||
|
kind: ExternalSecret
|
||||||
|
metadata:
|
||||||
|
name: argocd-gitea-repo-infrastructure-secret
|
||||||
|
namespace: {{ .Release.Namespace }}
|
||||||
|
labels:
|
||||||
|
app.kubernetes.io/name: argocd-gitea-repo-infrastructure-secret
|
||||||
|
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||||
|
app.kubernetes.io/part-of: {{ .Release.Name }}
|
||||||
|
spec:
|
||||||
|
secretStoreRef:
|
||||||
|
kind: ClusterSecretStore
|
||||||
|
name: vault
|
||||||
|
data:
|
||||||
|
- secretKey: type
|
||||||
|
remoteRef:
|
||||||
|
key: /cl01tl/argocd/credentials/repo/infrastructure
|
||||||
|
property: type
|
||||||
|
- secretKey: url
|
||||||
|
remoteRef:
|
||||||
|
key: /cl01tl/argocd/credentials/repo/infrastructure
|
||||||
|
property: url
|
||||||
|
- secretKey: sshPrivateKey
|
||||||
|
remoteRef:
|
||||||
|
key: /cl01tl/argocd/credentials/repo/infrastructure
|
||||||
|
property: sshPrivateKey
|
||||||
|
|||||||
@@ -1,108 +0,0 @@
|
|||||||
apiVersion: monitoring.coreos.com/v1
|
|
||||||
kind: PrometheusRule
|
|
||||||
metadata:
|
|
||||||
name: haproxy
|
|
||||||
namespace: {{ .Release.Namespace }}
|
|
||||||
labels:
|
|
||||||
app.kubernetes.io/name: haproxy
|
|
||||||
{{- include "custom.labels" . | nindent 4 }}
|
|
||||||
spec:
|
|
||||||
groups:
|
|
||||||
- name: EmbeddedExporter
|
|
||||||
rules:
|
|
||||||
- alert: HAProxyHighHTTP4xxErrorRateBackend
|
|
||||||
expr: ((sum by (proxy) (rate(haproxy_server_http_responses_total{code="4xx"}[1m])) / sum by (proxy) (rate(haproxy_server_http_responses_total[1m]))) * 100) > 5 and sum by (proxy) (rate(haproxy_server_http_responses_total[1m])) > 0
|
|
||||||
for: 1m
|
|
||||||
labels:
|
|
||||||
severity: critical
|
|
||||||
annotations:
|
|
||||||
summary: HAProxy high HTTP 4xx error rate backend (instance {{ `{{ $labels.instance }}` }})
|
|
||||||
description: "Too many HTTP requests with status 4xx (> 5%) on backend {{ `{{ $labels.proxy }}` }}\n VALUE = {{ `{{ $value }}` }}\n LABELS = {{ `{{ $labels }}` }}"
|
|
||||||
- alert: HAProxyHighHTTP5xxErrorRateBackend
|
|
||||||
expr: ((sum by (proxy) (rate(haproxy_server_http_responses_total{code="5xx"}[1m])) / sum by (proxy) (rate(haproxy_server_http_responses_total[1m]))) * 100) > 5 and sum by (proxy) (rate(haproxy_server_http_responses_total[1m])) > 0
|
|
||||||
for: 1m
|
|
||||||
labels:
|
|
||||||
severity: critical
|
|
||||||
annotations:
|
|
||||||
summary: HAProxy high HTTP 5xx error rate backend (instance {{ `{{ $labels.instance }}` }})
|
|
||||||
description: "Too many HTTP requests with status 5xx (> 5%) on backend {{ `{{ $labels.proxy }}` }}\n VALUE = {{ `{{ $value }}` }}\n LABELS = {{ `{{ $labels }}` }}"
|
|
||||||
- alert: HAProxyHighHTTP4xxErrorRateServer
|
|
||||||
expr: ((sum by (server) (rate(haproxy_server_http_responses_total{code="4xx"}[1m])) / sum by (server) (rate(haproxy_server_http_responses_total[1m]))) * 100) > 5 and sum by (server) (rate(haproxy_server_http_responses_total[1m])) > 0
|
|
||||||
for: 1m
|
|
||||||
labels:
|
|
||||||
severity: critical
|
|
||||||
annotations:
|
|
||||||
summary: HAProxy high HTTP 4xx error rate server (instance {{ `{{ $labels.instance }}` }})
|
|
||||||
description: "Too many HTTP requests with status 4xx (> 5%) on server {{ `{{ $labels.server }}` }}\n VALUE = {{ `{{ $value }}` }}\n LABELS = {{ `{{ $labels }}` }}"
|
|
||||||
- alert: HAProxyHighHTTP5xxErrorRateServer
|
|
||||||
expr: ((sum by (server) (rate(haproxy_server_http_responses_total{code="5xx"}[1m])) / sum by (server) (rate(haproxy_server_http_responses_total[1m]))) * 100) > 5 and sum by (server) (rate(haproxy_server_http_responses_total[1m])) > 0
|
|
||||||
for: 1m
|
|
||||||
labels:
|
|
||||||
severity: critical
|
|
||||||
annotations:
|
|
||||||
summary: HAProxy high HTTP 5xx error rate server (instance {{ `{{ $labels.instance }}` }})
|
|
||||||
description: "Too many HTTP requests with status 5xx (> 5%) on server {{ `{{ $labels.server }}` }}\n VALUE = {{ `{{ $value }}` }}\n LABELS = {{ `{{ $labels }}` }}"
|
|
||||||
- alert: HAProxyServerResponseErrors
|
|
||||||
expr: (sum by (server) (rate(haproxy_server_response_errors_total[1m])) / sum by (server) (rate(haproxy_server_http_responses_total[1m]))) * 100 > 5 and sum by (server) (rate(haproxy_server_http_responses_total[1m])) > 0
|
|
||||||
for: 1m
|
|
||||||
labels:
|
|
||||||
severity: critical
|
|
||||||
annotations:
|
|
||||||
summary: HAProxy server response errors (instance {{ `{{ $labels.instance }}` }})
|
|
||||||
description: "Too many response errors to {{ `{{ $labels.server }}` }} server (> 5%).\n VALUE = {{ `{{ $value }}` }}\n LABELS = {{ `{{ $labels }}` }}"
|
|
||||||
- alert: HAProxyBackendConnectionErrors
|
|
||||||
expr: (sum by (proxy) (rate(haproxy_backend_connection_errors_total[1m]))) > 100
|
|
||||||
for: 1m
|
|
||||||
labels:
|
|
||||||
severity: critical
|
|
||||||
annotations:
|
|
||||||
summary: HAProxy backend connection errors (instance {{ `{{ $labels.instance }}` }})
|
|
||||||
description: "Too many connection errors to {{ `{{ $labels.proxy }}` }} backend (> 100 req/s). Request throughput may be too high.\n VALUE = {{ `{{ $value }}` }}\n LABELS = {{ `{{ $labels }}` }}"
|
|
||||||
- alert: HAProxyServerConnectionErrors
|
|
||||||
expr: (sum by (proxy) (rate(haproxy_server_connection_errors_total[1m]))) > 100
|
|
||||||
for: 0m
|
|
||||||
labels:
|
|
||||||
severity: critical
|
|
||||||
annotations:
|
|
||||||
summary: HAProxy server connection errors (instance {{ `{{ $labels.instance }}` }})
|
|
||||||
description: "Too many connection errors to {{ `{{ $labels.proxy }}` }} (> 100 req/s). Request throughput may be too high.\n VALUE = {{ `{{ $value }}` }}\n LABELS = {{ `{{ $labels }}` }}"
|
|
||||||
- alert: HAProxyBackendMaxActiveSession>80%
|
|
||||||
expr: (haproxy_backend_current_sessions / haproxy_backend_limit_sessions * 100) > 80 and haproxy_backend_limit_sessions > 0
|
|
||||||
for: 2m
|
|
||||||
labels:
|
|
||||||
severity: warning
|
|
||||||
annotations:
|
|
||||||
summary: HAProxy backend max active session > 80% (instance {{ `{{ $labels.instance }}` }})
|
|
||||||
description: "Session limit from backend {{ `{{ $labels.proxy }}` }} reached 80% of limit - {{ `{{ $value | printf \"%.2f\"}}` }}%\n VALUE = {{ `{{ $value }}` }}\n LABELS = {{ `{{ $labels }}` }}"
|
|
||||||
- alert: HAProxyPendingRequests
|
|
||||||
expr: sum by (proxy) (haproxy_backend_current_queue) > 0
|
|
||||||
for: 2m
|
|
||||||
labels:
|
|
||||||
severity: warning
|
|
||||||
annotations:
|
|
||||||
summary: HAProxy pending requests (instance {{ `{{ $labels.instance }}` }})
|
|
||||||
description: "Some HAProxy requests are pending on {{ `{{ $labels.proxy }}` }} - {{ `{{ $value | printf \"%.2f\"}}` }}\n VALUE = {{ `{{ $value }}` }}\n LABELS = {{ `{{ $labels }}` }}"
|
|
||||||
- alert: HAProxyRetryHigh
|
|
||||||
expr: sum by (proxy) (rate(haproxy_backend_retry_warnings_total[1m])) > 10
|
|
||||||
for: 2m
|
|
||||||
labels:
|
|
||||||
severity: warning
|
|
||||||
annotations:
|
|
||||||
summary: HAProxy retry high (instance {{ `{{ $labels.instance }}` }})
|
|
||||||
description: "High rate of retry on {{ `{{ $labels.proxy }}` }} - {{ `{{ $value | printf \"%.2f\"}}` }}\n VALUE = {{ `{{ $value }}` }}\n LABELS = {{ `{{ $labels }}` }}"
|
|
||||||
- alert: HAProxyFrontendSecurityBlockedRequests
|
|
||||||
expr: sum by (proxy) (rate(haproxy_frontend_denied_connections_total[2m])) > 10
|
|
||||||
for: 2m
|
|
||||||
labels:
|
|
||||||
severity: warning
|
|
||||||
annotations:
|
|
||||||
summary: HAProxy frontend security blocked requests (instance {{ `{{ $labels.instance }}` }})
|
|
||||||
description: "HAProxy is blocking requests for security reason\n VALUE = {{ `{{ $value }}` }}\n LABELS = {{ `{{ $labels }}` }}"
|
|
||||||
- alert: HAProxyServerHealthcheckFailure
|
|
||||||
expr: increase(haproxy_server_check_failures_total[1m]) > 2
|
|
||||||
for: 0m
|
|
||||||
labels:
|
|
||||||
severity: warning
|
|
||||||
annotations:
|
|
||||||
summary: HAProxy server healthcheck failure (instance {{ `{{ $labels.instance }}` }})
|
|
||||||
description: "Some server healthcheck are failing on {{ `{{ $labels.server }}` }} ({{ `{{ $value }}` }} in the last 1m)\n VALUE = {{ `{{ $value }}` }}\n LABELS = {{ `{{ $labels }}` }}"
|
|
||||||
@@ -13,8 +13,8 @@ argo-cd:
|
|||||||
connectors:
|
connectors:
|
||||||
- config:
|
- config:
|
||||||
issuer: https://authentik.alexlebens.net/application/o/argocd/
|
issuer: https://authentik.alexlebens.net/application/o/argocd/
|
||||||
clientID: $argocd-oidc-authentik:client
|
clientID: $argocd-oidc-secret:client
|
||||||
clientSecret: $argocd-oidc-authentik:secret
|
clientSecret: $argocd-oidc-secret:secret
|
||||||
insecureEnableGroups: true
|
insecureEnableGroups: true
|
||||||
scopes:
|
scopes:
|
||||||
- openid
|
- openid
|
||||||
@@ -103,7 +103,7 @@ argo-cd:
|
|||||||
enabled: true
|
enabled: true
|
||||||
image:
|
image:
|
||||||
repository: haproxy
|
repository: haproxy
|
||||||
tag: 3.3.8-alpine@sha256:10690acb357180d5214c6fce59e2cefded6cc72b0f7e3febb323fea95b27e349
|
tag: 3.3.6-alpine@sha256:744be2dca649a44d490a4c565d36968d19482dd387f1bdd44c168f4322bc6b1e
|
||||||
resources:
|
resources:
|
||||||
requests:
|
requests:
|
||||||
cpu: 5m
|
cpu: 5m
|
||||||
@@ -205,7 +205,7 @@ argo-cd:
|
|||||||
argocdUrl: https://argocd.alexlebens.net
|
argocdUrl: https://argocd.alexlebens.net
|
||||||
secret:
|
secret:
|
||||||
create: false
|
create: false
|
||||||
name: argocd-notifications-ntfy
|
name: argocd-notifications-secret
|
||||||
metrics:
|
metrics:
|
||||||
enabled: true
|
enabled: true
|
||||||
serviceMonitor:
|
serviceMonitor:
|
||||||
|
|||||||
@@ -4,9 +4,9 @@ dependencies:
|
|||||||
version: 4.6.2
|
version: 4.6.2
|
||||||
- name: volsync-target
|
- name: volsync-target
|
||||||
repository: oci://harbor.alexlebens.net/helm-charts
|
repository: oci://harbor.alexlebens.net/helm-charts
|
||||||
version: 1.1.1
|
version: 0.8.0
|
||||||
- name: volsync-target
|
- name: volsync-target
|
||||||
repository: oci://harbor.alexlebens.net/helm-charts
|
repository: oci://harbor.alexlebens.net/helm-charts
|
||||||
version: 1.1.1
|
version: 0.8.0
|
||||||
digest: sha256:2275b211b02253019e5830e0258f936f1494380cc50cea03bc31d75281365dcc
|
digest: sha256:7ee4cfdf7f908401c39b3cda0cf8783b25dcb9cf93e7c911609bab9e303ec5bf
|
||||||
generated: "2026-04-28T17:54:10.288277-05:00"
|
generated: "2026-03-06T01:05:03.534042627Z"
|
||||||
|
|||||||
@@ -24,12 +24,12 @@ dependencies:
|
|||||||
version: 4.6.2
|
version: 4.6.2
|
||||||
- name: volsync-target
|
- name: volsync-target
|
||||||
alias: volsync-target-config
|
alias: volsync-target-config
|
||||||
version: 1.1.1
|
version: 0.8.0
|
||||||
repository: oci://harbor.alexlebens.net/helm-charts
|
repository: oci://harbor.alexlebens.net/helm-charts
|
||||||
- name: volsync-target
|
- name: volsync-target
|
||||||
alias: volsync-target-metadata
|
alias: volsync-target-metadata
|
||||||
version: 1.1.1
|
version: 0.8.0
|
||||||
repository: oci://harbor.alexlebens.net/helm-charts
|
repository: oci://harbor.alexlebens.net/helm-charts
|
||||||
icon: https://cdn.jsdelivr.net/gh/selfhst/icons/png/audiobookshelf.png
|
icon: https://cdn.jsdelivr.net/gh/selfhst/icons/png/audiobookshelf.png
|
||||||
# renovate: datasource=github-releases depName=advplyr/audiobookshelf
|
# renovate: datasource=github-releases depName=advplyr/audiobookshelf
|
||||||
appVersion: 2.34.0
|
appVersion: 2.33.1
|
||||||
|
|||||||
@@ -1,27 +0,0 @@
|
|||||||
{{/*
|
|
||||||
Common labels
|
|
||||||
*/}}
|
|
||||||
{{- define "custom.labels" -}}
|
|
||||||
{{ include "custom.selectorLabels" $ }}
|
|
||||||
{{- end }}
|
|
||||||
|
|
||||||
{{/*
|
|
||||||
Selector labels
|
|
||||||
*/}}
|
|
||||||
{{- define "custom.selectorLabels" -}}
|
|
||||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
|
||||||
app.kubernetes.io/part-of: {{ .Release.Name }}
|
|
||||||
{{- end }}
|
|
||||||
|
|
||||||
{{/*
|
|
||||||
NFS names
|
|
||||||
*/}}
|
|
||||||
{{- define "custom.booksNfsName" -}}
|
|
||||||
audiobookshelf-books-nfs-storage
|
|
||||||
{{- end -}}
|
|
||||||
{{- define "custom.audiobooksNfsName" -}}
|
|
||||||
audiobookshelf-audiobooks-nfs-storage
|
|
||||||
{{- end -}}
|
|
||||||
{{- define "custom.podcastsNfsName" -}}
|
|
||||||
audiobookshelf-podcasts-nfs-storage
|
|
||||||
{{- end -}}
|
|
||||||
@@ -1,27 +1,18 @@
|
|||||||
apiVersion: external-secrets.io/v1
|
apiVersion: external-secrets.io/v1
|
||||||
kind: ExternalSecret
|
kind: ExternalSecret
|
||||||
metadata:
|
metadata:
|
||||||
name: audiobookshelf-config-apprise
|
name: audiobookshelf-apprise-config
|
||||||
namespace: {{ .Release.Namespace }}
|
namespace: {{ .Release.Namespace }}
|
||||||
labels:
|
labels:
|
||||||
app.kubernetes.io/name: audiobookshelf-config-apprise
|
app.kubernetes.io/name: audiobookshelf-apprise-config
|
||||||
{{- include "custom.labels" . | nindent 4 }}
|
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||||
|
app.kubernetes.io/part-of: {{ .Release.Name }}
|
||||||
spec:
|
spec:
|
||||||
secretStoreRef:
|
secretStoreRef:
|
||||||
kind: ClusterSecretStore
|
kind: ClusterSecretStore
|
||||||
name: openbao
|
name: vault
|
||||||
target:
|
|
||||||
template:
|
|
||||||
mergePolicy: Merge
|
|
||||||
engineVersion: v2
|
|
||||||
data:
|
data:
|
||||||
ntfy-url: "{{ `{{ .endpoint }}` }}/{{ `{{ .topic }}` }}"
|
- secretKey: ntfy-url
|
||||||
data:
|
|
||||||
- secretKey: endpoint
|
|
||||||
remoteRef:
|
remoteRef:
|
||||||
key: /cl01tl/ntfy/users/cl01tl
|
key: /cl01tl/audiobookshelf/apprise
|
||||||
property: internal-endpoint-credential
|
property: ntfy-url
|
||||||
- secretKey: topic
|
|
||||||
remoteRef:
|
|
||||||
key: /cl01tl/ntfy/topics
|
|
||||||
property: audiobookshelf
|
|
||||||
|
|||||||
@@ -1,13 +1,14 @@
|
|||||||
apiVersion: v1
|
apiVersion: v1
|
||||||
kind: PersistentVolumeClaim
|
kind: PersistentVolumeClaim
|
||||||
metadata:
|
metadata:
|
||||||
name: {{ include "custom.booksNfsName" . }}
|
name: audiobookshelf-books-nfs-storage
|
||||||
namespace: {{ .Release.Namespace }}
|
namespace: {{ .Release.Namespace }}
|
||||||
labels:
|
labels:
|
||||||
app.kubernetes.io/name: {{ include "custom.booksNfsName" . }}
|
app.kubernetes.io/name: audiobookshelf-books-nfs-storage
|
||||||
{{ include "custom.labels" . | nindent 4 }}
|
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||||
|
app.kubernetes.io/part-of: {{ .Release.Name }}
|
||||||
spec:
|
spec:
|
||||||
volumeName: {{ include "custom.booksNfsName" . }}
|
volumeName: audiobookshelf-books-nfs-storage
|
||||||
storageClassName: nfs-client
|
storageClassName: nfs-client
|
||||||
accessModes:
|
accessModes:
|
||||||
- ReadWriteMany
|
- ReadWriteMany
|
||||||
@@ -19,13 +20,14 @@ spec:
|
|||||||
apiVersion: v1
|
apiVersion: v1
|
||||||
kind: PersistentVolumeClaim
|
kind: PersistentVolumeClaim
|
||||||
metadata:
|
metadata:
|
||||||
name: {{ include "custom.audiobooksNfsName" . }}
|
name: audiobookshelf-audiobooks-nfs-storage
|
||||||
namespace: {{ .Release.Namespace }}
|
namespace: {{ .Release.Namespace }}
|
||||||
labels:
|
labels:
|
||||||
app.kubernetes.io/name: {{ include "custom.audiobooksNfsName" . }}
|
app.kubernetes.io/name: audiobookshelf-audiobooks-nfs-storage
|
||||||
{{- include "custom.labels" . | nindent 4 }}
|
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||||
|
app.kubernetes.io/part-of: {{ .Release.Name }}
|
||||||
spec:
|
spec:
|
||||||
volumeName: {{ include "custom.audiobooksNfsName" . }}
|
volumeName: audiobookshelf-audiobooks-nfs-storage
|
||||||
storageClassName: nfs-client
|
storageClassName: nfs-client
|
||||||
accessModes:
|
accessModes:
|
||||||
- ReadWriteMany
|
- ReadWriteMany
|
||||||
@@ -37,13 +39,14 @@ spec:
|
|||||||
apiVersion: v1
|
apiVersion: v1
|
||||||
kind: PersistentVolumeClaim
|
kind: PersistentVolumeClaim
|
||||||
metadata:
|
metadata:
|
||||||
name: {{ include "custom.podcastsNfsName" . }}
|
name: audiobookshelf-podcasts-nfs-storage
|
||||||
namespace: {{ .Release.Namespace }}
|
namespace: {{ .Release.Namespace }}
|
||||||
labels:
|
labels:
|
||||||
app.kubernetes.io/name: {{ include "custom.podcastsNfsName" . }}
|
app.kubernetes.io/name: audiobookshelf-podcasts-nfs-storage
|
||||||
{{- include "custom.labels" . | nindent 4 }}
|
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||||
|
app.kubernetes.io/part-of: {{ .Release.Name }}
|
||||||
spec:
|
spec:
|
||||||
volumeName: {{ include "custom.podcastsNfsName" . }}
|
volumeName: audiobookshelf-podcasts-nfs-storage
|
||||||
storageClassName: nfs-client
|
storageClassName: nfs-client
|
||||||
accessModes:
|
accessModes:
|
||||||
- ReadWriteMany
|
- ReadWriteMany
|
||||||
|
|||||||
@@ -1,11 +1,12 @@
|
|||||||
apiVersion: v1
|
apiVersion: v1
|
||||||
kind: PersistentVolume
|
kind: PersistentVolume
|
||||||
metadata:
|
metadata:
|
||||||
name: {{ include "custom.booksNfsName" . }}
|
name: audiobookshelf-books-nfs-storage
|
||||||
namespace: {{ .Release.Namespace }}
|
namespace: {{ .Release.Namespace }}
|
||||||
labels:
|
labels:
|
||||||
app.kubernetes.io/name: {{ include "custom.booksNfsName" . }}
|
app.kubernetes.io/name: audiobookshelf-books-nfs-storage
|
||||||
{{- include "custom.labels" . | nindent 4 }}
|
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||||
|
app.kubernetes.io/part-of: {{ .Release.Name }}
|
||||||
spec:
|
spec:
|
||||||
persistentVolumeReclaimPolicy: Retain
|
persistentVolumeReclaimPolicy: Retain
|
||||||
storageClassName: nfs-client
|
storageClassName: nfs-client
|
||||||
@@ -25,11 +26,12 @@ spec:
|
|||||||
apiVersion: v1
|
apiVersion: v1
|
||||||
kind: PersistentVolume
|
kind: PersistentVolume
|
||||||
metadata:
|
metadata:
|
||||||
name: {{ include "custom.audiobooksNfsName" . }}
|
name: audiobookshelf-audiobooks-nfs-storage
|
||||||
namespace: {{ .Release.Namespace }}
|
namespace: {{ .Release.Namespace }}
|
||||||
labels:
|
labels:
|
||||||
app.kubernetes.io/name: {{ include "custom.audiobooksNfsName" . }}
|
app.kubernetes.io/name: audiobookshelf-audiobooks-nfs-storage
|
||||||
{{- include "custom.labels" . | nindent 4 }}
|
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||||
|
app.kubernetes.io/part-of: {{ .Release.Name }}
|
||||||
spec:
|
spec:
|
||||||
persistentVolumeReclaimPolicy: Retain
|
persistentVolumeReclaimPolicy: Retain
|
||||||
storageClassName: nfs-client
|
storageClassName: nfs-client
|
||||||
@@ -49,11 +51,12 @@ spec:
|
|||||||
apiVersion: v1
|
apiVersion: v1
|
||||||
kind: PersistentVolume
|
kind: PersistentVolume
|
||||||
metadata:
|
metadata:
|
||||||
name: {{ include "custom.podcastsNfsName" . }}
|
name: audiobookshelf-podcasts-nfs-storage
|
||||||
namespace: {{ .Release.Namespace }}
|
namespace: {{ .Release.Namespace }}
|
||||||
labels:
|
labels:
|
||||||
app.kubernetes.io/name: {{ include "custom.podcastsNfsName" . }}
|
app.kubernetes.io/name: audiobookshelf-podcasts-nfs-storage
|
||||||
{{- include "custom.labels" . | nindent 4 }}
|
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||||
|
app.kubernetes.io/part-of: {{ .Release.Name }}
|
||||||
spec:
|
spec:
|
||||||
persistentVolumeReclaimPolicy: Retain
|
persistentVolumeReclaimPolicy: Retain
|
||||||
storageClassName: nfs-client
|
storageClassName: nfs-client
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ audiobookshelf:
|
|||||||
main:
|
main:
|
||||||
image:
|
image:
|
||||||
repository: ghcr.io/advplyr/audiobookshelf
|
repository: ghcr.io/advplyr/audiobookshelf
|
||||||
tag: 2.34.0@sha256:4143292c530f6ac6700afd13360c04f477e4f1a81c1c97c4224b1c7e4330c5c4
|
tag: 2.33.1@sha256:a4a5841bba093d81e5f4ad1eaedb4da3fda6dbb2528c552349da50ad1f7ae708
|
||||||
env:
|
env:
|
||||||
- name: TZ
|
- name: TZ
|
||||||
value: America/Chicago
|
value: America/Chicago
|
||||||
@@ -23,7 +23,7 @@ audiobookshelf:
|
|||||||
apprise-api:
|
apprise-api:
|
||||||
image:
|
image:
|
||||||
repository: ghcr.io/caronc/apprise
|
repository: ghcr.io/caronc/apprise
|
||||||
tag: v1.4.1@sha256:25e0577915c2f06233ae1dce077f05c0fc9ba4f0ea89de5aee18a32b2ee9a75c
|
tag: v1.3.3@sha256:4bfeac268ba87b8e08e308c9aa0182fe99e9501ec464027afc333d1634e65977
|
||||||
env:
|
env:
|
||||||
- name: TZ
|
- name: TZ
|
||||||
value: America/Chicago
|
value: America/Chicago
|
||||||
@@ -40,7 +40,7 @@ audiobookshelf:
|
|||||||
- name: APPRISE_STATELESS_URLS
|
- name: APPRISE_STATELESS_URLS
|
||||||
valueFrom:
|
valueFrom:
|
||||||
secretKeyRef:
|
secretKeyRef:
|
||||||
name: audiobookshelf-config-apprise
|
name: audiobookshelf-apprise-config
|
||||||
key: ntfy-url
|
key: ntfy-url
|
||||||
service:
|
service:
|
||||||
main:
|
main:
|
||||||
@@ -49,9 +49,11 @@ audiobookshelf:
|
|||||||
http:
|
http:
|
||||||
port: 80
|
port: 80
|
||||||
targetPort: 80
|
targetPort: 80
|
||||||
|
protocol: HTTP
|
||||||
apprise:
|
apprise:
|
||||||
port: 8000
|
port: 8000
|
||||||
targetPort: 8000
|
targetPort: 8000
|
||||||
|
protocol: HTTP
|
||||||
serviceMonitor:
|
serviceMonitor:
|
||||||
main:
|
main:
|
||||||
selector:
|
selector:
|
||||||
|
|||||||
@@ -1,15 +1,15 @@
|
|||||||
dependencies:
|
dependencies:
|
||||||
- name: authentik
|
- name: authentik
|
||||||
repository: https://charts.goauthentik.io/
|
repository: https://charts.goauthentik.io/
|
||||||
version: 2026.2.2
|
version: 2026.2.1
|
||||||
- name: cloudflared
|
- name: cloudflared
|
||||||
repository: oci://harbor.alexlebens.net/helm-charts
|
repository: oci://harbor.alexlebens.net/helm-charts
|
||||||
version: 2.6.0
|
version: 2.4.0
|
||||||
- name: postgres-cluster
|
- name: postgres-cluster
|
||||||
repository: oci://harbor.alexlebens.net/helm-charts
|
repository: oci://harbor.alexlebens.net/helm-charts
|
||||||
version: 7.12.1
|
version: 7.10.0
|
||||||
- name: valkey
|
- name: valkey
|
||||||
repository: oci://harbor.alexlebens.net/helm-charts
|
repository: oci://harbor.alexlebens.net/helm-charts
|
||||||
version: 0.7.0
|
version: 0.4.0
|
||||||
digest: sha256:808a2347fadb6a48800c0f7355c422c9ed2ce9f7d1ca3b7d64d62574be98e1f8
|
digest: sha256:8c353c5dad4c3d04d518c1445497f0d1cb64261a4201ae17a2c0874454b807a7
|
||||||
generated: "2026-05-02T01:46:08.112423002Z"
|
generated: "2026-03-15T20:04:35.99407071Z"
|
||||||
|
|||||||
@@ -18,18 +18,18 @@ maintainers:
|
|||||||
- name: alexlebens
|
- name: alexlebens
|
||||||
dependencies:
|
dependencies:
|
||||||
- name: authentik
|
- name: authentik
|
||||||
version: 2026.2.2
|
version: 2026.2.1
|
||||||
repository: https://charts.goauthentik.io/
|
repository: https://charts.goauthentik.io/
|
||||||
- name: cloudflared
|
- name: cloudflared
|
||||||
repository: oci://harbor.alexlebens.net/helm-charts
|
repository: oci://harbor.alexlebens.net/helm-charts
|
||||||
version: 2.6.0
|
version: 2.4.0
|
||||||
- name: postgres-cluster
|
- name: postgres-cluster
|
||||||
alias: postgres-18-cluster
|
alias: postgres-18-cluster
|
||||||
version: 7.12.1
|
version: 7.10.0
|
||||||
repository: oci://harbor.alexlebens.net/helm-charts
|
repository: oci://harbor.alexlebens.net/helm-charts
|
||||||
- name: valkey
|
- name: valkey
|
||||||
alias: valkey
|
alias: valkey
|
||||||
version: 0.7.0
|
version: 0.4.0
|
||||||
repository: oci://harbor.alexlebens.net/helm-charts
|
repository: oci://harbor.alexlebens.net/helm-charts
|
||||||
icon: https://cdn.jsdelivr.net/gh/selfhst/icons/png/authentik.png
|
icon: https://cdn.jsdelivr.net/gh/selfhst/icons/png/authentik.png
|
||||||
# renovate: datasource=github-releases depName=goauthentik/authentik
|
# renovate: datasource=github-releases depName=goauthentik/authentik
|
||||||
|
|||||||
@@ -1,14 +0,0 @@
|
|||||||
{{/*
|
|
||||||
Common labels
|
|
||||||
*/}}
|
|
||||||
{{- define "custom.labels" -}}
|
|
||||||
{{ include "custom.selectorLabels" $ }}
|
|
||||||
{{- end }}
|
|
||||||
|
|
||||||
{{/*
|
|
||||||
Selector labels
|
|
||||||
*/}}
|
|
||||||
{{- define "custom.selectorLabels" -}}
|
|
||||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
|
||||||
app.kubernetes.io/part-of: {{ .Release.Name }}
|
|
||||||
{{- end }}
|
|
||||||
@@ -1,15 +1,16 @@
|
|||||||
apiVersion: external-secrets.io/v1
|
apiVersion: external-secrets.io/v1
|
||||||
kind: ExternalSecret
|
kind: ExternalSecret
|
||||||
metadata:
|
metadata:
|
||||||
name: authentik-key
|
name: authentik-key-secret
|
||||||
namespace: {{ .Release.Namespace }}
|
namespace: {{ .Release.Namespace }}
|
||||||
labels:
|
labels:
|
||||||
app.kubernetes.io/name: authentik-key
|
app.kubernetes.io/name: authentik-key-secret
|
||||||
{{- include "custom.labels" . | nindent 4 }}
|
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||||
|
app.kubernetes.io/part-of: {{ .Release.Name }}
|
||||||
spec:
|
spec:
|
||||||
secretStoreRef:
|
secretStoreRef:
|
||||||
kind: ClusterSecretStore
|
kind: ClusterSecretStore
|
||||||
name: openbao
|
name: vault
|
||||||
data:
|
data:
|
||||||
- secretKey: key
|
- secretKey: key
|
||||||
remoteRef:
|
remoteRef:
|
||||||
|
|||||||
@@ -1,11 +1,12 @@
|
|||||||
apiVersion: networking.k8s.io/v1
|
apiVersion: networking.k8s.io/v1
|
||||||
kind: Ingress
|
kind: Ingress
|
||||||
metadata:
|
metadata:
|
||||||
name: {{ .Release.Name }}-tailscale
|
name: authentik-tailscale
|
||||||
namespace: {{ .Release.Namespace }}
|
namespace: {{ .Release.Namespace }}
|
||||||
labels:
|
labels:
|
||||||
app.kubernetes.io/name: {{ .Release.Name }}-tailscale
|
app.kubernetes.io/name: authentik-tailscale
|
||||||
{{- include "custom.labels" . | nindent 4 }}
|
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||||
|
app.kubernetes.io/part-of: {{ .Release.Name }}
|
||||||
tailscale.com/proxy-class: no-metrics
|
tailscale.com/proxy-class: no-metrics
|
||||||
annotations:
|
annotations:
|
||||||
tailscale.com/experimental-forward-cluster-traffic-via-ingress: "true"
|
tailscale.com/experimental-forward-cluster-traffic-via-ingress: "true"
|
||||||
@@ -25,4 +26,4 @@ spec:
|
|||||||
service:
|
service:
|
||||||
name: authentik-server
|
name: authentik-server
|
||||||
port:
|
port:
|
||||||
name: http
|
number: 80
|
||||||
|
|||||||
@@ -5,7 +5,8 @@ metadata:
|
|||||||
namespace: {{ .Release.Namespace }}
|
namespace: {{ .Release.Namespace }}
|
||||||
labels:
|
labels:
|
||||||
app.kubernetes.io/name: allow-outpost-cross-namespace-access
|
app.kubernetes.io/name: allow-outpost-cross-namespace-access
|
||||||
{{- include "custom.labels" . | nindent 4 }}
|
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||||
|
app.kubernetes.io/part-of: {{ .Release.Name }}
|
||||||
spec:
|
spec:
|
||||||
from:
|
from:
|
||||||
- group: gateway.networking.k8s.io
|
- group: gateway.networking.k8s.io
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ authentik:
|
|||||||
- name: AUTHENTIK_SECRET_KEY
|
- name: AUTHENTIK_SECRET_KEY
|
||||||
valueFrom:
|
valueFrom:
|
||||||
secretKeyRef:
|
secretKeyRef:
|
||||||
name: authentik-key
|
name: authentik-key-secret
|
||||||
key: key
|
key: key
|
||||||
- name: AUTHENTIK_POSTGRESQL__HOST
|
- name: AUTHENTIK_POSTGRESQL__HOST
|
||||||
valueFrom:
|
valueFrom:
|
||||||
@@ -77,10 +77,6 @@ authentik:
|
|||||||
enabled: true
|
enabled: true
|
||||||
postgres-18-cluster:
|
postgres-18-cluster:
|
||||||
mode: recovery
|
mode: recovery
|
||||||
cluster:
|
|
||||||
resources:
|
|
||||||
requests:
|
|
||||||
memory: 150Mi
|
|
||||||
recovery:
|
recovery:
|
||||||
method: objectStore
|
method: objectStore
|
||||||
objectStore:
|
objectStore:
|
||||||
|
|||||||
@@ -4,9 +4,9 @@ dependencies:
|
|||||||
version: 4.6.2
|
version: 4.6.2
|
||||||
- name: volsync-target
|
- name: volsync-target
|
||||||
repository: oci://harbor.alexlebens.net/helm-charts
|
repository: oci://harbor.alexlebens.net/helm-charts
|
||||||
version: 1.1.1
|
version: 0.8.0
|
||||||
- name: volsync-target
|
- name: volsync-target
|
||||||
repository: oci://harbor.alexlebens.net/helm-charts
|
repository: oci://harbor.alexlebens.net/helm-charts
|
||||||
version: 1.1.1
|
version: 0.8.0
|
||||||
digest: sha256:82e85dc79199cc8b75dde412d595621817b3fa2c073c131162d0079a0b63f369
|
digest: sha256:f203538010828e77336f3cf39451a1072c90aeb8ece7c173a3476c49883b46d1
|
||||||
generated: "2026-04-28T23:31:05.864191451Z"
|
generated: "2026-03-06T01:05:24.935421139Z"
|
||||||
|
|||||||
@@ -20,12 +20,12 @@ dependencies:
|
|||||||
version: 4.6.2
|
version: 4.6.2
|
||||||
- name: volsync-target
|
- name: volsync-target
|
||||||
alias: volsync-target-config
|
alias: volsync-target-config
|
||||||
version: 1.1.1
|
version: 0.8.0
|
||||||
repository: oci://harbor.alexlebens.net/helm-charts
|
repository: oci://harbor.alexlebens.net/helm-charts
|
||||||
- name: volsync-target
|
- name: volsync-target
|
||||||
alias: volsync-target-data
|
alias: volsync-target-data
|
||||||
version: 1.1.1
|
version: 0.8.0
|
||||||
repository: oci://harbor.alexlebens.net/helm-charts
|
repository: oci://harbor.alexlebens.net/helm-charts
|
||||||
icon: https://cdn.jsdelivr.net/gh/selfhst/icons/png/backrest.png
|
icon: https://cdn.jsdelivr.net/gh/selfhst/icons/png/backrest.png
|
||||||
# renovate: datasource=github-releases depName=garethgeorge/backrest
|
# renovate: datasource=github-releases depName=garethgeorge/backrest
|
||||||
appVersion: v1.13.0
|
appVersion: v1.12.1
|
||||||
|
|||||||
@@ -1,24 +0,0 @@
|
|||||||
{{/*
|
|
||||||
Common labels
|
|
||||||
*/}}
|
|
||||||
{{- define "custom.labels" -}}
|
|
||||||
{{ include "custom.selectorLabels" $ }}
|
|
||||||
{{- end }}
|
|
||||||
|
|
||||||
{{/*
|
|
||||||
Selector labels
|
|
||||||
*/}}
|
|
||||||
{{- define "custom.selectorLabels" -}}
|
|
||||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
|
||||||
app.kubernetes.io/part-of: {{ .Release.Name }}
|
|
||||||
{{- end }}
|
|
||||||
|
|
||||||
{{/*
|
|
||||||
NFS names
|
|
||||||
*/}}
|
|
||||||
{{- define "custom.storageNfsName" -}}
|
|
||||||
backrest-nfs-storage
|
|
||||||
{{- end -}}
|
|
||||||
{{- define "custom.shareNfsName" -}}
|
|
||||||
backrest-nfs-share
|
|
||||||
{{- end -}}
|
|
||||||
@@ -1,13 +1,14 @@
|
|||||||
apiVersion: v1
|
apiVersion: v1
|
||||||
kind: PersistentVolumeClaim
|
kind: PersistentVolumeClaim
|
||||||
metadata:
|
metadata:
|
||||||
name: {{ include "custom.storageNfsName" . }}
|
name: backrest-nfs-storage
|
||||||
namespace: {{ .Release.Namespace }}
|
namespace: {{ .Release.Namespace }}
|
||||||
labels:
|
labels:
|
||||||
app.kubernetes.io/name: {{ include "custom.storageNfsName" . }}
|
app.kubernetes.io/name: backrest-nfs-storage
|
||||||
{{- include "custom.labels" . | nindent 4 }}
|
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||||
|
app.kubernetes.io/part-of: {{ .Release.Name }}
|
||||||
spec:
|
spec:
|
||||||
volumeName: {{ include "custom.storageNfsName" . }}
|
volumeName: backrest-nfs-storage
|
||||||
storageClassName: nfs-client
|
storageClassName: nfs-client
|
||||||
accessModes:
|
accessModes:
|
||||||
- ReadWriteMany
|
- ReadWriteMany
|
||||||
@@ -19,13 +20,14 @@ spec:
|
|||||||
apiVersion: v1
|
apiVersion: v1
|
||||||
kind: PersistentVolumeClaim
|
kind: PersistentVolumeClaim
|
||||||
metadata:
|
metadata:
|
||||||
name: {{ include "custom.shareNfsName" . }}
|
name: backrest-nfs-share
|
||||||
namespace: {{ .Release.Namespace }}
|
namespace: {{ .Release.Namespace }}
|
||||||
labels:
|
labels:
|
||||||
app.kubernetes.io/name: {{ include "custom.shareNfsName" . }}
|
app.kubernetes.io/name: backrest-nfs-share
|
||||||
{{- include "custom.labels" . | nindent 4 }}
|
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||||
|
app.kubernetes.io/part-of: {{ .Release.Name }}
|
||||||
spec:
|
spec:
|
||||||
volumeName: {{ include "custom.shareNfsName" . }}
|
volumeName: backrest-nfs-share
|
||||||
storageClassName: nfs-client
|
storageClassName: nfs-client
|
||||||
accessModes:
|
accessModes:
|
||||||
- ReadWriteMany
|
- ReadWriteMany
|
||||||
|
|||||||
@@ -1,11 +1,12 @@
|
|||||||
apiVersion: v1
|
apiVersion: v1
|
||||||
kind: PersistentVolume
|
kind: PersistentVolume
|
||||||
metadata:
|
metadata:
|
||||||
name: {{ include "custom.storageNfsName" . }}
|
name: backrest-nfs-storage
|
||||||
namespace: {{ .Release.Namespace }}
|
namespace: {{ .Release.Namespace }}
|
||||||
labels:
|
labels:
|
||||||
app.kubernetes.io/name: {{ include "custom.storageNfsName" . }}
|
app.kubernetes.io/name: backrest-nfs-storage
|
||||||
{{- include "custom.labels" . | nindent 4 }}
|
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||||
|
app.kubernetes.io/part-of: {{ .Release.Name }}
|
||||||
spec:
|
spec:
|
||||||
persistentVolumeReclaimPolicy: Retain
|
persistentVolumeReclaimPolicy: Retain
|
||||||
storageClassName: nfs-client
|
storageClassName: nfs-client
|
||||||
@@ -25,11 +26,12 @@ spec:
|
|||||||
apiVersion: v1
|
apiVersion: v1
|
||||||
kind: PersistentVolume
|
kind: PersistentVolume
|
||||||
metadata:
|
metadata:
|
||||||
name: {{ include "custom.shareNfsName" . }}
|
name: backrest-nfs-share
|
||||||
namespace: {{ .Release.Namespace }}
|
namespace: {{ .Release.Namespace }}
|
||||||
labels:
|
labels:
|
||||||
app.kubernetes.io/name: {{ include "custom.shareNfsName" . }}
|
app.kubernetes.io/name: backrest-nfs-share
|
||||||
{{- include "custom.labels" . | nindent 4 }}
|
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||||
|
app.kubernetes.io/part-of: {{ .Release.Name }}
|
||||||
spec:
|
spec:
|
||||||
persistentVolumeReclaimPolicy: Retain
|
persistentVolumeReclaimPolicy: Retain
|
||||||
storageClassName: nfs-client
|
storageClassName: nfs-client
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ backrest:
|
|||||||
main:
|
main:
|
||||||
image:
|
image:
|
||||||
repository: ghcr.io/garethgeorge/backrest
|
repository: ghcr.io/garethgeorge/backrest
|
||||||
tag: v1.13.0@sha256:9c9966b5c285ec791a6b06cb4545fa0247424d05442e12f9558b4322d9f8a15f
|
tag: v1.12.1@sha256:f4d34bd6fa985d13bdb6c01c5d8727e07708899afa9567d800808357d77b9fb0
|
||||||
env:
|
env:
|
||||||
- name: TZ
|
- name: TZ
|
||||||
value: America/Chicago
|
value: America/Chicago
|
||||||
@@ -31,6 +31,7 @@ backrest:
|
|||||||
http:
|
http:
|
||||||
port: 80
|
port: 80
|
||||||
targetPort: 9898
|
targetPort: 9898
|
||||||
|
protocol: TCP
|
||||||
serviceMonitor:
|
serviceMonitor:
|
||||||
main:
|
main:
|
||||||
selector:
|
selector:
|
||||||
|
|||||||
@@ -4,6 +4,6 @@ dependencies:
|
|||||||
version: 4.6.2
|
version: 4.6.2
|
||||||
- name: volsync-target
|
- name: volsync-target
|
||||||
repository: oci://harbor.alexlebens.net/helm-charts
|
repository: oci://harbor.alexlebens.net/helm-charts
|
||||||
version: 1.1.1
|
version: 0.8.0
|
||||||
digest: sha256:9228c387a1b50545d8b348c94ae55b17952d32652ca48d0329c65f4ee651706e
|
digest: sha256:ce88e4cd451613c9dbc25d285700970789ff678452ef277f3c8465dbf6157f1f
|
||||||
generated: "2026-04-28T23:31:15.743170757Z"
|
generated: "2026-03-06T01:05:44.405374459Z"
|
||||||
|
|||||||
@@ -5,14 +5,11 @@ description: Bazarr
|
|||||||
keywords:
|
keywords:
|
||||||
- bazarr
|
- bazarr
|
||||||
- subtitles
|
- subtitles
|
||||||
- servarr
|
|
||||||
home: https://docs.alexlebens.dev/applications/bazarr/
|
home: https://docs.alexlebens.dev/applications/bazarr/
|
||||||
sources:
|
sources:
|
||||||
- https://github.com/morpheus65535/bazarr
|
- https://github.com/morpheus65535/bazarr
|
||||||
- https://github.com/linuxserver/docker-bazarr
|
- https://github.com/linuxserver/docker-bazarr
|
||||||
- https://github.com/onedr0p/exportarr
|
|
||||||
- https://github.com/linuxserver/docker-bazarr/pkgs/container/bazarr
|
- https://github.com/linuxserver/docker-bazarr/pkgs/container/bazarr
|
||||||
- https://github.com/onedr0p/exportarr/pkgs/container/exportarr
|
|
||||||
- https://github.com/bjw-s-labs/helm-charts/tree/main/charts/other/app-template
|
- https://github.com/bjw-s-labs/helm-charts/tree/main/charts/other/app-template
|
||||||
- https://gitea.alexlebens.dev/alexlebens/helm-charts/src/branch/main/charts/volsync-target
|
- https://gitea.alexlebens.dev/alexlebens/helm-charts/src/branch/main/charts/volsync-target
|
||||||
maintainers:
|
maintainers:
|
||||||
@@ -24,8 +21,8 @@ dependencies:
|
|||||||
version: 4.6.2
|
version: 4.6.2
|
||||||
- name: volsync-target
|
- name: volsync-target
|
||||||
alias: volsync-target-config
|
alias: volsync-target-config
|
||||||
version: 1.1.1
|
version: 0.8.0
|
||||||
repository: oci://harbor.alexlebens.net/helm-charts
|
repository: oci://harbor.alexlebens.net/helm-charts
|
||||||
icon: https://cdn.jsdelivr.net/gh/selfhst/icons/png/bazarr.png
|
icon: https://cdn.jsdelivr.net/gh/selfhst/icons/png/bazarr.png
|
||||||
# renovate: datasource=github-releases depName=linuxserver/docker-bazarr
|
# renovate: datasource=github-releases depName=morpheus65535/bazarr
|
||||||
appVersion: v1.5.6-ls342
|
appVersion: 1.5.6
|
||||||
|
|||||||
@@ -1,21 +0,0 @@
|
|||||||
{{/*
|
|
||||||
Common labels
|
|
||||||
*/}}
|
|
||||||
{{- define "custom.labels" -}}
|
|
||||||
{{ include "custom.selectorLabels" $ }}
|
|
||||||
{{- end }}
|
|
||||||
|
|
||||||
{{/*
|
|
||||||
Selector labels
|
|
||||||
*/}}
|
|
||||||
{{- define "custom.selectorLabels" -}}
|
|
||||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
|
||||||
app.kubernetes.io/part-of: {{ .Release.Name }}
|
|
||||||
{{- end }}
|
|
||||||
|
|
||||||
{{/*
|
|
||||||
NFS names
|
|
||||||
*/}}
|
|
||||||
{{- define "custom.storageNfsName" -}}
|
|
||||||
bazarr-nfs-storage
|
|
||||||
{{- end -}}
|
|
||||||
@@ -1,17 +0,0 @@
|
|||||||
apiVersion: external-secrets.io/v1
|
|
||||||
kind: ExternalSecret
|
|
||||||
metadata:
|
|
||||||
name: bazarr-key
|
|
||||||
namespace: {{ .Release.Namespace }}
|
|
||||||
labels:
|
|
||||||
app.kubernetes.io/name: bazarr-key
|
|
||||||
{{- include "custom.labels" . | nindent 4 }}
|
|
||||||
spec:
|
|
||||||
secretStoreRef:
|
|
||||||
kind: ClusterSecretStore
|
|
||||||
name: openbao
|
|
||||||
data:
|
|
||||||
- secretKey: key
|
|
||||||
remoteRef:
|
|
||||||
key: /cl01tl/bazarr/key
|
|
||||||
property: key
|
|
||||||
@@ -1,13 +1,14 @@
|
|||||||
apiVersion: v1
|
apiVersion: v1
|
||||||
kind: PersistentVolumeClaim
|
kind: PersistentVolumeClaim
|
||||||
metadata:
|
metadata:
|
||||||
name: {{ include "custom.storageNfsName" . }}
|
name: bazarr-nfs-storage
|
||||||
namespace: {{ .Release.Namespace }}
|
namespace: {{ .Release.Namespace }}
|
||||||
labels:
|
labels:
|
||||||
app.kubernetes.io/name: {{ include "custom.storageNfsName" . }}
|
app.kubernetes.io/name: bazarr-nfs-storage
|
||||||
{{- include "custom.labels" . | nindent 4 }}
|
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||||
|
app.kubernetes.io/part-of: {{ .Release.Name }}
|
||||||
spec:
|
spec:
|
||||||
volumeName: {{ include "custom.storageNfsName" . }}
|
volumeName: bazarr-nfs-storage
|
||||||
storageClassName: nfs-client
|
storageClassName: nfs-client
|
||||||
accessModes:
|
accessModes:
|
||||||
- ReadWriteMany
|
- ReadWriteMany
|
||||||
|
|||||||
@@ -1,11 +1,12 @@
|
|||||||
apiVersion: v1
|
apiVersion: v1
|
||||||
kind: PersistentVolume
|
kind: PersistentVolume
|
||||||
metadata:
|
metadata:
|
||||||
name: {{ include "custom.storageNfsName" . }}
|
name: bazarr-nfs-storage
|
||||||
namespace: {{ .Release.Namespace }}
|
namespace: {{ .Release.Namespace }}
|
||||||
labels:
|
labels:
|
||||||
app.kubernetes.io/name: {{ include "custom.storageNfsName" . }}
|
app.kubernetes.io/name: bazarr-nfs-storage
|
||||||
{{- include "custom.labels" . | nindent 4 }}
|
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||||
|
app.kubernetes.io/part-of: {{ .Release.Name }}
|
||||||
spec:
|
spec:
|
||||||
persistentVolumeReclaimPolicy: Retain
|
persistentVolumeReclaimPolicy: Retain
|
||||||
storageClassName: nfs-client
|
storageClassName: nfs-client
|
||||||
|
|||||||
@@ -23,28 +23,11 @@ bazarr:
|
|||||||
- name: PGID
|
- name: PGID
|
||||||
value: 1000
|
value: 1000
|
||||||
resources:
|
resources:
|
||||||
|
limits:
|
||||||
|
cpu: 100m
|
||||||
requests:
|
requests:
|
||||||
cpu: 10m
|
cpu: 1m
|
||||||
memory: 250Mi
|
memory: 250Mi
|
||||||
metrics:
|
|
||||||
image:
|
|
||||||
repository: ghcr.io/onedr0p/exportarr
|
|
||||||
tag: v2.3.0@sha256:af535d94061cf97a52e1661945ffba78c03f9443eae7c0da1a80a5a4be56b520
|
|
||||||
args: ["bazarr"]
|
|
||||||
env:
|
|
||||||
- name: URL
|
|
||||||
value: http://localhost:6767
|
|
||||||
- name: PORT
|
|
||||||
value: 9792
|
|
||||||
- name: APIKEY
|
|
||||||
valueFrom:
|
|
||||||
secretKeyRef:
|
|
||||||
name: bazarr-key
|
|
||||||
key: key
|
|
||||||
- name: ENABLE_ADDITIONAL_METRICS
|
|
||||||
value: false
|
|
||||||
- name: ENABLE_UNKNOWN_QUEUE_ITEMS
|
|
||||||
value: false
|
|
||||||
service:
|
service:
|
||||||
main:
|
main:
|
||||||
controller: main
|
controller: main
|
||||||
@@ -52,21 +35,7 @@ bazarr:
|
|||||||
http:
|
http:
|
||||||
port: 80
|
port: 80
|
||||||
targetPort: 6767
|
targetPort: 6767
|
||||||
metrics:
|
protocol: HTTP
|
||||||
port: 9792
|
|
||||||
targetPort: 9792
|
|
||||||
serviceMonitor:
|
|
||||||
main:
|
|
||||||
selector:
|
|
||||||
matchLabels:
|
|
||||||
app.kubernetes.io/name: bazarr
|
|
||||||
app.kubernetes.io/instance: bazarr
|
|
||||||
serviceName: '{{ include "bjw-s.common.lib.chart.names.fullname" $ }}'
|
|
||||||
endpoints:
|
|
||||||
- port: metrics
|
|
||||||
interval: 3m
|
|
||||||
scrapeTimeout: 1m
|
|
||||||
path: /metrics
|
|
||||||
route:
|
route:
|
||||||
main:
|
main:
|
||||||
kind: HTTPRoute
|
kind: HTTPRoute
|
||||||
|
|||||||
@@ -4,6 +4,6 @@ dependencies:
|
|||||||
version: 4.6.2
|
version: 4.6.2
|
||||||
- name: valkey
|
- name: valkey
|
||||||
repository: oci://harbor.alexlebens.net/helm-charts
|
repository: oci://harbor.alexlebens.net/helm-charts
|
||||||
version: 0.7.0
|
version: 0.4.0
|
||||||
digest: sha256:855928ecd442b96a98bbeb9f957951cb70a8ab07e3c45ffd2ab33dcd5bf85a18
|
digest: sha256:a5b0099261d772b24a302a106d106cfa82ac07fa14564141e00cf107d708e859
|
||||||
generated: "2026-05-02T01:46:25.970760734Z"
|
generated: "2026-03-09T23:06:16.853255429Z"
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ dependencies:
|
|||||||
version: 4.6.2
|
version: 4.6.2
|
||||||
- name: valkey
|
- name: valkey
|
||||||
alias: valkey
|
alias: valkey
|
||||||
version: 0.7.0
|
version: 0.4.0
|
||||||
repository: oci://harbor.alexlebens.net/helm-charts
|
repository: oci://harbor.alexlebens.net/helm-charts
|
||||||
icon: https://cdn.jsdelivr.net/gh/selfhst/icons/png/blocky.png
|
icon: https://cdn.jsdelivr.net/gh/selfhst/icons/png/blocky.png
|
||||||
# renovate: datasource=github-releases depName=0xerr0r/blocky
|
# renovate: datasource=github-releases depName=0xerr0r/blocky
|
||||||
|
|||||||
@@ -1,14 +0,0 @@
|
|||||||
{{/*
|
|
||||||
Common labels
|
|
||||||
*/}}
|
|
||||||
{{- define "custom.labels" -}}
|
|
||||||
{{ include "custom.selectorLabels" $ }}
|
|
||||||
{{- end }}
|
|
||||||
|
|
||||||
{{/*
|
|
||||||
Selector labels
|
|
||||||
*/}}
|
|
||||||
{{- define "custom.selectorLabels" -}}
|
|
||||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
|
||||||
app.kubernetes.io/part-of: {{ .Release.Name }}
|
|
||||||
{{- end }}
|
|
||||||
@@ -102,13 +102,14 @@ blocky:
|
|||||||
;; Application Names
|
;; Application Names
|
||||||
actual IN CNAME traefik-cl01tl
|
actual IN CNAME traefik-cl01tl
|
||||||
alertmanager IN CNAME traefik-cl01tl
|
alertmanager IN CNAME traefik-cl01tl
|
||||||
|
argo-workflows IN CNAME traefik-cl01tl
|
||||||
argocd IN CNAME traefik-cl01tl
|
argocd IN CNAME traefik-cl01tl
|
||||||
audiobookshelf IN CNAME traefik-cl01tl
|
audiobookshelf IN CNAME traefik-cl01tl
|
||||||
authentik IN CNAME traefik-cl01tl
|
authentik IN CNAME traefik-cl01tl
|
||||||
backrest IN CNAME traefik-cl01tl
|
backrest IN CNAME traefik-cl01tl
|
||||||
bao IN CNAME traefik-cl01tl
|
|
||||||
bazarr IN CNAME traefik-cl01tl
|
bazarr IN CNAME traefik-cl01tl
|
||||||
ceph IN CNAME traefik-cl01tl
|
ceph IN CNAME traefik-cl01tl
|
||||||
|
code-server IN CNAME traefik-cl01tl
|
||||||
dawarich IN CNAME traefik-cl01tl
|
dawarich IN CNAME traefik-cl01tl
|
||||||
directus IN CNAME traefik-cl01tl
|
directus IN CNAME traefik-cl01tl
|
||||||
excalidraw IN CNAME traefik-cl01tl
|
excalidraw IN CNAME traefik-cl01tl
|
||||||
@@ -134,18 +135,18 @@ blocky:
|
|||||||
komodo IN CNAME traefik-cl01tl
|
komodo IN CNAME traefik-cl01tl
|
||||||
languagetool IN CNAME traefik-cl01tl
|
languagetool IN CNAME traefik-cl01tl
|
||||||
lidarr IN CNAME traefik-cl01tl
|
lidarr IN CNAME traefik-cl01tl
|
||||||
loki IN CNAME traefik-cl01tl
|
mail IN CNAME traefik-cl01tl
|
||||||
medialyze IN CNAME traefik-cl01tl
|
medialyze IN CNAME traefik-cl01tl
|
||||||
|
movie-roulette IN CNAME traefik-cl01tl
|
||||||
music-grabber IN CNAME traefik-cl01tl
|
music-grabber IN CNAME traefik-cl01tl
|
||||||
navidrome IN CNAME traefik-cl01tl
|
navidrome IN CNAME traefik-cl01tl
|
||||||
ntfy IN CNAME traefik-cl01tl
|
ntfy IN CNAME traefik-cl01tl
|
||||||
objects IN CNAME traefik-cl01tl
|
objects IN CNAME traefik-cl01tl
|
||||||
ollama IN CNAME traefik-cl01tl
|
ollama IN CNAME traefik-cl01tl
|
||||||
omni-tools IN CNAME traefik-cl01tl
|
omni-tools IN CNAME traefik-cl01tl
|
||||||
paperless-ngx IN CNAME traefik-cl01tl
|
photoview IN CNAME traefik-cl01tl
|
||||||
plex IN CNAME traefik-cl01tl
|
plex IN CNAME traefik-cl01tl
|
||||||
postiz-spotlight IN CNAME traefik-cl01tl
|
postiz IN CNAME traefik-cl01tl
|
||||||
postiz-temporal IN CNAME traefik-cl01tl
|
|
||||||
prometheus IN CNAME traefik-cl01tl
|
prometheus IN CNAME traefik-cl01tl
|
||||||
prowlarr IN CNAME traefik-cl01tl
|
prowlarr IN CNAME traefik-cl01tl
|
||||||
qbittorrent IN CNAME traefik-cl01tl
|
qbittorrent IN CNAME traefik-cl01tl
|
||||||
@@ -161,7 +162,7 @@ blocky:
|
|||||||
sonarr IN CNAME traefik-cl01tl
|
sonarr IN CNAME traefik-cl01tl
|
||||||
sonarr-4k IN CNAME traefik-cl01tl
|
sonarr-4k IN CNAME traefik-cl01tl
|
||||||
sonarr-anime IN CNAME traefik-cl01tl
|
sonarr-anime IN CNAME traefik-cl01tl
|
||||||
sparkyfitness IN CNAME traefik-cl01tl
|
stalwart IN CNAME traefik-cl01tl
|
||||||
tdarr IN CNAME traefik-cl01tl
|
tdarr IN CNAME traefik-cl01tl
|
||||||
tubearchivist IN CNAME traefik-cl01tl
|
tubearchivist IN CNAME traefik-cl01tl
|
||||||
vault IN CNAME traefik-cl01tl
|
vault IN CNAME traefik-cl01tl
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
dependencies:
|
dependencies:
|
||||||
- name: cert-manager
|
- name: cert-manager
|
||||||
repository: https://charts.jetstack.io
|
repository: https://charts.jetstack.io
|
||||||
version: v1.20.2
|
version: v1.20.1
|
||||||
digest: sha256:f218239b4538c64d57e098a56c69dcbc4e076ffcc3d320c5a5fef1e6309e38cf
|
digest: sha256:1bf36eba44cf096b40355a697b8cffb302f07f9135374222aabdf686f017b7a9
|
||||||
generated: "2026-04-13T23:02:59.380767677Z"
|
generated: "2026-03-28T01:35:24.542754563Z"
|
||||||
|
|||||||
@@ -13,8 +13,8 @@ maintainers:
|
|||||||
- name: alexlebens
|
- name: alexlebens
|
||||||
dependencies:
|
dependencies:
|
||||||
- name: cert-manager
|
- name: cert-manager
|
||||||
version: v1.20.2
|
version: v1.20.1
|
||||||
repository: https://charts.jetstack.io
|
repository: https://charts.jetstack.io
|
||||||
icon: https://raw.githubusercontent.com/cert-manager/cert-manager/refs/heads/master/logo/logo.png
|
icon: https://raw.githubusercontent.com/cert-manager/cert-manager/refs/heads/master/logo/logo.png
|
||||||
# renovate: datasource=github-releases depName=cert-manager/cert-manager
|
# renovate: datasource=github-releases depName=cert-manager/cert-manager
|
||||||
appVersion: v1.20.2
|
appVersion: v1.20.1
|
||||||
|
|||||||
@@ -1,24 +0,0 @@
|
|||||||
{{/*
|
|
||||||
Common labels
|
|
||||||
*/}}
|
|
||||||
{{- define "custom.labels" -}}
|
|
||||||
{{ include "custom.selectorLabels" $ }}
|
|
||||||
{{- end }}
|
|
||||||
|
|
||||||
{{/*
|
|
||||||
Selector labels
|
|
||||||
*/}}
|
|
||||||
{{- define "custom.selectorLabels" -}}
|
|
||||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
|
||||||
app.kubernetes.io/part-of: {{ .Release.Name }}
|
|
||||||
{{- end }}
|
|
||||||
|
|
||||||
{{/*
|
|
||||||
NFS names
|
|
||||||
*/}}
|
|
||||||
{{- define "custom.cloudflareSecretName" -}}
|
|
||||||
cert-manager-cloudflare-api-token
|
|
||||||
{{- end -}}
|
|
||||||
{{- define "custom.cloudflareSecretKey" -}}
|
|
||||||
api-token
|
|
||||||
{{- end -}}
|
|
||||||
@@ -5,7 +5,8 @@ metadata:
|
|||||||
namespace: {{ .Release.Namespace }}
|
namespace: {{ .Release.Namespace }}
|
||||||
labels:
|
labels:
|
||||||
app.kubernetes.io/name: letsencrypt-issuer
|
app.kubernetes.io/name: letsencrypt-issuer
|
||||||
{{- include "custom.labels" . | nindent 4 }}
|
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||||
|
app.kubernetes.io/part-of: {{ .Release.Name }}
|
||||||
spec:
|
spec:
|
||||||
acme:
|
acme:
|
||||||
email: alexanderlebens@gmail.com
|
email: alexanderlebens@gmail.com
|
||||||
@@ -21,5 +22,5 @@ spec:
|
|||||||
cloudflare:
|
cloudflare:
|
||||||
email: alexanderlebens@gmail.com
|
email: alexanderlebens@gmail.com
|
||||||
apiTokenSecretRef:
|
apiTokenSecretRef:
|
||||||
name: {{ include "custom.cloudflareSecretName" . }}
|
name: cloudflare-api-token
|
||||||
key: {{ include "custom.cloudflareSecretKey" . }}
|
key: api-token
|
||||||
|
|||||||
@@ -1,17 +1,18 @@
|
|||||||
apiVersion: external-secrets.io/v1
|
apiVersion: external-secrets.io/v1
|
||||||
kind: ExternalSecret
|
kind: ExternalSecret
|
||||||
metadata:
|
metadata:
|
||||||
name: {{ include "custom.cloudflareSecretName" . }}
|
name: cloudflare-api-token
|
||||||
namespace: {{ .Release.Namespace }}
|
namespace: {{ .Release.Namespace }}
|
||||||
labels:
|
labels:
|
||||||
app.kubernetes.io/name: {{ include "custom.cloudflareSecretName" . }}
|
app.kubernetes.io/name: cloudflare-api-token
|
||||||
{{- include "custom.labels" . | nindent 4 }}
|
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||||
|
app.kubernetes.io/part-of: {{ .Release.Name }}
|
||||||
spec:
|
spec:
|
||||||
secretStoreRef:
|
secretStoreRef:
|
||||||
kind: ClusterSecretStore
|
kind: ClusterSecretStore
|
||||||
name: openbao
|
name: vault
|
||||||
data:
|
data:
|
||||||
- secretKey: {{ include "custom.cloudflareSecretKey" . }}
|
- secretKey: api-token
|
||||||
remoteRef:
|
remoteRef:
|
||||||
key: /cloudflare/alexlebens.net/cl01tl-issuer-certificate
|
key: /cloudflare/alexlebens.net/clusterissuer
|
||||||
property: token
|
property: token
|
||||||
|
|||||||
@@ -1,44 +0,0 @@
|
|||||||
apiVersion: monitoring.coreos.com/v1
|
|
||||||
kind: PrometheusRule
|
|
||||||
metadata:
|
|
||||||
name: cert-manager
|
|
||||||
namespace: {{ .Release.Namespace }}
|
|
||||||
labels:
|
|
||||||
app.kubernetes.io/name: cert-manager
|
|
||||||
{{- include "custom.labels" . | nindent 4 }}
|
|
||||||
spec:
|
|
||||||
groups:
|
|
||||||
- name: EmbeddedExporter
|
|
||||||
rules:
|
|
||||||
- alert: Cert-ManagerAbsent
|
|
||||||
expr: absent(up{job="cert-manager"})
|
|
||||||
for: 10m
|
|
||||||
labels:
|
|
||||||
severity: critical
|
|
||||||
annotations:
|
|
||||||
summary: Cert-Manager absent (instance {{ `{{ $labels.instance }}` }})
|
|
||||||
description: "Cert-Manager has disappeared from Prometheus service discovery. New certificates will not be able to be minted, and existing ones can't be renewed until cert-manager is back.\n VALUE = {{ `{{ $value }}` }}\n LABELS = {{ `{{ $labels }}` }}"
|
|
||||||
- alert: Cert-ManagerCertificateExpiringSoon
|
|
||||||
expr: avg by (exported_namespace, namespace, name) (certmanager_certificate_expiration_timestamp_seconds - time()) < (21 * 24 * 3600)
|
|
||||||
for: 1h
|
|
||||||
labels:
|
|
||||||
severity: warning
|
|
||||||
annotations:
|
|
||||||
summary: Cert-Manager certificate expiring soon (instance {{ `{{ $labels.instance }}` }})
|
|
||||||
description: "The certificate {{ `{{ $labels.name }}` }} is expiring in less than 21 days.\n VALUE = {{ `{{ $value }}` }}\n LABELS = {{ `{{ $labels }}` }}"
|
|
||||||
- alert: Cert-ManagerCertificateNotReady
|
|
||||||
expr: max by (name, exported_namespace, namespace, condition) (certmanager_certificate_ready_status{condition!="True"} == 1)
|
|
||||||
for: 10m
|
|
||||||
labels:
|
|
||||||
severity: critical
|
|
||||||
annotations:
|
|
||||||
summary: Cert-Manager certificate not ready (instance {{ `{{ $labels.instance }}` }})
|
|
||||||
description: "The certificate {{ `{{ $labels.name }}` }} in namespace {{ `{{ $labels.exported_namespace }}` }} is not ready to serve traffic.\n VALUE = {{ `{{ $value }}` }}\n LABELS = {{ `{{ $labels }}` }}"
|
|
||||||
- alert: Cert-ManagerHittingACMERateLimits
|
|
||||||
expr: sum by (host) (rate(certmanager_acme_client_request_count{status="429"}[5m])) > 0
|
|
||||||
for: 5m
|
|
||||||
labels:
|
|
||||||
severity: critical
|
|
||||||
annotations:
|
|
||||||
summary: Cert-Manager hitting ACME rate limits (instance {{ `{{ $labels.instance }}` }})
|
|
||||||
description: "Cert-Manager is being rate-limited by the ACME provider. Certificate issuance and renewal may be blocked for up to a week.\n VALUE = {{ `{{ $value }}` }}\n LABELS = {{ `{{ $labels }}` }}"
|
|
||||||
@@ -1,14 +0,0 @@
|
|||||||
{{/*
|
|
||||||
Common labels
|
|
||||||
*/}}
|
|
||||||
{{- define "custom.labels" -}}
|
|
||||||
{{ include "custom.selectorLabels" $ }}
|
|
||||||
{{- end }}
|
|
||||||
|
|
||||||
{{/*
|
|
||||||
Selector labels
|
|
||||||
*/}}
|
|
||||||
{{- define "custom.selectorLabels" -}}
|
|
||||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
|
||||||
app.kubernetes.io/part-of: {{ .Release.Name }}
|
|
||||||
{{- end }}
|
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
# apiVersion: cilium.io/v2
|
||||||
|
# kind: CiliumBGPAdvertisement
|
||||||
|
# metadata:
|
||||||
|
# name: cilium-bgp-advertisements
|
||||||
|
# namespace: {{ .Release.Namespace }}
|
||||||
|
# labels:
|
||||||
|
# app.kubernetes.io/name: cilium-bgp-advertisements
|
||||||
|
# app.kubernetes.io/instance: {{ .Release.Name }}
|
||||||
|
# app.kubernetes.io/part-of: {{ .Release.Name }}
|
||||||
|
# spec:
|
||||||
|
# advertisements:
|
||||||
|
# - advertisementType: "Service"
|
||||||
|
# service:
|
||||||
|
# addresses:
|
||||||
|
# - ExternalIP
|
||||||
|
# - LoadBalancerIP
|
||||||
|
# selector:
|
||||||
|
# matchExpressions:
|
||||||
|
# - {key: somekey, operator: NotIn, values: ['never-used-value']}
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
# apiVersion: cilium.io/v2
|
||||||
|
# kind: CiliumBGPClusterConfig
|
||||||
|
# metadata:
|
||||||
|
# name: cilium-bgp
|
||||||
|
# namespace: {{ .Release.Namespace }}
|
||||||
|
# labels:
|
||||||
|
# app.kubernetes.io/name: cilium-bgp
|
||||||
|
# app.kubernetes.io/instance: {{ .Release.Name }}
|
||||||
|
# app.kubernetes.io/part-of: {{ .Release.Name }}
|
||||||
|
# spec:
|
||||||
|
# nodeSelector:
|
||||||
|
# matchLabels:
|
||||||
|
# node-role.kubernetes.io/bgp: "65020"
|
||||||
|
# bgpInstances:
|
||||||
|
# - name: "65020"
|
||||||
|
# localASN: 65020
|
||||||
|
# peers:
|
||||||
|
# - name: "udm-65000"
|
||||||
|
# peerASN: 65000
|
||||||
|
# peerAddress: 192.168.1.1
|
||||||
|
# peerConfigRef:
|
||||||
|
# name: "cilium-peer"
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
# apiVersion: cilium.io/v2
|
||||||
|
# kind: CiliumBGPPeerConfig
|
||||||
|
# metadata:
|
||||||
|
# name: cilium-peer
|
||||||
|
# namespace: {{ .Release.Namespace }}
|
||||||
|
# labels:
|
||||||
|
# app.kubernetes.io/name: cilium-peer
|
||||||
|
# app.kubernetes.io/instance: {{ .Release.Name }}
|
||||||
|
# app.kubernetes.io/part-of: {{ .Release.Name }}
|
||||||
|
# spec:
|
||||||
|
# timers:
|
||||||
|
# holdTimeSeconds: 9
|
||||||
|
# keepAliveTimeSeconds: 3
|
||||||
|
# ebgpMultihop: 4
|
||||||
|
# gracefulRestart:
|
||||||
|
# enabled: true
|
||||||
|
# restartTimeSeconds: 15
|
||||||
|
# families:
|
||||||
|
# - afi: ipv4
|
||||||
|
# safi: unicast
|
||||||
|
# advertisements:
|
||||||
|
# matchLabels:
|
||||||
|
# app.kubernetes.io/name: cilium-bgp-advertisements
|
||||||
@@ -5,7 +5,8 @@ metadata:
|
|||||||
namespace: {{ .Release.Namespace }}
|
namespace: {{ .Release.Namespace }}
|
||||||
labels:
|
labels:
|
||||||
app.kubernetes.io/name: default-ip-pool
|
app.kubernetes.io/name: default-ip-pool
|
||||||
{{- include "custom.labels" . | nindent 4 }}
|
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||||
|
app.kubernetes.io/part-of: {{ .Release.Name }}
|
||||||
spec:
|
spec:
|
||||||
blocks:
|
blocks:
|
||||||
- start: "10.232.1.21"
|
- start: "10.232.1.21"
|
||||||
@@ -19,7 +20,8 @@ metadata:
|
|||||||
namespace: {{ .Release.Namespace }}
|
namespace: {{ .Release.Namespace }}
|
||||||
labels:
|
labels:
|
||||||
app.kubernetes.io/name: bgp-ip-pool
|
app.kubernetes.io/name: bgp-ip-pool
|
||||||
{{- include "custom.labels" . | nindent 4 }}
|
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||||
|
app.kubernetes.io/part-of: {{ .Release.Name }}
|
||||||
spec:
|
spec:
|
||||||
blocks:
|
blocks:
|
||||||
- start: "10.232.2.100"
|
- start: "10.232.2.100"
|
||||||
|
|||||||
45
clusters/cl01tl/helm/cilium/templates/gateway.yaml
Normal file
45
clusters/cl01tl/helm/cilium/templates/gateway.yaml
Normal file
@@ -0,0 +1,45 @@
|
|||||||
|
# apiVersion: gateway.networking.k8s.io/v1
|
||||||
|
# kind: Gateway
|
||||||
|
# metadata:
|
||||||
|
# name: cilium-tls-gateway
|
||||||
|
# namespace: {{ .Release.Namespace }}
|
||||||
|
# labels:
|
||||||
|
# app.kubernetes.io/name: cilium-tls-gateway
|
||||||
|
# app.kubernetes.io/instance: {{ .Release.Name }}
|
||||||
|
# app.kubernetes.io/part-of: {{ .Release.Name }}
|
||||||
|
# annotations:
|
||||||
|
# cert-manager.io/cluster-issuer: letsencrypt-issuer
|
||||||
|
# spec:
|
||||||
|
# addresses:
|
||||||
|
# - type: IPAddress
|
||||||
|
# value: 10.232.1.23
|
||||||
|
# gatewayClassName: cilium
|
||||||
|
# listeners:
|
||||||
|
# - allowedRoutes:
|
||||||
|
# namespaces:
|
||||||
|
# from: All
|
||||||
|
# hostname: '*.alexlebens.net'
|
||||||
|
# name: https
|
||||||
|
# port: 443
|
||||||
|
# protocol: HTTPS
|
||||||
|
# tls:
|
||||||
|
# certificateRefs:
|
||||||
|
# - group: ''
|
||||||
|
# kind: Secret
|
||||||
|
# name: https-gateway-cert
|
||||||
|
# namespace: kube-system
|
||||||
|
# mode: Terminate
|
||||||
|
# - allowedRoutes:
|
||||||
|
# namespaces:
|
||||||
|
# from: All
|
||||||
|
# hostname: 'alexlebens.net'
|
||||||
|
# name: https-domain
|
||||||
|
# port: 443
|
||||||
|
# protocol: HTTPS
|
||||||
|
# tls:
|
||||||
|
# certificateRefs:
|
||||||
|
# - group: ''
|
||||||
|
# kind: Secret
|
||||||
|
# name: https-gateway-cert
|
||||||
|
# namespace: kube-system
|
||||||
|
# mode: Terminate
|
||||||
@@ -5,7 +5,8 @@ metadata:
|
|||||||
namespace: {{ .Release.Namespace }}
|
namespace: {{ .Release.Namespace }}
|
||||||
labels:
|
labels:
|
||||||
app.kubernetes.io/name: hubble
|
app.kubernetes.io/name: hubble
|
||||||
{{- include "custom.labels" . | nindent 4 }}
|
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||||
|
app.kubernetes.io/part-of: {{ .Release.Name }}
|
||||||
spec:
|
spec:
|
||||||
parentRefs:
|
parentRefs:
|
||||||
- group: gateway.networking.k8s.io
|
- group: gateway.networking.k8s.io
|
||||||
@@ -20,6 +21,8 @@ spec:
|
|||||||
type: PathPrefix
|
type: PathPrefix
|
||||||
value: /
|
value: /
|
||||||
backendRefs:
|
backendRefs:
|
||||||
- kind: Service
|
- group: ''
|
||||||
|
kind: Service
|
||||||
name: hubble-ui
|
name: hubble-ui
|
||||||
port: 80
|
port: 80
|
||||||
|
weight: 100
|
||||||
|
|||||||
@@ -1,15 +1,9 @@
|
|||||||
dependencies:
|
dependencies:
|
||||||
- name: cloudnative-pg
|
- name: cloudnative-pg
|
||||||
repository: https://cloudnative-pg.io/charts/
|
repository: https://cloudnative-pg.io/charts/
|
||||||
version: 0.28.0
|
version: 0.27.1
|
||||||
- name: plugin-barman-cloud
|
- name: plugin-barman-cloud
|
||||||
repository: https://cloudnative-pg.io/charts/
|
repository: https://cloudnative-pg.io/charts/
|
||||||
version: 0.6.0
|
|
||||||
- name: rclone-bucket
|
|
||||||
repository: oci://harbor.alexlebens.net/helm-charts
|
|
||||||
version: 0.5.0
|
version: 0.5.0
|
||||||
- name: rclone-bucket
|
digest: sha256:e7089ffd089cae87529e28f0e71302b9fc4a869b389cbb6628f1c559644a3a10
|
||||||
repository: oci://harbor.alexlebens.net/helm-charts
|
generated: "2026-02-05T19:36:19.473447121Z"
|
||||||
version: 0.5.0
|
|
||||||
digest: sha256:5db4d27087f8a712e7825dc2aac1dc26b6b4e0f9eb11373805be67212bb38e12
|
|
||||||
generated: "2026-05-02T01:21:57.977371366Z"
|
|
||||||
|
|||||||
@@ -13,24 +13,15 @@ sources:
|
|||||||
- https://github.com/cloudnative-pg/postgres-containers/pkgs/container/postgresql
|
- https://github.com/cloudnative-pg/postgres-containers/pkgs/container/postgresql
|
||||||
- https://github.com/cloudnative-pg/charts/tree/main/charts/cloudnative-pg
|
- https://github.com/cloudnative-pg/charts/tree/main/charts/cloudnative-pg
|
||||||
- https://github.com/cloudnative-pg/charts/tree/main/charts/plugin-barman-cloud
|
- https://github.com/cloudnative-pg/charts/tree/main/charts/plugin-barman-cloud
|
||||||
- https://gitea.alexlebens.dev/alexlebens/helm-charts/src/branch/main/charts/rclone-bucket
|
|
||||||
maintainers:
|
maintainers:
|
||||||
- name: alexlebens
|
- name: alexlebens
|
||||||
dependencies:
|
dependencies:
|
||||||
- name: cloudnative-pg
|
- name: cloudnative-pg
|
||||||
version: 0.28.0
|
version: 0.27.1
|
||||||
repository: https://cloudnative-pg.io/charts/
|
repository: https://cloudnative-pg.io/charts/
|
||||||
- name: plugin-barman-cloud
|
- name: plugin-barman-cloud
|
||||||
version: 0.6.0
|
version: 0.5.0
|
||||||
repository: https://cloudnative-pg.io/charts/
|
repository: https://cloudnative-pg.io/charts/
|
||||||
- name: rclone-bucket
|
|
||||||
alias: rclone-postgres-backups-remote
|
|
||||||
repository: oci://harbor.alexlebens.net/helm-charts
|
|
||||||
version: 0.5.0
|
|
||||||
- name: rclone-bucket
|
|
||||||
alias: rclone-postgres-backups-external
|
|
||||||
repository: oci://harbor.alexlebens.net/helm-charts
|
|
||||||
version: 0.5.0
|
|
||||||
icon: https://raw.githubusercontent.com/cloudnative-pg/cloudnative-pg.github.io/refs/heads/main/assets/images/hero_image.png
|
icon: https://raw.githubusercontent.com/cloudnative-pg/cloudnative-pg.github.io/refs/heads/main/assets/images/hero_image.png
|
||||||
# renovate: datasource=github-releases depName=cloudnative-pg/cloudnative-pg
|
# renovate: datasource=github-releases depName=cloudnative-pg/cloudnative-pg
|
||||||
appVersion: 1.29.0
|
appVersion: 1.28.1
|
||||||
|
|||||||
@@ -1,14 +0,0 @@
|
|||||||
{{/*
|
|
||||||
Common labels
|
|
||||||
*/}}
|
|
||||||
{{- define "custom.labels" -}}
|
|
||||||
{{ include "custom.selectorLabels" $ }}
|
|
||||||
{{- end }}
|
|
||||||
|
|
||||||
{{/*
|
|
||||||
Selector labels
|
|
||||||
*/}}
|
|
||||||
{{- define "custom.selectorLabels" -}}
|
|
||||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
|
||||||
app.kubernetes.io/part-of: {{ .Release.Name }}
|
|
||||||
{{- end }}
|
|
||||||
@@ -14,62 +14,3 @@ plugin-barman-cloud:
|
|||||||
requests:
|
requests:
|
||||||
cpu: 1m
|
cpu: 1m
|
||||||
memory: 20Mi
|
memory: 20Mi
|
||||||
rclone-postgres-backups-remote:
|
|
||||||
nameOverride: postgres-backups-remote-rclone
|
|
||||||
cronJob:
|
|
||||||
suspend: false
|
|
||||||
schedule: 0 6 * * 6
|
|
||||||
rclone:
|
|
||||||
source:
|
|
||||||
bucketName: postgres-backups
|
|
||||||
destination:
|
|
||||||
bucketName: postgres-backups
|
|
||||||
prune:
|
|
||||||
enabled: true
|
|
||||||
ageToPrune: 45d
|
|
||||||
include: "/cl01tl/*/*/*/base/**"
|
|
||||||
exclude: "**/walls/**"
|
|
||||||
secret:
|
|
||||||
externalSecret:
|
|
||||||
source:
|
|
||||||
credentials:
|
|
||||||
path: /garage/home-infra/postgres-backups
|
|
||||||
config:
|
|
||||||
path: /garage/config
|
|
||||||
destination:
|
|
||||||
credentials:
|
|
||||||
path: /garage/home-infra/postgres-backups
|
|
||||||
config:
|
|
||||||
path: /garage/config
|
|
||||||
rclone-postgres-backups-external:
|
|
||||||
nameOverride: postgres-backups-external-rclone
|
|
||||||
cronJob:
|
|
||||||
suspend: true
|
|
||||||
schedule: 0 6 * * 6
|
|
||||||
rclone:
|
|
||||||
source:
|
|
||||||
bucketName: openbao-backups
|
|
||||||
destination:
|
|
||||||
bucketName: postgres-backups-ecc1010276b61716
|
|
||||||
providerType: DigitalOcean
|
|
||||||
prune:
|
|
||||||
enabled: true
|
|
||||||
ageToPrune: 45d
|
|
||||||
include: "/cl01tl/*/*/*/base/**"
|
|
||||||
exclude: "**/walls/**"
|
|
||||||
secret:
|
|
||||||
externalSecret:
|
|
||||||
source:
|
|
||||||
credentials:
|
|
||||||
path: /garage/home-infra/postgres-backups
|
|
||||||
config:
|
|
||||||
path: /garage/config
|
|
||||||
destination:
|
|
||||||
credentials:
|
|
||||||
path: /digital-ocean/home-infra/postgres-backups
|
|
||||||
keyIdProperty: AWS_ACCESS_KEY_ID
|
|
||||||
secretKeyProperty: AWS_SECRET_ACCESS_KEY
|
|
||||||
regionProperty: AWS_REGION
|
|
||||||
config:
|
|
||||||
path: /digital-ocean/config
|
|
||||||
endpointProperty: ENDPOINT
|
|
||||||
|
|||||||
12
clusters/cl01tl/helm/code-server/Chart.lock
Normal file
12
clusters/cl01tl/helm/code-server/Chart.lock
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
dependencies:
|
||||||
|
- name: app-template
|
||||||
|
repository: https://bjw-s-labs.github.io/helm-charts/
|
||||||
|
version: 4.6.2
|
||||||
|
- name: cloudflared
|
||||||
|
repository: oci://harbor.alexlebens.net/helm-charts
|
||||||
|
version: 2.4.0
|
||||||
|
- name: volsync-target
|
||||||
|
repository: oci://harbor.alexlebens.net/helm-charts
|
||||||
|
version: 0.8.0
|
||||||
|
digest: sha256:dee0f52096efc543f4db3a5dc2732fd37ae9b7950b264e399a6e74c2f3e7cee6
|
||||||
|
generated: "2026-03-09T22:04:00.58415637Z"
|
||||||
32
clusters/cl01tl/helm/code-server/Chart.yaml
Normal file
32
clusters/cl01tl/helm/code-server/Chart.yaml
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
apiVersion: v2
|
||||||
|
name: code-server
|
||||||
|
version: 1.0.0
|
||||||
|
description: Code Server
|
||||||
|
keywords:
|
||||||
|
- code-server
|
||||||
|
- code
|
||||||
|
home: https://docs.alexlebens.dev/applications/code-server/
|
||||||
|
sources:
|
||||||
|
- https://github.com/coder/code-server
|
||||||
|
- https://github.com/linuxserver/docker-code-server
|
||||||
|
- https://github.com/linuxserver/docker-code-server/pkgs/container/code-server
|
||||||
|
- https://github.com/bjw-s-labs/helm-charts/tree/main/charts/other/app-template
|
||||||
|
- https://gitea.alexlebens.dev/alexlebens/helm-charts/src/branch/main/charts/cloudflared
|
||||||
|
- https://gitea.alexlebens.dev/alexlebens/helm-charts/src/branch/main/charts/volsync-target
|
||||||
|
maintainers:
|
||||||
|
- name: alexlebens
|
||||||
|
dependencies:
|
||||||
|
- name: app-template
|
||||||
|
alias: code-server
|
||||||
|
repository: https://bjw-s-labs.github.io/helm-charts/
|
||||||
|
version: 4.6.2
|
||||||
|
- name: cloudflared
|
||||||
|
repository: oci://harbor.alexlebens.net/helm-charts
|
||||||
|
version: 2.4.0
|
||||||
|
- name: volsync-target
|
||||||
|
alias: volsync-target-config
|
||||||
|
version: 0.8.0
|
||||||
|
repository: oci://harbor.alexlebens.net/helm-charts
|
||||||
|
icon: https://cdn.jsdelivr.net/gh/selfhst/icons/png/visual-studio-code.png
|
||||||
|
# renovate: datasource=github-releases depName=coder/code-server
|
||||||
|
appVersion: 4.112.0
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
apiVersion: external-secrets.io/v1
|
||||||
|
kind: ExternalSecret
|
||||||
|
metadata:
|
||||||
|
name: codeserver-password-secret
|
||||||
|
namespace: {{ .Release.Namespace }}
|
||||||
|
labels:
|
||||||
|
app.kubernetes.io/name: codeserver-password-secret
|
||||||
|
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||||
|
app.kubernetes.io/part-of: {{ .Release.Name }}
|
||||||
|
spec:
|
||||||
|
secretStoreRef:
|
||||||
|
kind: ClusterSecretStore
|
||||||
|
name: vault
|
||||||
|
data:
|
||||||
|
- secretKey: PASSWORD
|
||||||
|
remoteRef:
|
||||||
|
key: /cl01tl/code-server/auth
|
||||||
|
property: PASSWORD
|
||||||
|
- secretKey: SUDO_PASSWORD
|
||||||
|
remoteRef:
|
||||||
|
key: /cl01tl/code-server/auth
|
||||||
|
property: SUDO_PASSWORD
|
||||||
84
clusters/cl01tl/helm/code-server/values.yaml
Normal file
84
clusters/cl01tl/helm/code-server/values.yaml
Normal file
@@ -0,0 +1,84 @@
|
|||||||
|
code-server:
|
||||||
|
controllers:
|
||||||
|
main:
|
||||||
|
type: deployment
|
||||||
|
replicas: 1
|
||||||
|
strategy: Recreate
|
||||||
|
pod:
|
||||||
|
securityContext:
|
||||||
|
fsGroup: 1000
|
||||||
|
fsGroupChangePolicy: OnRootMismatch
|
||||||
|
containers:
|
||||||
|
main:
|
||||||
|
image:
|
||||||
|
repository: ghcr.io/linuxserver/code-server
|
||||||
|
tag: 4.112.0@sha256:4bb5b8ad22268001687c047f0f04933799fb03df1eb0e1e266ba15ed2d9f4e8b
|
||||||
|
env:
|
||||||
|
- name: TZ
|
||||||
|
value: America/Chicago
|
||||||
|
- name: PUID
|
||||||
|
value: 1000
|
||||||
|
- name: PGID
|
||||||
|
value: 1000
|
||||||
|
- name: DEFAULT_WORKSPACE
|
||||||
|
value: /config
|
||||||
|
envFrom:
|
||||||
|
- secretRef:
|
||||||
|
name: codeserver-password-secret
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
cpu: 1m
|
||||||
|
memory: 50Mi
|
||||||
|
service:
|
||||||
|
main:
|
||||||
|
controller: main
|
||||||
|
ports:
|
||||||
|
http:
|
||||||
|
port: 8443
|
||||||
|
targetPort: 8443
|
||||||
|
protocol: HTTP
|
||||||
|
route:
|
||||||
|
main:
|
||||||
|
kind: HTTPRoute
|
||||||
|
parentRefs:
|
||||||
|
- group: gateway.networking.k8s.io
|
||||||
|
kind: Gateway
|
||||||
|
name: traefik-gateway
|
||||||
|
namespace: traefik
|
||||||
|
hostnames:
|
||||||
|
- code-server.alexlebens.net
|
||||||
|
rules:
|
||||||
|
- backendRefs:
|
||||||
|
- name: code-server
|
||||||
|
port: 8443
|
||||||
|
matches:
|
||||||
|
- path:
|
||||||
|
type: PathPrefix
|
||||||
|
value: /
|
||||||
|
persistence:
|
||||||
|
config:
|
||||||
|
forceRename: code-server-config
|
||||||
|
storageClass: ceph-block
|
||||||
|
accessMode: ReadWriteOnce
|
||||||
|
size: 2Gi
|
||||||
|
advancedMounts:
|
||||||
|
main:
|
||||||
|
main:
|
||||||
|
- path: /config
|
||||||
|
readOnly: false
|
||||||
|
volsync-target-config:
|
||||||
|
pvcTarget: code-server-config
|
||||||
|
moverSecurityContext:
|
||||||
|
runAsUser: 1000
|
||||||
|
runAsGroup: 1000
|
||||||
|
fsGroup: 1000
|
||||||
|
fsGroupChangePolicy: OnRootMismatch
|
||||||
|
local:
|
||||||
|
enabled: true
|
||||||
|
schedule: 16 8 * * *
|
||||||
|
remote:
|
||||||
|
enabled: true
|
||||||
|
schedule: 16 9 * * *
|
||||||
|
external:
|
||||||
|
enabled: true
|
||||||
|
schedule: 16 10 * * *
|
||||||
@@ -8,7 +8,6 @@ keywords:
|
|||||||
home: https://docs.alexlebens.dev/applications/coredns/
|
home: https://docs.alexlebens.dev/applications/coredns/
|
||||||
sources:
|
sources:
|
||||||
- https://github.com/coredns/coredns
|
- https://github.com/coredns/coredns
|
||||||
- https://explore.ggcr.dev/?repo=registry.k8s.io%2Fcoredns%2Fcoredns
|
|
||||||
- https://github.com/coredns/helm
|
- https://github.com/coredns/helm
|
||||||
maintainers:
|
maintainers:
|
||||||
- name: alexlebens
|
- name: alexlebens
|
||||||
@@ -18,4 +17,4 @@ dependencies:
|
|||||||
repository: https://coredns.github.io/helm
|
repository: https://coredns.github.io/helm
|
||||||
icon: https://raw.githubusercontent.com/coredns/coredns.io/refs/heads/master/static/images/favicon.png
|
icon: https://raw.githubusercontent.com/coredns/coredns.io/refs/heads/master/static/images/favicon.png
|
||||||
# renovate: datasource=github-releases depName=coredns/coredns
|
# renovate: datasource=github-releases depName=coredns/coredns
|
||||||
appVersion: v1.14.3
|
appVersion: v1.14.2
|
||||||
|
|||||||
@@ -1,14 +0,0 @@
|
|||||||
{{/*
|
|
||||||
Common labels
|
|
||||||
*/}}
|
|
||||||
{{- define "custom.labels" -}}
|
|
||||||
{{ include "custom.selectorLabels" $ }}
|
|
||||||
{{- end }}
|
|
||||||
|
|
||||||
{{/*
|
|
||||||
Selector labels
|
|
||||||
*/}}
|
|
||||||
{{- define "custom.selectorLabels" -}}
|
|
||||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
|
||||||
app.kubernetes.io/part-of: {{ .Release.Name }}
|
|
||||||
{{- end }}
|
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
coredns:
|
coredns:
|
||||||
image:
|
image:
|
||||||
repository: coredns/coredns
|
repository: registry.k8s.io/coredns/coredns
|
||||||
tag: 1.14.3@sha256:b21d26b915e10acb5bc78715c1e8b6047ab2675389b2bcc18b3a6499d90e74c0
|
tag: v1.14.2@sha256:e7e6440cfd1e919280958f5b5a6ab2b184d385bba774c12ad2a9e1e4183f90d9
|
||||||
replicaCount: 3
|
replicaCount: 3
|
||||||
resources:
|
resources:
|
||||||
limits:
|
limits:
|
||||||
|
|||||||
@@ -4,18 +4,9 @@ dependencies:
|
|||||||
version: 4.6.2
|
version: 4.6.2
|
||||||
- name: postgres-cluster
|
- name: postgres-cluster
|
||||||
repository: oci://harbor.alexlebens.net/helm-charts
|
repository: oci://harbor.alexlebens.net/helm-charts
|
||||||
version: 7.12.1
|
version: 7.10.0
|
||||||
- name: valkey
|
- name: valkey
|
||||||
repository: oci://harbor.alexlebens.net/helm-charts
|
repository: oci://harbor.alexlebens.net/helm-charts
|
||||||
version: 0.7.0
|
version: 0.4.0
|
||||||
- name: volsync-target
|
digest: sha256:7584c2a1613454bbd83b66df46170fd0157df5186842844d483e2dd131398574
|
||||||
repository: oci://harbor.alexlebens.net/helm-charts
|
generated: "2026-03-15T20:04:49.68456485Z"
|
||||||
version: 1.1.1
|
|
||||||
- name: volsync-target
|
|
||||||
repository: oci://harbor.alexlebens.net/helm-charts
|
|
||||||
version: 1.1.1
|
|
||||||
- name: volsync-target
|
|
||||||
repository: oci://harbor.alexlebens.net/helm-charts
|
|
||||||
version: 1.1.1
|
|
||||||
digest: sha256:3cd2af21091719533fb337241480c613ab14b3cb5820af6e386936ddf4243c14
|
|
||||||
generated: "2026-05-02T01:46:38.13080627Z"
|
|
||||||
|
|||||||
@@ -12,7 +12,6 @@ sources:
|
|||||||
- https://github.com/bjw-s-labs/helm-charts/tree/main/charts/other/app-template
|
- https://github.com/bjw-s-labs/helm-charts/tree/main/charts/other/app-template
|
||||||
- https://gitea.alexlebens.dev/alexlebens/helm-charts/src/branch/main/charts/postgres-cluster
|
- https://gitea.alexlebens.dev/alexlebens/helm-charts/src/branch/main/charts/postgres-cluster
|
||||||
- https://gitea.alexlebens.dev/alexlebens/helm-charts/src/branch/main/charts/valkey
|
- https://gitea.alexlebens.dev/alexlebens/helm-charts/src/branch/main/charts/valkey
|
||||||
- https://gitea.alexlebens.dev/alexlebens/helm-charts/src/branch/main/charts/volsync-target
|
|
||||||
maintainers:
|
maintainers:
|
||||||
- name: alexlebens
|
- name: alexlebens
|
||||||
dependencies:
|
dependencies:
|
||||||
@@ -22,24 +21,12 @@ dependencies:
|
|||||||
version: 4.6.2
|
version: 4.6.2
|
||||||
- name: postgres-cluster
|
- name: postgres-cluster
|
||||||
alias: postgres-18-cluster
|
alias: postgres-18-cluster
|
||||||
version: 7.12.1
|
version: 7.10.0
|
||||||
repository: oci://harbor.alexlebens.net/helm-charts
|
repository: oci://harbor.alexlebens.net/helm-charts
|
||||||
- name: valkey
|
- name: valkey
|
||||||
alias: valkey
|
alias: valkey
|
||||||
version: 0.7.0
|
version: 0.4.0
|
||||||
repository: oci://harbor.alexlebens.net/helm-charts
|
|
||||||
- name: volsync-target
|
|
||||||
alias: volsync-target-storage
|
|
||||||
version: 1.1.1
|
|
||||||
repository: oci://harbor.alexlebens.net/helm-charts
|
|
||||||
- name: volsync-target
|
|
||||||
alias: volsync-target-public
|
|
||||||
version: 1.1.1
|
|
||||||
repository: oci://harbor.alexlebens.net/helm-charts
|
|
||||||
- name: volsync-target
|
|
||||||
alias: volsync-target-watched
|
|
||||||
version: 1.1.1
|
|
||||||
repository: oci://harbor.alexlebens.net/helm-charts
|
repository: oci://harbor.alexlebens.net/helm-charts
|
||||||
icon: https://cdn.jsdelivr.net/gh/selfhst/icons@main/png/dawarich.png
|
icon: https://cdn.jsdelivr.net/gh/selfhst/icons@main/png/dawarich.png
|
||||||
# renovate: datasource=github-releases depName=Freika/dawarich
|
# renovate: datasource=github-releases depName=Freika/dawarich
|
||||||
appVersion: 1.7.5
|
appVersion: 1.4.0
|
||||||
|
|||||||
@@ -1,14 +0,0 @@
|
|||||||
{{/*
|
|
||||||
Common labels
|
|
||||||
*/}}
|
|
||||||
{{- define "custom.labels" -}}
|
|
||||||
{{ include "custom.selectorLabels" $ }}
|
|
||||||
{{- end }}
|
|
||||||
|
|
||||||
{{/*
|
|
||||||
Selector labels
|
|
||||||
*/}}
|
|
||||||
{{- define "custom.selectorLabels" -}}
|
|
||||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
|
||||||
app.kubernetes.io/part-of: {{ .Release.Name }}
|
|
||||||
{{- end }}
|
|
||||||
@@ -1,52 +1,42 @@
|
|||||||
apiVersion: external-secrets.io/v1
|
apiVersion: external-secrets.io/v1
|
||||||
kind: ExternalSecret
|
kind: ExternalSecret
|
||||||
metadata:
|
metadata:
|
||||||
name: dawarich-key
|
name: dawarich-key-secret
|
||||||
namespace: {{ .Release.Namespace }}
|
namespace: {{ .Release.Namespace }}
|
||||||
labels:
|
labels:
|
||||||
app.kubernetes.io/name: dawarich-key
|
app.kubernetes.io/name: dawarich-key-secret
|
||||||
{{- include "custom.labels" . | nindent 4 }}
|
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||||
|
app.kubernetes.io/part-of: {{ .Release.Name }}
|
||||||
spec:
|
spec:
|
||||||
secretStoreRef:
|
secretStoreRef:
|
||||||
kind: ClusterSecretStore
|
kind: ClusterSecretStore
|
||||||
name: openbao
|
name: vault
|
||||||
data:
|
data:
|
||||||
- secretKey: key
|
- secretKey: key
|
||||||
remoteRef:
|
remoteRef:
|
||||||
key: /cl01tl/dawarich/key
|
key: /cl01tl/dawarich/key
|
||||||
property: key
|
property: key
|
||||||
- secretKey: otp-primary-key
|
|
||||||
remoteRef:
|
|
||||||
key: /cl01tl/dawarich/key
|
|
||||||
property: otp-primary-key
|
|
||||||
- secretKey: otp-deterministic-key
|
|
||||||
remoteRef:
|
|
||||||
key: /cl01tl/dawarich/key
|
|
||||||
property: otp-deterministic-key
|
|
||||||
- secretKey: otp-derivation-salt
|
|
||||||
remoteRef:
|
|
||||||
key: /cl01tl/dawarich/key
|
|
||||||
property: otp-derivation-salt
|
|
||||||
|
|
||||||
---
|
---
|
||||||
apiVersion: external-secrets.io/v1
|
apiVersion: external-secrets.io/v1
|
||||||
kind: ExternalSecret
|
kind: ExternalSecret
|
||||||
metadata:
|
metadata:
|
||||||
name: dawarich-oidc-authentik
|
name: dawarich-oidc-secret
|
||||||
namespace: {{ .Release.Namespace }}
|
namespace: {{ .Release.Namespace }}
|
||||||
labels:
|
labels:
|
||||||
app.kubernetes.io/name: dawarich-oidc-authentik
|
app.kubernetes.io/name: dawarich-oidc-secret
|
||||||
{{- include "custom.labels" . | nindent 4 }}
|
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||||
|
app.kubernetes.io/part-of: {{ .Release.Name }}
|
||||||
spec:
|
spec:
|
||||||
secretStoreRef:
|
secretStoreRef:
|
||||||
kind: ClusterSecretStore
|
kind: ClusterSecretStore
|
||||||
name: openbao
|
name: vault
|
||||||
data:
|
data:
|
||||||
- secretKey: client
|
- secretKey: client
|
||||||
remoteRef:
|
remoteRef:
|
||||||
key: /cl01tl/authentik/oidc/dawarich
|
key: /authentik/oidc/dawarich
|
||||||
property: client
|
property: client
|
||||||
- secretKey: secret
|
- secretKey: secret
|
||||||
remoteRef:
|
remoteRef:
|
||||||
key: /cl01tl/authentik/oidc/dawarich
|
key: /authentik/oidc/dawarich
|
||||||
property: secret
|
property: secret
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ dawarich:
|
|||||||
main:
|
main:
|
||||||
image:
|
image:
|
||||||
repository: freikin/dawarich
|
repository: freikin/dawarich
|
||||||
tag: 1.7.5@sha256:dceef4bf7bd5e6a842d61cdd2a82440a0db34f70dc766e02b0b3b212e13b4ba6
|
tag: 1.4.0@sha256:07adb7643b00d1d8f606c675931d3604317fa3851b91b74ec503df8d50734cb8
|
||||||
command:
|
command:
|
||||||
- "web-entrypoint.sh"
|
- "web-entrypoint.sh"
|
||||||
args:
|
args:
|
||||||
@@ -61,12 +61,12 @@ dawarich:
|
|||||||
- name: OIDC_CLIENT_ID
|
- name: OIDC_CLIENT_ID
|
||||||
valueFrom:
|
valueFrom:
|
||||||
secretKeyRef:
|
secretKeyRef:
|
||||||
name: dawarich-oidc-authentik
|
name: dawarich-oidc-secret
|
||||||
key: client
|
key: client
|
||||||
- name: OIDC_CLIENT_SECRET
|
- name: OIDC_CLIENT_SECRET
|
||||||
valueFrom:
|
valueFrom:
|
||||||
secretKeyRef:
|
secretKeyRef:
|
||||||
name: dawarich-oidc-authentik
|
name: dawarich-oidc-secret
|
||||||
key: secret
|
key: secret
|
||||||
- name: OIDC_PROVIDER_NAME
|
- name: OIDC_PROVIDER_NAME
|
||||||
value: Authentik
|
value: Authentik
|
||||||
@@ -81,23 +81,8 @@ dawarich:
|
|||||||
- name: SECRET_KEY_BASE
|
- name: SECRET_KEY_BASE
|
||||||
valueFrom:
|
valueFrom:
|
||||||
secretKeyRef:
|
secretKeyRef:
|
||||||
name: dawarich-key
|
name: dawarich-key-secret
|
||||||
key: key
|
key: key
|
||||||
- name: OTP_ENCRYPTION_PRIMARY_KEY
|
|
||||||
valueFrom:
|
|
||||||
secretKeyRef:
|
|
||||||
name: dawarich-key
|
|
||||||
key: otp-primary-key
|
|
||||||
- name: OTP_ENCRYPTION_DETERMINISTIC_KEY
|
|
||||||
valueFrom:
|
|
||||||
secretKeyRef:
|
|
||||||
name: dawarich-key
|
|
||||||
key: otp-deterministic-key
|
|
||||||
- name: OTP_ENCRYPTION_KEY_DERIVATION_SALT
|
|
||||||
valueFrom:
|
|
||||||
secretKeyRef:
|
|
||||||
name: dawarich-key
|
|
||||||
key: otp-derivation-salt
|
|
||||||
- name: RAILS_LOG_TO_STDOUT
|
- name: RAILS_LOG_TO_STDOUT
|
||||||
value: true
|
value: true
|
||||||
- name: SELF_HOSTED
|
- name: SELF_HOSTED
|
||||||
@@ -126,7 +111,7 @@ dawarich:
|
|||||||
sidekiq:
|
sidekiq:
|
||||||
image:
|
image:
|
||||||
repository: freikin/dawarich
|
repository: freikin/dawarich
|
||||||
tag: 1.7.5@sha256:dceef4bf7bd5e6a842d61cdd2a82440a0db34f70dc766e02b0b3b212e13b4ba6
|
tag: 1.4.0@sha256:07adb7643b00d1d8f606c675931d3604317fa3851b91b74ec503df8d50734cb8
|
||||||
command:
|
command:
|
||||||
- "sidekiq-entrypoint.sh"
|
- "sidekiq-entrypoint.sh"
|
||||||
args:
|
args:
|
||||||
@@ -176,12 +161,12 @@ dawarich:
|
|||||||
- name: OIDC_CLIENT_ID
|
- name: OIDC_CLIENT_ID
|
||||||
valueFrom:
|
valueFrom:
|
||||||
secretKeyRef:
|
secretKeyRef:
|
||||||
name: dawarich-oidc-authentik
|
name: dawarich-oidc-secret
|
||||||
key: client
|
key: client
|
||||||
- name: OIDC_CLIENT_SECRET
|
- name: OIDC_CLIENT_SECRET
|
||||||
valueFrom:
|
valueFrom:
|
||||||
secretKeyRef:
|
secretKeyRef:
|
||||||
name: dawarich-oidc-authentik
|
name: dawarich-oidc-secret
|
||||||
key: secret
|
key: secret
|
||||||
- name: OIDC_PROVIDER_NAME
|
- name: OIDC_PROVIDER_NAME
|
||||||
value: Authentik
|
value: Authentik
|
||||||
@@ -196,23 +181,8 @@ dawarich:
|
|||||||
- name: SECRET_KEY_BASE
|
- name: SECRET_KEY_BASE
|
||||||
valueFrom:
|
valueFrom:
|
||||||
secretKeyRef:
|
secretKeyRef:
|
||||||
name: dawarich-key
|
name: dawarich-key-secret
|
||||||
key: key
|
key: key
|
||||||
- name: OTP_ENCRYPTION_PRIMARY_KEY
|
|
||||||
valueFrom:
|
|
||||||
secretKeyRef:
|
|
||||||
name: dawarich-key
|
|
||||||
key: otp-primary-key
|
|
||||||
- name: OTP_ENCRYPTION_DETERMINISTIC_KEY
|
|
||||||
valueFrom:
|
|
||||||
secretKeyRef:
|
|
||||||
name: dawarich-key
|
|
||||||
key: otp-deterministic-key
|
|
||||||
- name: OTP_ENCRYPTION_KEY_DERIVATION_SALT
|
|
||||||
valueFrom:
|
|
||||||
secretKeyRef:
|
|
||||||
name: dawarich-key
|
|
||||||
key: otp-derivation-salt
|
|
||||||
- name: RAILS_LOG_TO_STDOUT
|
- name: RAILS_LOG_TO_STDOUT
|
||||||
value: true
|
value: true
|
||||||
- name: SELF_HOSTED
|
- name: SELF_HOSTED
|
||||||
@@ -241,9 +211,11 @@ dawarich:
|
|||||||
http:
|
http:
|
||||||
port: 80
|
port: 80
|
||||||
targetPort: 3000
|
targetPort: 3000
|
||||||
|
protocol: TCP
|
||||||
metrics:
|
metrics:
|
||||||
port: 9394
|
port: 9394
|
||||||
targetPort: 9394
|
targetPort: 9394
|
||||||
|
protocol: TCP
|
||||||
serviceMonitor:
|
serviceMonitor:
|
||||||
main:
|
main:
|
||||||
selector:
|
selector:
|
||||||
@@ -343,36 +315,3 @@ postgres-18-cluster:
|
|||||||
immediate: true
|
immediate: true
|
||||||
schedule: "0 10 14 * * *"
|
schedule: "0 10 14 * * *"
|
||||||
backupName: garage-local
|
backupName: garage-local
|
||||||
volsync-target-storage:
|
|
||||||
pvcTarget: dawarich-storage
|
|
||||||
local:
|
|
||||||
enabled: true
|
|
||||||
schedule: 6 8 * * *
|
|
||||||
remote:
|
|
||||||
enabled: true
|
|
||||||
schedule: 6 9 * * *
|
|
||||||
external:
|
|
||||||
enabled: true
|
|
||||||
schedule: 6 10 * * *
|
|
||||||
volsync-target-public:
|
|
||||||
pvcTarget: dawarich-public
|
|
||||||
local:
|
|
||||||
enabled: true
|
|
||||||
schedule: 8 8 * * *
|
|
||||||
remote:
|
|
||||||
enabled: true
|
|
||||||
schedule: 8 9 * * *
|
|
||||||
external:
|
|
||||||
enabled: true
|
|
||||||
schedule: 8 10 * * *
|
|
||||||
volsync-target-watched:
|
|
||||||
pvcTarget: dawarich-watched
|
|
||||||
local:
|
|
||||||
enabled: true
|
|
||||||
schedule: 8 8 * * *
|
|
||||||
remote:
|
|
||||||
enabled: true
|
|
||||||
schedule: 8 9 * * *
|
|
||||||
external:
|
|
||||||
enabled: true
|
|
||||||
schedule: 8 10 * * *
|
|
||||||
|
|||||||
@@ -1,14 +0,0 @@
|
|||||||
{{/*
|
|
||||||
Common labels
|
|
||||||
*/}}
|
|
||||||
{{- define "custom.labels" -}}
|
|
||||||
{{ include "custom.selectorLabels" $ }}
|
|
||||||
{{- end }}
|
|
||||||
|
|
||||||
{{/*
|
|
||||||
Selector labels
|
|
||||||
*/}}
|
|
||||||
{{- define "custom.selectorLabels" -}}
|
|
||||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
|
||||||
app.kubernetes.io/part-of: {{ .Release.Name }}
|
|
||||||
{{- end }}
|
|
||||||
@@ -1,15 +1,16 @@
|
|||||||
apiVersion: external-secrets.io/v1
|
apiVersion: external-secrets.io/v1
|
||||||
kind: ExternalSecret
|
kind: ExternalSecret
|
||||||
metadata:
|
metadata:
|
||||||
name: synology-iscsi-config
|
name: synology-iscsi-config-secret
|
||||||
namespace: {{ .Release.Namespace }}
|
namespace: {{ .Release.Namespace }}
|
||||||
labels:
|
labels:
|
||||||
app.kubernetes.io/name: synology-iscsi-config
|
app.kubernetes.io/name: synology-iscsi-config-secret
|
||||||
{{- include "custom.labels" . | nindent 4 }}
|
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||||
|
app.kubernetes.io/part-of: {{ .Release.Name }}
|
||||||
spec:
|
spec:
|
||||||
secretStoreRef:
|
secretStoreRef:
|
||||||
kind: ClusterSecretStore
|
kind: ClusterSecretStore
|
||||||
name: openbao
|
name: vault
|
||||||
data:
|
data:
|
||||||
- secretKey: driver-config-file.yaml
|
- secretKey: driver-config-file.yaml
|
||||||
remoteRef:
|
remoteRef:
|
||||||
|
|||||||
@@ -1,10 +1,11 @@
|
|||||||
apiVersion: v1
|
apiVersion: v1
|
||||||
kind: Namespace
|
kind: Namespace
|
||||||
metadata:
|
metadata:
|
||||||
name: {{ .Release.Namespace }}
|
name: democratic-csi-synology-iscsi
|
||||||
labels:
|
labels:
|
||||||
app.kubernetes.io/name: {{ .Release.Namespace }}
|
app.kubernetes.io/name: democratic-csi-synology-iscsi
|
||||||
{{- include "custom.labels" . | nindent 4 }}
|
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||||
|
app.kubernetes.io/part-of: {{ .Release.Name }}
|
||||||
pod-security.kubernetes.io/audit: privileged
|
pod-security.kubernetes.io/audit: privileged
|
||||||
pod-security.kubernetes.io/enforce: privileged
|
pod-security.kubernetes.io/enforce: privileged
|
||||||
pod-security.kubernetes.io/warn: privileged
|
pod-security.kubernetes.io/warn: privileged
|
||||||
|
|||||||
@@ -1,9 +1,6 @@
|
|||||||
democratic-csi:
|
democratic-csi:
|
||||||
driver:
|
driver:
|
||||||
image:
|
existingConfigSecret: synology-iscsi-config-secret
|
||||||
registry: ghcr.io/democratic-csi/democratic-csi
|
|
||||||
tag: v1.9.5@@sha256:fc3b7d7ed3a616714139525075312758e23a5d425ffb539ad12c9bd20fb6001f
|
|
||||||
existingConfigSecret: synology-iscsi-config
|
|
||||||
config:
|
config:
|
||||||
driver: synology-iscsi
|
driver: synology-iscsi
|
||||||
resources:
|
resources:
|
||||||
@@ -13,23 +10,7 @@ democratic-csi:
|
|||||||
csiDriver:
|
csiDriver:
|
||||||
name: "org.democratic-csi.iscsi-synology"
|
name: "org.democratic-csi.iscsi-synology"
|
||||||
controller:
|
controller:
|
||||||
replicaCount: 3
|
replicaCount: 2
|
||||||
externalAttacher:
|
|
||||||
image:
|
|
||||||
registry: registry.k8s.io/sig-storage/csi-attacher
|
|
||||||
tag: v4.11.0@sha256:b74b05b39501565022883fc128002b4cb857a7bb6c858606bcb3fdedba0b0b80
|
|
||||||
externalProvisioner:
|
|
||||||
image:
|
|
||||||
registry: registry.k8s.io/sig-storage/csi-provisioner
|
|
||||||
tag: v3.6.4@sha256:e7ad666f1d9b0caa077c7f0c157c9f87d1e73858390732496f66dcc716ff10c5
|
|
||||||
externalResizer:
|
|
||||||
image:
|
|
||||||
registry: registry.k8s.io/sig-storage/csi-resizer
|
|
||||||
tag: v1.9.4@sha256:522911ef68bd2c5c17d90fb2a6d2b2fb72ae790f2c1463a466b4262a07fdbf5a
|
|
||||||
externalSnapshotter:
|
|
||||||
image:
|
|
||||||
registry: registry.k8s.io/sig-storage/csi-snapshotter
|
|
||||||
tag: v8.5.0@sha256:da081c27e8a6d91f36042c1942362d0515ced8d06e18c11b8f893e58c4d6d797
|
|
||||||
storageClasses:
|
storageClasses:
|
||||||
- name: synology-iscsi-delete
|
- name: synology-iscsi-delete
|
||||||
defaultClass: false
|
defaultClass: false
|
||||||
@@ -47,8 +28,6 @@ democratic-csi:
|
|||||||
fsType: ext4
|
fsType: ext4
|
||||||
node:
|
node:
|
||||||
hostPID: true
|
hostPID: true
|
||||||
rbac:
|
|
||||||
enabled: true
|
|
||||||
driver:
|
driver:
|
||||||
extraEnv:
|
extraEnv:
|
||||||
- name: ISCSIADM_HOST_STRATEGY
|
- name: ISCSIADM_HOST_STRATEGY
|
||||||
@@ -57,7 +36,3 @@ democratic-csi:
|
|||||||
value: /usr/local/sbin/iscsiadm
|
value: /usr/local/sbin/iscsiadm
|
||||||
iscsiDirHostPath: /var/iscsi
|
iscsiDirHostPath: /var/iscsi
|
||||||
iscsiDirHostPathType: ""
|
iscsiDirHostPathType: ""
|
||||||
driverRegistrar:
|
|
||||||
image:
|
|
||||||
registry: registry.k8s.io/sig-storage/csi-node-driver-registrar
|
|
||||||
tag: v2.16.0@sha256:ab482308a4921e28a6df09a16ab99a457e9af9641ff44fb1be1a690d07ce8b70
|
|
||||||
|
|||||||
@@ -8,7 +8,6 @@ keywords:
|
|||||||
home: https://docs.alexlebens.dev/applications/descheduler/
|
home: https://docs.alexlebens.dev/applications/descheduler/
|
||||||
sources:
|
sources:
|
||||||
- https://github.com/kubernetes-sigs/descheduler
|
- https://github.com/kubernetes-sigs/descheduler
|
||||||
- https://explore.ggcr.dev/?repo=registry.k8s.io%2Fdescheduler%2Fdescheduler
|
|
||||||
- https://github.com/kubernetes-sigs/descheduler/tree/master/charts/descheduler
|
- https://github.com/kubernetes-sigs/descheduler/tree/master/charts/descheduler
|
||||||
maintainers:
|
maintainers:
|
||||||
- name: alexlebens
|
- name: alexlebens
|
||||||
|
|||||||
@@ -1,14 +0,0 @@
|
|||||||
{{/*
|
|
||||||
Common labels
|
|
||||||
*/}}
|
|
||||||
{{- define "custom.labels" -}}
|
|
||||||
{{ include "custom.selectorLabels" $ }}
|
|
||||||
{{- end }}
|
|
||||||
|
|
||||||
{{/*
|
|
||||||
Selector labels
|
|
||||||
*/}}
|
|
||||||
{{- define "custom.selectorLabels" -}}
|
|
||||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
|
||||||
app.kubernetes.io/part-of: {{ .Release.Name }}
|
|
||||||
{{- end }}
|
|
||||||
@@ -1,7 +1,4 @@
|
|||||||
descheduler:
|
descheduler:
|
||||||
image:
|
|
||||||
repository: registry.k8s.io/descheduler/descheduler
|
|
||||||
tag: v0.35.1@sha256:871d3b804390b0b8c7cb09d4e9b7856cf30e31f9e9e3d29562b0301a10453bb1
|
|
||||||
kind: Deployment
|
kind: Deployment
|
||||||
resources:
|
resources:
|
||||||
limits:
|
limits:
|
||||||
|
|||||||
@@ -4,12 +4,9 @@ dependencies:
|
|||||||
version: 4.6.2
|
version: 4.6.2
|
||||||
- name: postgres-cluster
|
- name: postgres-cluster
|
||||||
repository: oci://harbor.alexlebens.net/helm-charts
|
repository: oci://harbor.alexlebens.net/helm-charts
|
||||||
version: 7.12.1
|
version: 7.10.0
|
||||||
- name: valkey
|
- name: valkey
|
||||||
repository: oci://harbor.alexlebens.net/helm-charts
|
repository: oci://harbor.alexlebens.net/helm-charts
|
||||||
version: 0.7.0
|
version: 0.4.0
|
||||||
- name: rclone-bucket
|
digest: sha256:dfcb5d35e03ecdc4206227d206d36509319f0dcdaed54363840d71337debb3f7
|
||||||
repository: oci://harbor.alexlebens.net/helm-charts
|
generated: "2026-03-15T20:05:03.156596646Z"
|
||||||
version: 0.5.0
|
|
||||||
digest: sha256:0545b7862144935e861641090f24e1cfb43ba73da7bcbca5013fae6e002e2daa
|
|
||||||
generated: "2026-05-02T01:46:52.095684422Z"
|
|
||||||
|
|||||||
@@ -5,14 +5,13 @@ description: Directus
|
|||||||
keywords:
|
keywords:
|
||||||
- directus
|
- directus
|
||||||
- content-management-system
|
- content-management-system
|
||||||
home: https://docs.alexlebens.dev/applications/directus/
|
home: https://docs.alexlebens.dev/applications/descheduler/
|
||||||
sources:
|
sources:
|
||||||
- https://github.com/directus/directus
|
- https://github.com/directus/directus
|
||||||
- https://github.com/directus/directus/pkgs/container/directus
|
- https://github.com/directus/directus/pkgs/container/directus
|
||||||
- https://github.com/bjw-s-labs/helm-charts/tree/main/charts/other/app-template
|
- https://github.com/bjw-s-labs/helm-charts/tree/main/charts/other/app-template
|
||||||
- https://gitea.alexlebens.dev/alexlebens/helm-charts/src/branch/main/charts/postgres-cluster
|
- https://gitea.alexlebens.dev/alexlebens/helm-charts/src/branch/main/charts/postgres-cluster
|
||||||
- https://gitea.alexlebens.dev/alexlebens/helm-charts/src/branch/main/charts/valkey
|
- https://gitea.alexlebens.dev/alexlebens/helm-charts/src/branch/main/charts/valkey
|
||||||
- https://gitea.alexlebens.dev/alexlebens/helm-charts/src/branch/main/charts/rclone-bucket
|
|
||||||
maintainers:
|
maintainers:
|
||||||
- name: alexlebens
|
- name: alexlebens
|
||||||
dependencies:
|
dependencies:
|
||||||
@@ -22,16 +21,12 @@ dependencies:
|
|||||||
version: 4.6.2
|
version: 4.6.2
|
||||||
- name: postgres-cluster
|
- name: postgres-cluster
|
||||||
alias: postgres-18-cluster
|
alias: postgres-18-cluster
|
||||||
version: 7.12.1
|
version: 7.10.0
|
||||||
repository: oci://harbor.alexlebens.net/helm-charts
|
repository: oci://harbor.alexlebens.net/helm-charts
|
||||||
- name: valkey
|
- name: valkey
|
||||||
alias: valkey
|
alias: valkey
|
||||||
version: 0.7.0
|
version: 0.4.0
|
||||||
repository: oci://harbor.alexlebens.net/helm-charts
|
repository: oci://harbor.alexlebens.net/helm-charts
|
||||||
- name: rclone-bucket
|
|
||||||
alias: rclone-directus-assets-remote
|
|
||||||
repository: oci://harbor.alexlebens.net/helm-charts
|
|
||||||
version: 0.5.0
|
|
||||||
icon: https://cdn.jsdelivr.net/gh/selfhst/icons/png/directus.png
|
icon: https://cdn.jsdelivr.net/gh/selfhst/icons/png/directus.png
|
||||||
# renovate: datasource=github-releases depName=directus/directus
|
# renovate: datasource=github-releases depName=directus/directus
|
||||||
appVersion: 11.17.4
|
appVersion: 11.17.0
|
||||||
|
|||||||
@@ -1,14 +0,0 @@
|
|||||||
{{/*
|
|
||||||
Common labels
|
|
||||||
*/}}
|
|
||||||
{{- define "custom.labels" -}}
|
|
||||||
{{ include "custom.selectorLabels" $ }}
|
|
||||||
{{- end }}
|
|
||||||
|
|
||||||
{{/*
|
|
||||||
Selector labels
|
|
||||||
*/}}
|
|
||||||
{{- define "custom.selectorLabels" -}}
|
|
||||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
|
||||||
app.kubernetes.io/part-of: {{ .Release.Name }}
|
|
||||||
{{- end }}
|
|
||||||
@@ -5,20 +5,13 @@ metadata:
|
|||||||
namespace: {{ .Release.Namespace }}
|
namespace: {{ .Release.Namespace }}
|
||||||
labels:
|
labels:
|
||||||
app.kubernetes.io/name: directus-config
|
app.kubernetes.io/name: directus-config
|
||||||
{{- include "custom.labels" . | nindent 4 }}
|
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||||
|
app.kubernetes.io/part-of: {{ .Release.Name }}
|
||||||
spec:
|
spec:
|
||||||
secretStoreRef:
|
secretStoreRef:
|
||||||
kind: ClusterSecretStore
|
kind: ClusterSecretStore
|
||||||
name: openbao
|
name: vault
|
||||||
data:
|
data:
|
||||||
- secretKey: key
|
|
||||||
remoteRef:
|
|
||||||
key: /cl01tl/directus/key
|
|
||||||
property: key
|
|
||||||
- secretKey: secret
|
|
||||||
remoteRef:
|
|
||||||
key: /cl01tl/directus/key
|
|
||||||
property: secret
|
|
||||||
- secretKey: admin-email
|
- secretKey: admin-email
|
||||||
remoteRef:
|
remoteRef:
|
||||||
key: /cl01tl/directus/config
|
key: /cl01tl/directus/config
|
||||||
@@ -27,6 +20,38 @@ spec:
|
|||||||
remoteRef:
|
remoteRef:
|
||||||
key: /cl01tl/directus/config
|
key: /cl01tl/directus/config
|
||||||
property: admin-password
|
property: admin-password
|
||||||
|
- secretKey: secret
|
||||||
|
remoteRef:
|
||||||
|
key: /cl01tl/directus/config
|
||||||
|
property: secret
|
||||||
|
- secretKey: key
|
||||||
|
remoteRef:
|
||||||
|
key: /cl01tl/directus/config
|
||||||
|
property: key
|
||||||
|
|
||||||
|
---
|
||||||
|
apiVersion: external-secrets.io/v1
|
||||||
|
kind: ExternalSecret
|
||||||
|
metadata:
|
||||||
|
name: directus-oidc-secret
|
||||||
|
namespace: {{ .Release.Namespace }}
|
||||||
|
labels:
|
||||||
|
app.kubernetes.io/name: directus-oidc-secret
|
||||||
|
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||||
|
app.kubernetes.io/part-of: {{ .Release.Name }}
|
||||||
|
spec:
|
||||||
|
secretStoreRef:
|
||||||
|
kind: ClusterSecretStore
|
||||||
|
name: vault
|
||||||
|
data:
|
||||||
|
- secretKey: OIDC_CLIENT_ID
|
||||||
|
remoteRef:
|
||||||
|
key: /authentik/oidc/directus
|
||||||
|
property: client
|
||||||
|
- secretKey: OIDC_CLIENT_SECRET
|
||||||
|
remoteRef:
|
||||||
|
key: /authentik/oidc/directus
|
||||||
|
property: secret
|
||||||
|
|
||||||
---
|
---
|
||||||
apiVersion: external-secrets.io/v1
|
apiVersion: external-secrets.io/v1
|
||||||
@@ -36,67 +61,18 @@ metadata:
|
|||||||
namespace: {{ .Release.Namespace }}
|
namespace: {{ .Release.Namespace }}
|
||||||
labels:
|
labels:
|
||||||
app.kubernetes.io/name: directus-metric-token
|
app.kubernetes.io/name: directus-metric-token
|
||||||
{{- include "custom.labels" . | nindent 4 }}
|
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||||
|
app.kubernetes.io/part-of: {{ .Release.Name }}
|
||||||
spec:
|
spec:
|
||||||
secretStoreRef:
|
secretStoreRef:
|
||||||
kind: ClusterSecretStore
|
kind: ClusterSecretStore
|
||||||
name: openbao
|
name: vault
|
||||||
data:
|
data:
|
||||||
- secretKey: metric-token
|
- secretKey: metric-token
|
||||||
remoteRef:
|
remoteRef:
|
||||||
key: /cl01tl/directus/metrics
|
key: /cl01tl/directus/metrics
|
||||||
property: metric-token
|
property: metric-token
|
||||||
|
|
||||||
---
|
|
||||||
apiVersion: external-secrets.io/v1
|
|
||||||
kind: ExternalSecret
|
|
||||||
metadata:
|
|
||||||
name: directus-valkey-config
|
|
||||||
namespace: {{ .Release.Namespace }}
|
|
||||||
labels:
|
|
||||||
app.kubernetes.io/name: directus-valkey-config
|
|
||||||
{{- include "custom.labels" . | nindent 4 }}
|
|
||||||
spec:
|
|
||||||
secretStoreRef:
|
|
||||||
kind: ClusterSecretStore
|
|
||||||
name: openbao
|
|
||||||
data:
|
|
||||||
- secretKey: user
|
|
||||||
remoteRef:
|
|
||||||
key: /cl01tl/directus/valkey
|
|
||||||
property: user
|
|
||||||
- secretKey: password
|
|
||||||
remoteRef:
|
|
||||||
key: /cl01tl/directus/valkey
|
|
||||||
property: password
|
|
||||||
- secretKey: default
|
|
||||||
remoteRef:
|
|
||||||
key: /cl01tl/directus/valkey
|
|
||||||
property: password
|
|
||||||
|
|
||||||
---
|
|
||||||
apiVersion: external-secrets.io/v1
|
|
||||||
kind: ExternalSecret
|
|
||||||
metadata:
|
|
||||||
name: directus-oidc-authentik
|
|
||||||
namespace: {{ .Release.Namespace }}
|
|
||||||
labels:
|
|
||||||
app.kubernetes.io/name: directus-oidc-authentik
|
|
||||||
{{- include "custom.labels" . | nindent 4 }}
|
|
||||||
spec:
|
|
||||||
secretStoreRef:
|
|
||||||
kind: ClusterSecretStore
|
|
||||||
name: openbao
|
|
||||||
data:
|
|
||||||
- secretKey: OIDC_CLIENT_ID
|
|
||||||
remoteRef:
|
|
||||||
key: /cl01tl/authentik/oidc/directus
|
|
||||||
property: client
|
|
||||||
- secretKey: OIDC_CLIENT_SECRET
|
|
||||||
remoteRef:
|
|
||||||
key: /cl01tl/authentik/oidc/directus
|
|
||||||
property: secret
|
|
||||||
|
|
||||||
---
|
---
|
||||||
apiVersion: external-secrets.io/v1
|
apiVersion: external-secrets.io/v1
|
||||||
kind: ExternalSecret
|
kind: ExternalSecret
|
||||||
@@ -105,11 +81,12 @@ metadata:
|
|||||||
namespace: {{ .Release.Namespace }}
|
namespace: {{ .Release.Namespace }}
|
||||||
labels:
|
labels:
|
||||||
app.kubernetes.io/name: directus-bucket-garage
|
app.kubernetes.io/name: directus-bucket-garage
|
||||||
{{- include "custom.labels" . | nindent 4 }}
|
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||||
|
app.kubernetes.io/part-of: {{ .Release.Name }}
|
||||||
spec:
|
spec:
|
||||||
secretStoreRef:
|
secretStoreRef:
|
||||||
kind: ClusterSecretStore
|
kind: ClusterSecretStore
|
||||||
name: openbao
|
name: vault
|
||||||
data:
|
data:
|
||||||
- secretKey: ACCESS_KEY_ID
|
- secretKey: ACCESS_KEY_ID
|
||||||
remoteRef:
|
remoteRef:
|
||||||
@@ -123,3 +100,31 @@ spec:
|
|||||||
remoteRef:
|
remoteRef:
|
||||||
key: /garage/home-infra/directus-assets
|
key: /garage/home-infra/directus-assets
|
||||||
property: ACCESS_REGION
|
property: ACCESS_REGION
|
||||||
|
|
||||||
|
---
|
||||||
|
apiVersion: external-secrets.io/v1
|
||||||
|
kind: ExternalSecret
|
||||||
|
metadata:
|
||||||
|
name: directus-valkey-config
|
||||||
|
namespace: {{ .Release.Namespace }}
|
||||||
|
labels:
|
||||||
|
app.kubernetes.io/name: directus-valkey-config
|
||||||
|
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||||
|
app.kubernetes.io/part-of: {{ .Release.Name }}
|
||||||
|
spec:
|
||||||
|
secretStoreRef:
|
||||||
|
kind: ClusterSecretStore
|
||||||
|
name: vault
|
||||||
|
data:
|
||||||
|
- secretKey: default
|
||||||
|
remoteRef:
|
||||||
|
key: /cl01tl/directus/valkey
|
||||||
|
property: password
|
||||||
|
- secretKey: user
|
||||||
|
remoteRef:
|
||||||
|
key: /cl01tl/directus/valkey
|
||||||
|
property: user
|
||||||
|
- secretKey: password
|
||||||
|
remoteRef:
|
||||||
|
key: /cl01tl/directus/valkey
|
||||||
|
property: password
|
||||||
|
|||||||
@@ -8,7 +8,8 @@ directus:
|
|||||||
main:
|
main:
|
||||||
image:
|
image:
|
||||||
repository: ghcr.io/directus/directus
|
repository: ghcr.io/directus/directus
|
||||||
tag: 11.17.4@sha256:eb326f679ae847c0a776f93b972761dc2ebe84980e0b9d274a6bc31cd62809f7
|
tag: 11.17.0@sha256:076269ccbe7d4a0c44ce5f5b7f11e2ea5f7b3e4c4f704c0f88a52805e069c1c6
|
||||||
|
pullPolicy: IfNotPresent
|
||||||
env:
|
env:
|
||||||
- name: PUBLIC_URL
|
- name: PUBLIC_URL
|
||||||
value: https://directus.alexlebens.net
|
value: https://directus.alexlebens.net
|
||||||
@@ -113,12 +114,12 @@ directus:
|
|||||||
- name: AUTH_AUTHENTIK_CLIENT_ID
|
- name: AUTH_AUTHENTIK_CLIENT_ID
|
||||||
valueFrom:
|
valueFrom:
|
||||||
secretKeyRef:
|
secretKeyRef:
|
||||||
name: directus-oidc-authentik
|
name: directus-oidc-secret
|
||||||
key: OIDC_CLIENT_ID
|
key: OIDC_CLIENT_ID
|
||||||
- name: AUTH_AUTHENTIK_CLIENT_SECRET
|
- name: AUTH_AUTHENTIK_CLIENT_SECRET
|
||||||
valueFrom:
|
valueFrom:
|
||||||
secretKeyRef:
|
secretKeyRef:
|
||||||
name: directus-oidc-authentik
|
name: directus-oidc-secret
|
||||||
key: OIDC_CLIENT_SECRET
|
key: OIDC_CLIENT_SECRET
|
||||||
- name: AUTH_AUTHENTIK_SCOPE
|
- name: AUTH_AUTHENTIK_SCOPE
|
||||||
value: openid profile email
|
value: openid profile email
|
||||||
@@ -142,7 +143,7 @@ directus:
|
|||||||
resources:
|
resources:
|
||||||
requests:
|
requests:
|
||||||
cpu: 10m
|
cpu: 10m
|
||||||
memory: 300Mi
|
memory: 1Gi
|
||||||
service:
|
service:
|
||||||
main:
|
main:
|
||||||
controller: main
|
controller: main
|
||||||
@@ -150,6 +151,7 @@ directus:
|
|||||||
http:
|
http:
|
||||||
port: 80
|
port: 80
|
||||||
targetPort: 8055
|
targetPort: 8055
|
||||||
|
protocol: TCP
|
||||||
serviceMonitor:
|
serviceMonitor:
|
||||||
main:
|
main:
|
||||||
selector:
|
selector:
|
||||||
@@ -210,24 +212,3 @@ valkey:
|
|||||||
aclUsers:
|
aclUsers:
|
||||||
default:
|
default:
|
||||||
permissions: "~* &* +@all"
|
permissions: "~* &* +@all"
|
||||||
rclone-directus-assets-remote:
|
|
||||||
cronJob:
|
|
||||||
suspend: false
|
|
||||||
schedule: 0 0 * * *
|
|
||||||
rclone:
|
|
||||||
source:
|
|
||||||
bucketName: directus-assets
|
|
||||||
destination:
|
|
||||||
bucketName: directus-assets
|
|
||||||
secret:
|
|
||||||
externalSecret:
|
|
||||||
source:
|
|
||||||
credentials:
|
|
||||||
path: /garage/home-infra/directus-assets
|
|
||||||
config:
|
|
||||||
path: /garage/config
|
|
||||||
destination:
|
|
||||||
credentials:
|
|
||||||
path: /garage/home-infra/directus-assets
|
|
||||||
config:
|
|
||||||
path: /garage/config
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
dependencies:
|
dependencies:
|
||||||
- name: eck-operator
|
- name: eck-operator
|
||||||
repository: https://helm.elastic.co
|
repository: https://helm.elastic.co
|
||||||
version: 3.3.2
|
version: 3.3.1
|
||||||
digest: sha256:ac7a849a6d8244ef56c11f18438c4c76133f92d245228c5a1c8369d42562c177
|
digest: sha256:8585f3ea3e4cafc4ff2969ea7e797017b7cfe4becb3385f0b080725908c02f09
|
||||||
generated: "2026-04-01T21:30:02.975920565Z"
|
generated: "2026-02-25T18:48:55.77034549Z"
|
||||||
|
|||||||
@@ -14,8 +14,8 @@ maintainers:
|
|||||||
- name: alexlebens
|
- name: alexlebens
|
||||||
dependencies:
|
dependencies:
|
||||||
- name: eck-operator
|
- name: eck-operator
|
||||||
version: 3.3.2
|
version: 3.3.1
|
||||||
repository: https://helm.elastic.co
|
repository: https://helm.elastic.co
|
||||||
icon: https://cdn.jsdelivr.net/gh/selfhst/icons@main/png/elastic.png
|
icon: https://cdn.jsdelivr.net/gh/selfhst/icons@main/png/elastic.png
|
||||||
# renovate: datasource=github-releases depName=elastic/cloud-on-k8s
|
# renovate: datasource=github-releases depName=elastic/cloud-on-k8s
|
||||||
appVersion: v3.3.2
|
appVersion: v3.3.1
|
||||||
|
|||||||
@@ -1,14 +0,0 @@
|
|||||||
{{/*
|
|
||||||
Common labels
|
|
||||||
*/}}
|
|
||||||
{{- define "custom.labels" -}}
|
|
||||||
{{ include "custom.selectorLabels" $ }}
|
|
||||||
{{- end }}
|
|
||||||
|
|
||||||
{{/*
|
|
||||||
Selector labels
|
|
||||||
*/}}
|
|
||||||
{{- define "custom.selectorLabels" -}}
|
|
||||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
|
||||||
app.kubernetes.io/part-of: {{ .Release.Name }}
|
|
||||||
{{- end }}
|
|
||||||
@@ -1,6 +1,7 @@
|
|||||||
eck-operator:
|
eck-operator:
|
||||||
managedNamespaces:
|
managedNamespaces:
|
||||||
- tubearchivist
|
- tubearchivist
|
||||||
|
- stalwart
|
||||||
installCRDs: true
|
installCRDs: true
|
||||||
replicaCount: 2
|
replicaCount: 2
|
||||||
resources:
|
resources:
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
dependencies:
|
dependencies:
|
||||||
- name: element-web
|
- name: element-web
|
||||||
repository: https://ananace.gitlab.io/charts
|
repository: https://ananace.gitlab.io/charts
|
||||||
version: 1.4.36
|
version: 1.4.33
|
||||||
- name: cloudflared
|
- name: cloudflared
|
||||||
repository: oci://harbor.alexlebens.net/helm-charts
|
repository: oci://harbor.alexlebens.net/helm-charts
|
||||||
version: 2.6.0
|
version: 2.4.0
|
||||||
digest: sha256:36b3f340ee46f20961fdaac41724528c6c3d4b34bf26d97779da7e33087250a1
|
digest: sha256:63b0e582d42fb42bcf4d96ba4b299e42c434c42f284208596808288543192fe0
|
||||||
generated: "2026-05-03T00:56:23.054212477Z"
|
generated: "2026-03-24T16:11:50.424321433Z"
|
||||||
|
|||||||
@@ -15,11 +15,11 @@ maintainers:
|
|||||||
- name: alexlebens
|
- name: alexlebens
|
||||||
dependencies:
|
dependencies:
|
||||||
- name: element-web
|
- name: element-web
|
||||||
version: 1.4.36
|
version: 1.4.33
|
||||||
repository: https://ananace.gitlab.io/charts
|
repository: https://ananace.gitlab.io/charts
|
||||||
- name: cloudflared
|
- name: cloudflared
|
||||||
repository: oci://harbor.alexlebens.net/helm-charts
|
repository: oci://harbor.alexlebens.net/helm-charts
|
||||||
version: 2.6.0
|
version: 2.4.0
|
||||||
icon: https://cdn.jsdelivr.net/gh/selfhst/icons/png/element.png
|
icon: https://cdn.jsdelivr.net/gh/selfhst/icons/png/element.png
|
||||||
# renovate: datasource=github-releases depName=element-hq/element-web
|
# renovate: datasource=github-releases depName=element-hq/element-web
|
||||||
appVersion: v1.12.17
|
appVersion: v1.12.13
|
||||||
|
|||||||
@@ -1,14 +0,0 @@
|
|||||||
{{/*
|
|
||||||
Common labels
|
|
||||||
*/}}
|
|
||||||
{{- define "custom.labels" -}}
|
|
||||||
{{ include "custom.selectorLabels" $ }}
|
|
||||||
{{- end }}
|
|
||||||
|
|
||||||
{{/*
|
|
||||||
Selector labels
|
|
||||||
*/}}
|
|
||||||
{{- define "custom.selectorLabels" -}}
|
|
||||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
|
||||||
app.kubernetes.io/part-of: {{ .Release.Name }}
|
|
||||||
{{- end }}
|
|
||||||
@@ -2,7 +2,7 @@ element-web:
|
|||||||
replicaCount: 1
|
replicaCount: 1
|
||||||
image:
|
image:
|
||||||
repository: ghcr.io/element-hq/element-web
|
repository: ghcr.io/element-hq/element-web
|
||||||
tag: v1.12.17@sha256:f4a81a24d49a9c5b97e02e77a3013ec799873e500e69041078a28be98e4f1280
|
tag: v1.12.13@sha256:5107e63026c13ed014f743e485821b7d4b56d275a41e76303859bb14f5f94eb6
|
||||||
defaultServer:
|
defaultServer:
|
||||||
url: https://matrix.alexlebens.dev
|
url: https://matrix.alexlebens.dev
|
||||||
name: alexlebens.dev
|
name: alexlebens.dev
|
||||||
|
|||||||
@@ -2,8 +2,5 @@ dependencies:
|
|||||||
- name: eraser
|
- name: eraser
|
||||||
repository: https://eraser-dev.github.io/eraser/charts
|
repository: https://eraser-dev.github.io/eraser/charts
|
||||||
version: 1.4.1
|
version: 1.4.1
|
||||||
- name: app-template
|
digest: sha256:da828de684b0cd82e99994586f3db4f55c43c01607c4d8d0e70e204c7bbbbf5b
|
||||||
repository: https://bjw-s-labs.github.io/helm-charts/
|
generated: "2025-12-03T22:53:20.200917773Z"
|
||||||
version: 4.6.2
|
|
||||||
digest: sha256:8414813d3d9d195b16ef7ebf814f7095a16413f4b0e579fcb37738000624f68c
|
|
||||||
generated: "2026-04-08T21:39:05.689756-05:00"
|
|
||||||
|
|||||||
@@ -9,19 +9,13 @@ home: https://docs.alexlebens.dev/applications/eraser/
|
|||||||
sources:
|
sources:
|
||||||
- https://github.com/eraser-dev/eraser
|
- https://github.com/eraser-dev/eraser
|
||||||
- https://github.com/eraser-dev/eraser/pkgs/container/eraser-manager
|
- https://github.com/eraser-dev/eraser/pkgs/container/eraser-manager
|
||||||
- https://github.com/open-telemetry/opentelemetry-collector-releases/pkgs/container/opentelemetry-collector-releases%2Fopentelemetry-collector
|
|
||||||
- https://github.com/eraser-dev/eraser/tree/main/charts/eraser
|
- https://github.com/eraser-dev/eraser/tree/main/charts/eraser
|
||||||
- https://github.com/bjw-s-labs/helm-charts/tree/main/charts/other/app-template
|
|
||||||
maintainers:
|
maintainers:
|
||||||
- name: alexlebens
|
- name: alexlebens
|
||||||
dependencies:
|
dependencies:
|
||||||
- name: eraser
|
- name: eraser
|
||||||
version: 1.4.1
|
version: 1.4.1
|
||||||
repository: https://eraser-dev.github.io/eraser/charts
|
repository: https://eraser-dev.github.io/eraser/charts
|
||||||
- name: app-template
|
|
||||||
alias: eraser-metrics
|
|
||||||
repository: https://bjw-s-labs.github.io/helm-charts/
|
|
||||||
version: 4.6.2
|
|
||||||
icon: https://raw.githubusercontent.com/eraser-dev/eraser/refs/heads/main/images/eraser-logo-color-1c.png
|
icon: https://raw.githubusercontent.com/eraser-dev/eraser/refs/heads/main/images/eraser-logo-color-1c.png
|
||||||
# renovate: datasource=github-releases depName=eraser-dev/eraser
|
# renovate: datasource=github-releases depName=eraser-dev/eraser
|
||||||
appVersion: v1.4.1
|
appVersion: v1.4.1
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user