feat: add Linkding deployment
This commit is contained in:
@@ -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
42
pkg/linkding/linkding.go
Normal 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)
|
||||
}
|
||||
@@ -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
13
pkg/root/services.go
Normal 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,
|
||||
}
|
||||
Reference in New Issue
Block a user