Files
homelab/pkg/vaultwarden/vaultwarden.go
T

61 lines
1.4 KiB
Go
Raw Normal View History

2026-05-07 20:55:40 -04:00
package vaultwarden
import (
"danicos.dev/daniel/go-kube/pkg/kube"
"danicos.dev/daniel/go-kube/pkg/stack"
"danicos.dev/daniel/homelab/pkg/root"
2026-05-07 21:08:36 -04:00
apps "k8s.io/api/apps/v1"
2026-05-07 20:55:40 -04:00
core "k8s.io/api/core/v1"
)
var Namespace = kube.Namespace(root.Vaultwarden.Name)
var meta kube.Metadata
var srv core.Service
2026-05-07 21:00:26 -04:00
var pvc core.PersistentVolumeClaim
2026-05-07 20:55:40 -04:00
func init() {
meta = kube.NewMetadata(root.Vaultwarden.Name, Namespace)
srv = meta.Service(root.Vaultwarden.Port)
srv.Spec.Type = core.ServiceTypeNodePort
srv.Spec.Ports[0].NodePort = int32(root.Vaultwarden.Public.NodePort)
2026-05-07 21:00:26 -04:00
pvc = meta.PVC()
2026-05-07 20:55:40 -04:00
}
func Stack() stack.Stack {
kz := kube.NewKuztomizedStack(
meta,
map[string]any{
2026-05-07 21:08:36 -04:00
"namespace": Namespace,
"service": srv,
"pvc": pvc,
"deployment": Deployment(),
2026-05-07 20:55:40 -04:00
},
)
return kz.Stack("vaultwarden")
}
2026-05-07 21:08:36 -04:00
func Deployment() apps.Deployment {
envMap := map[string]string{
2026-05-07 21:28:45 -04:00
"DOMAIN": root.Vaultwarden.Public.URL,
"SIGNUPS_ALLOWED": "true",
2026-05-07 21:08:36 -04:00
}
dataVol := kube.NewVolumeFrom(kube.VolumeSourcePVC, "data", pvc.Name)
podSpec := core.PodSpec{
Containers: []core.Container{{
Name: root.Vaultwarden.Name,
Image: root.Vaultwarden.Image,
Ports: []core.ContainerPort{{ContainerPort: root.Vaultwarden.Port}},
Env: kube.NewEnvVar(envMap),
VolumeMounts: []core.VolumeMount{{
Name: dataVol.Name,
MountPath: "/data",
}},
}},
Volumes: []core.Volume{
dataVol,
},
}
return kube.NewDeployment(meta, podSpec)
}