From 55c6bb592342480447247f9e7f5f48acdccbb0f5 Mon Sep 17 00:00:00 2001 From: Jonas Juselius Date: Wed, 14 May 2025 16:01:55 +0200 Subject: [PATCH] wip: misc helmfile improvements --- argocd/helmfile-cmp/generate.sh | 11 ++----- bin/helmify | 15 +++++----- bin/kustomizer | 9 ++++-- helmfiles/argocd/helmfile.yaml | 31 ++++++++++++-------- helmfiles/argocd/values-oceanbox.yaml.gotmpl | 4 +++ helmfiles/argocd/values-prod.yaml.gotmpl | 0 helmfiles/argocd/values-staging.yaml.gotmpl | 0 7 files changed, 41 insertions(+), 29 deletions(-) create mode 100644 helmfiles/argocd/values-oceanbox.yaml.gotmpl create mode 100644 helmfiles/argocd/values-prod.yaml.gotmpl create mode 100644 helmfiles/argocd/values-staging.yaml.gotmpl diff --git a/argocd/helmfile-cmp/generate.sh b/argocd/helmfile-cmp/generate.sh index ec8b99cc..b4869ba5 100644 --- a/argocd/helmfile-cmp/generate.sh +++ b/argocd/helmfile-cmp/generate.sh @@ -1,20 +1,15 @@ #!/bin/sh export HOME=/plugin + export HELM_CACHE_HOME=/tmp/helm/cache export HELM_CONFIG_HOME=/tmp/helm/config export HELMFILE_CACHE_HOME=/tmp/helmfile/cache export HELMFILE_TEMPDIR=/tmp/helmfile/tmp -env > /tmp/$ARGOCD_APP_NAME.env +[[ -v ARGOCD_ENV_HELMFILE_ENVIRONMENT ]] && export HELMFILE_ENVIRONMENT=$ARGOCD_ENV_HELMFILE_ENVIRONMENT -if [[ -v ENVIRONMENT ]]; then - ARGS="-e $ENVIRONMENT" -elif [[ -v ARGOCD_ENV_ENVIRONMENT ]]; then - ARGS="-e $ARGOCD_ENV_ENVIRONMENT " -else - ARGS="" -fi +env > /tmp/$ARGOCD_APP_NAME.env helmfile -n "$ARGOCD_APP_NAMESPACE" $ARGS template --include-crds -q diff --git a/bin/helmify b/bin/helmify index 93af31a9..3f7abe1d 100755 --- a/bin/helmify +++ b/bin/helmify @@ -3,8 +3,8 @@ cmd=$1 chart=$2 env=$3 - -dir=_helmify +manifests=${4:-manifests} +outdir=${5:-_manifests} build() { if [ ! -d "manifests" ]; then @@ -12,11 +12,11 @@ build() { exit 0 fi - mkdir -p $dir/templates + mkdir -p $outdir/templates - echo "generating $dir/Chart.yaml" 1>&2 + echo "generating $outdir/Chart.yaml" 1>&2 - cat < $dir/Chart.yaml + cat < $outdir/Chart.yaml apiVersion: v1 appVersion: "1.0" description: A Helm chart for Kubernetes @@ -24,11 +24,12 @@ name: $chart version: 0.1.0 EOF -cp -r manifests/* $dir/templates +cp -r $manifests/* $outdir/templates } clean() { - rm -rf $dir + echo "cleaning $outdir" 1>&2 + rm -rf $outdir } case "$cmd" in diff --git a/bin/kustomizer b/bin/kustomizer index c009dfb2..b16b08bf 100755 --- a/bin/kustomizer +++ b/bin/kustomizer @@ -1,8 +1,13 @@ #!/usr/bin/env bash -if [ -f base/kustomization.yaml ]; then +[ $# != 1 ] && exit 1 +[ ! -f base/kustomization.yaml ] && exit 1 + +env=$1 + +if [ -f $env/kustomization.yaml ]; then cat >base/_manifest.yaml - kubectl kustomize base + kubectl kustomize $env else cat fi diff --git a/helmfiles/argocd/helmfile.yaml b/helmfiles/argocd/helmfile.yaml index bccbcaae..6e1ca392 100644 --- a/helmfiles/argocd/helmfile.yaml +++ b/helmfiles/argocd/helmfile.yaml @@ -1,16 +1,20 @@ -repositories: -- name: argo - url: https://argoproj.github.io/argo-helm - environments: default: values: - ../../apps/values.yaml - ../../values/sys/values-{{ requiredEnv "CLUSTER" }}.yaml prod: + values: + - ../../apps/values.yaml + - ../../../values/sys/values-{{ requiredEnv "CLUSTER" }}.yaml + staging: values: - ../../apps/values.yaml - ../../values/sys/values-{{ requiredEnv "CLUSTER" }}.yaml +--- +repositories: +- name: argo + url: https://argoproj.github.io/argo-helm releases: - name: argocd @@ -18,18 +22,21 @@ releases: chart: argo/argo-cd values: - values.yaml.gotmpl + - values-{{ .Environment.Name }}.yaml.gotmpl + - values-{{ requiredEnv "CLUSTER" }}.yaml.gotmpl postRenderer: ../../bin/kustomizer -- name: argocd-manifests + postRendererArgs: + - {{ .Environment.Name }} + missingFileHandler: Info +- name: manifests namespace: argocd - chart: _helmify + chart: _manifests hooks: - - events: - - prepare - - cleanup + - events: [ prepare, cleanup ] showlogs: true command: ../../bin/helmify args: - - "{{`{{if eq .Event.Name \"prepare\"}}build{{else}}clean{{end}}`}}" - - "{{`{{.Release.Chart}}`}}" - - "{{`{{.Environment.Name}}`}}" + - '{{`{{ if eq .Event.Name "prepare" }}build{{ else }}clean{{ end }}`}}' + - '{{`{{ .Release.Chart }}`}}' + - '{{`{{ .Environment.Name }}`}}' diff --git a/helmfiles/argocd/values-oceanbox.yaml.gotmpl b/helmfiles/argocd/values-oceanbox.yaml.gotmpl new file mode 100644 index 00000000..da0d0d00 --- /dev/null +++ b/helmfiles/argocd/values-oceanbox.yaml.gotmpl @@ -0,0 +1,4 @@ +configs: + cm: + url: "https://foobar.oceanbox.io" + diff --git a/helmfiles/argocd/values-prod.yaml.gotmpl b/helmfiles/argocd/values-prod.yaml.gotmpl new file mode 100644 index 00000000..e69de29b diff --git a/helmfiles/argocd/values-staging.yaml.gotmpl b/helmfiles/argocd/values-staging.yaml.gotmpl new file mode 100644 index 00000000..e69de29b