From d7793cb84568433cba63e6e7e5ceb22a41699e16 Mon Sep 17 00:00:00 2001 From: Stefan Reimer Date: Sat, 21 Jun 2025 23:25:18 +0000 Subject: [PATCH] fix: speed up applying resource by using yq over python --- admin/libhelm.sh | 40 +++++++++++--------------------------- charts/kubeadm/Chart.yaml | 2 +- charts/kubezero/Chart.yaml | 2 +- 3 files changed, 13 insertions(+), 31 deletions(-) diff --git a/admin/libhelm.sh b/admin/libhelm.sh index ab145814..544872fe 100644 --- a/admin/libhelm.sh +++ b/admin/libhelm.sh @@ -191,18 +191,10 @@ function delete_ns() { # Extract crds via helm calls function crds() { - helm template $(chart_location $chart) -n $namespace --name-template $module $targetRevision --include-crds -f $WORKDIR/values.yaml $API_VERSIONS --kube-version $KUBE_VERSION $@ | python3 -c ' -#!/usr/bin/python3 -import yaml -import sys - -yaml.add_multi_constructor("tag:yaml.org,2002:value", lambda loader, suffix, node: None, Loader=yaml.SafeLoader) - -for manifest in yaml.safe_load_all(sys.stdin): - if manifest: - if "kind" in manifest and manifest["kind"] == "CustomResourceDefinition": - print("---") - print(yaml.dump(manifest))' > $WORKDIR/crds.yaml + helm template $(chart_location $chart) -n $namespace --name-template $module \ + $targetRevision --include-crds -f $WORKDIR/values.yaml $API_VERSIONS \ + --kube-version $KUBE_VERSION $@ | \ + yq eval 'select(.kind == "CustomResourceDefinition")' > $WORKDIR/crds.yaml # Only apply if there are actually any crds if [ -s $WORKDIR/crds.yaml ]; then @@ -213,24 +205,14 @@ for manifest in yaml.safe_load_all(sys.stdin): # helm template | kubectl apply -f - -# confine to one namespace if possible +# - filter out any CRDs +# - set manifest.namespace if not set on any resource function render() { - helm secrets --evaluate-templates template $(chart_location $chart) -n $namespace --name-template $module $targetRevision --skip-tests --skip-crds --no-hooks -f $WORKDIR/values.yaml $API_VERSIONS --kube-version $KUBE_VERSION $ENV_VALUES \ - | python3 -c ' -#!/usr/bin/python3 -import yaml -import sys - -yaml.add_multi_constructor("tag:yaml.org,2002:value", lambda loader, suffix, node: None, Loader=yaml.SafeLoader) - -for manifest in yaml.safe_load_all(sys.stdin): - if manifest: - if "kind" in manifest and manifest["kind"] == "CustomResourceDefinition": - continue - if "metadata" in manifest and "namespace" not in manifest["metadata"]: - manifest["metadata"]["namespace"] = sys.argv[1] - print("---") - print(yaml.dump(manifest))' $namespace > $WORKDIR/helm.yaml + helm secrets --evaluate-templates template $(chart_location $chart) \ + -n $namespace --name-template $module $targetRevision --skip-tests \ + --skip-crds --no-hooks -f $WORKDIR/values.yaml $API_VERSIONS \ + --kube-version $KUBE_VERSION $ENV_VALUES | \ + yq eval 'select(.kind != "CustomResourceDefinition") | .metadata.namespace = (.metadata.namespace // "'$namespace'")' > $WORKDIR/helm.yaml } diff --git a/charts/kubeadm/Chart.yaml b/charts/kubeadm/Chart.yaml index a05dcd47..21c062c5 100644 --- a/charts/kubeadm/Chart.yaml +++ b/charts/kubeadm/Chart.yaml @@ -2,7 +2,7 @@ apiVersion: v2 name: kubeadm description: KubeZero Kubeadm cluster config type: application -version: 1.32.5 +version: 1.32.6 home: https://kubezero.com icon: https://cdn.zero-downtime.net/assets/kubezero/logo-small-64.png keywords: diff --git a/charts/kubezero/Chart.yaml b/charts/kubezero/Chart.yaml index 0458a71b..68adea46 100644 --- a/charts/kubezero/Chart.yaml +++ b/charts/kubezero/Chart.yaml @@ -2,7 +2,7 @@ apiVersion: v2 name: kubezero description: KubeZero - Root App of Apps chart type: application -version: 1.32.5 +version: 1.32.6 home: https://kubezero.com icon: https://cdn.zero-downtime.net/assets/kubezero/logo-small-64.png keywords: