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) }