Files
homelab/pkg/linkding/linkding.go
T
2026-04-18 10:18:07 -04:00

56 lines
1.2 KiB
Go

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
var pvc core.PersistentVolumeClaim
func init() {
meta = kube.NewMetadata("linking", Namespace)
srv = meta.Service(root.Linkding.Port)
pvc = meta.PVC()
}
func Stack() stack.Stack {
s := stack.NewStack("linkding", map[string]any{
"namespace": Namespace,
"srv": srv,
"pvc": pvc,
"deployment": deployment(),
})
return s
}
func deployment() apps.Deployment {
storage := kube.NewVolumeFrom(kube.VolumeSourcePVC, "data", pvc.Name)
pod_spec := core.PodSpec{
Containers: []core.Container{
{
Name: root.Linkding.Name,
Image: root.Linkding.Image,
Ports: []core.ContainerPort{{
ContainerPort: root.Linkding.Port,
}},
VolumeMounts: []core.VolumeMount{
{
Name: storage.Name,
MountPath: "/etc/linkding/data",
},
},
},
},
Volumes: []core.Volume{
storage,
},
}
return kube.NewDeployment(meta, pod_spec)
}