feat: add Linkding deployment

This commit is contained in:
Daniel Cosme
2026-04-17 20:49:37 -04:00
parent ef85cf4d7e
commit 573e8b6670
14 changed files with 221 additions and 18 deletions

View File

@@ -1,8 +1,46 @@
package flux
import "danicos.dev/daniel/go-kube/pkg/stack"
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"
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("", nil)
s := stack.NewStack("flux", map[string]any{
"apps": Apps(),
})
return s
}
func Apps() kz.Kustomization {
retryInteval := durMin(1)
timeout := durMin(5)
spec := kz.KustomizationSpec{
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)}
}

42
pkg/linkding/linkding.go Normal file
View File

@@ -0,0 +1,42 @@
package linkding
import (
"danicos.dev/daniel/go-kube/pkg/kube"
"danicos.dev/daniel/go-kube/pkg/stack"
"danicos.dev/daniel/homelab/pkg/root"
apps "k8s.io/api/apps/v1"
core "k8s.io/api/core/v1"
)
var meta kube.Metadata
var Namespace = kube.Namespace("linkding")
var srv core.Service
func init() {
meta = kube.NewMetadata("linking", Namespace)
srv = meta.Service(root.Linkding.Port)
}
func Stack() stack.Stack {
s := stack.NewStack("linkding", map[string]any{
"namespace": Namespace,
"srv": srv,
"deployment": deployment(),
})
return s
}
func deployment() apps.Deployment {
pod_spec := core.PodSpec{
Containers: []core.Container{
{
Name: root.Linkding.Name,
Image: root.Linkding.Image,
Ports: []core.ContainerPort{{
ContainerPort: root.Linkding.Port,
}},
},
},
}
return kube.NewDeployment(meta, pod_spec)
}

View File

@@ -1,7 +1,13 @@
package root
var (
const (
HYDRA_CLUSTER = "hydra"
HYDRA_HOSTNAME = "hydra-0" // VPN Host
GITEA_HOST = "danicos.dev"
)
const (
FLUX_NAMESPACE = "flux-system"
FLUX_APPS_HYDRA_PATH = "./apps/" + HYDRA_CLUSTER
FLUX_CLUSTER_HYDRA_PATH = "./clusters/" + HYDRA_CLUSTER
)

13
pkg/root/services.go Normal file
View File

@@ -0,0 +1,13 @@
package root
type Service struct {
Name string
Image string
Port int32
}
var Linkding = Service{
Name: "linkding",
Image: "sissbruecket/linkding:1.31.0",
Port: 9090,
}