Files
homelab/pkg/flux/flux.go
2026-04-20 19:58:02 -04:00

54 lines
1.2 KiB
Go

package flux
import (
"time"
"danicos.dev/daniel/go-kube/pkg/kube"
"danicos.dev/daniel/go-kube/pkg/stack"
"danicos.dev/daniel/homelab/pkg/root"
kz "github.com/fluxcd/kustomize-controller/api/v1"
flux_meta "github.com/fluxcd/pkg/apis/meta"
meta "k8s.io/apimachinery/pkg/apis/meta/v1"
)
var flux_apps_meta kube.Metadata
var Flux_namespace = kube.Namespace(root.FLUX_NAMESPACE)
func init() {
flux_apps_meta = kube.NewMetadata("apps", Flux_namespace)
}
func Stack() stack.Stack {
s := stack.NewStack("flux", map[string]any{
"apps": Apps(),
})
return s
}
func Apps() kz.Kustomization {
retryInteval := durMin(1)
timeout := durMin(5)
spec := kz.KustomizationSpec{
Decryption: &kz.Decryption{
Provider: root.FLUX_DECRYPTION_PROVIDER,
SecretRef: &flux_meta.LocalObjectReference{
Name: "sops-age",
},
},
Interval: durMin(10),
RetryInterval: &retryInteval,
Timeout: &timeout,
SourceRef: kz.CrossNamespaceSourceReference{
Kind: "GitRepository",
Name: Flux_namespace.Name,
},
Path: root.FLUX_APPS_HYDRA_PATH,
Prune: true,
}
return kube.NewKustomization(flux_apps_meta, spec)
}
func durMin(d int64) meta.Duration {
return meta.Duration{Duration: (time.Duration(d) * time.Minute)}
}