diff --git a/Taskfile.yaml b/Taskfile.yaml index 8c672360..fc3e5e64 100644 --- a/Taskfile.yaml +++ b/Taskfile.yaml @@ -396,3 +396,47 @@ tasks: # Run the selected task [ -n "$task_name" ] && task "$task_name" + + render-helmfile-local: + desc: Render helmfile locally using dagger helm module + cmds: + - | + set -e + + # Find helmfiles in specific directories + HELMFILES=$(find apps cicd database infra monitoring -maxdepth 1 -type f \( -name "*.yaml.gotmpl" -o -name "*.yaml" \) 2>/dev/null | sort) + + if [ -z "$HELMFILES" ]; then + echo "❌ No helmfiles found in apps, cicd, database, infra, or monitoring directories" + exit 1 + fi + + # Let user choose helmfile + HELMFILE=$(echo "$HELMFILES" | gum choose --header "Select helmfile to render:") + + if [ -z "$HELMFILE" ]; then + echo "❌ No helmfile selected" + exit 1 + fi + + # Extract directory and filename + HELMFILE_DIR=$(dirname "$HELMFILE") + HELMFILE_NAME=$(basename "$HELMFILE") + + # Normalize path (remove ./ prefix) + SRC="${HELMFILE_DIR#./}" + [ "$SRC" = "." ] && SRC="." + + echo "" + echo "📋 Rendering helmfile:" + echo " Source : $SRC" + echo " File : $HELMFILE_NAME" + echo "" + + # Render using dagger + dagger call -m github.com/stuttgart-things/dagger/helm@v0.57.0 \ + helmfile-operation \ + --operation template \ + --src "$SRC" \ + --helmfile-ref "$HELMFILE_NAME" \ + --progress plain -vv diff --git a/cicd/README.md b/cicd/README.md index 4fef3a09..86704741 100644 --- a/cicd/README.md +++ b/cicd/README.md @@ -178,7 +178,20 @@ helmfiles:
CROSSPLANE ```bash -dagger call -m github.com/stuttgart-things/dagger/helm@v0.57.0 \ helmfile-operation \ +# TEST RENDER w/ VALUES FROM LOCAL SOURCE (REPO ROOT) +dagger call -m github.com/stuttgart-things/dagger/helm@v0.57.0 \ +helmfile-operation \ +--operation template \ +--src "cicd" \ +--helmfile-ref "crossplane.yaml.gotmpl" \ +--state-values "version=2.1.3,terraform.configName=terraform-runtime-config,terraform.s3SecretName=terraform-s3,terraform.image=ghcr.io/stuttgart-things/sthings-cptf:1.14.3,terraform.poll=30s,deployTeraformProvider=true,terraform.reconcileRate=10,terraform.package=xpkg.upbound.io/upbound/provider-terraform,terraform.version=v1.0.5" \ +--progress plain -vv +``` + +```bash +# DEPLOY DEFAULTS + VERSION +dagger call -m github.com/stuttgart-things/dagger/helm@v0.57.0 \ +helmfile-operation \ --helmfile-ref "git::https://github.com/stuttgart-things/helm.git@cicd/crossplane.yaml.gotmpl" \ --operation apply \ --state-values "version=2.1.3" \ diff --git a/cicd/crossplane.yaml.gotmpl b/cicd/crossplane.yaml.gotmpl index 71352bba..fde6aead 100644 --- a/cicd/crossplane.yaml.gotmpl +++ b/cicd/crossplane.yaml.gotmpl @@ -5,9 +5,28 @@ environments: - namespace: crossplane-system - version: 2.1.3 - providers: - - xpkg.upbound.io/crossplane-contrib/provider-helm:v0.21.0 - - xpkg.upbound.io/crossplane-contrib/provider-kubernetes:v0.18.0 + - xpkg.upbound.io/crossplane-contrib/provider-helm:v1.0.6 + - xpkg.upbound.io/crossplane-contrib/provider-kubernetes:v1.2.0 + - configurations: + - ghcr.io/stuttgart-things/crossplane/cloud-config:v0.3.0 + - ghcr.io/stuttgart-things/crossplane/harvester-vm:v0.1.1 + - ghcr.io/stuttgart-things/crossplane/volume-claim:v0.1.0 - deployTeraformProvider: false + - terraform: + secrets: + terraform-s3: + namespace: crossplane-system + kvs: + AWS_ACCESS_KEY_ID: AKIAEXAMPLEKEY + AWS_SECRET_ACCESS_KEY: secret123 + AWS_REGION: eu-central-1 + configName: terraform-runtime-config + s3SecretName: terraform-s3 + image: ghcr.io/stuttgart-things/sthings-cptf:1.14.3 + poll: 30s + reconcileRate: 10 + package: xpkg.upbound.io/upbound/provider-terraform + version: v1.0.5 --- releases: - name: crossplane-deployment diff --git a/cicd/values/crossplane-terraform-provider.values.yaml.gotmpl b/cicd/values/crossplane-terraform-provider.values.yaml.gotmpl index 7b4c1911..80ed9976 100644 --- a/cicd/values/crossplane-terraform-provider.values.yaml.gotmpl +++ b/cicd/values/crossplane-terraform-provider.values.yaml.gotmpl @@ -1,6 +1,6 @@ --- secrets: -{{- range $k, $v := .Values.secrets }} +{{- range $k, $v := .Values.terraform.secrets }} {{ $k }}: name: {{ $k }} namespace: {{ $v.namespace }} @@ -24,16 +24,18 @@ customresources: template: spec: containers: - - envFrom: + {{- if .Values.terraform.s3SecretName }} + envFrom: - secretRef: name: {{ .Values.terraform.s3SecretName }} - name: package-runtime - image: {{ .Values.terraform.image }} - args: - - -d - - --poll={{ .Values.terraform.poll }} - - --max-reconcile-rate={{ .Values.terraform.reconcileRate }} - resources: {} + {{- end }} + name: package-runtime + image: {{ .Values.terraform.image }} + args: + - -d + - --poll={{ .Values.terraform.poll }} + - --max-reconcile-rate={{ .Values.terraform.reconcileRate }} + resources: {} provider: apiVersion: pkg.crossplane.io/v1 kind: Provider diff --git a/cicd/values/crossplane.values.yaml.gotmpl b/cicd/values/crossplane.values.yaml.gotmpl index ba015906..83629029 100644 --- a/cicd/values/crossplane.values.yaml.gotmpl +++ b/cicd/values/crossplane.values.yaml.gotmpl @@ -2,8 +2,19 @@ args: - '--debug' - '--enable-usages' + +{{- if .Values.providers }} provider: packages: {{- range .Values.providers }} - {{ . }} {{- end }} +{{- end }} + +{{- if .Values.configurations }} +configuration: + packages: + {{- range .Values.configurations }} + - {{ . }} + {{- end }} +{{- end }}