Add Immich Stack
This commit is contained in:
35
pkg/cnpg/cluster.go
Normal file
35
pkg/cnpg/cluster.go
Normal file
@@ -0,0 +1,35 @@
|
||||
package cnpg
|
||||
|
||||
import (
|
||||
"danicos.dev/daniel/go-kube/pkg/kube"
|
||||
"danicos.dev/daniel/homelab/pkg/root"
|
||||
|
||||
kube_cnpg "danicos.dev/daniel/go-kube/pkg/cnpg"
|
||||
pg "github.com/cloudnative-pg/api/pkg/api/v1"
|
||||
core "k8s.io/api/core/v1"
|
||||
)
|
||||
|
||||
func Cluster() pg.Cluster {
|
||||
meta := kube.NewMetadata(root.CloudNativePG+"-cluster", PGClusterNamespace)
|
||||
spec := pg.ClusterSpec{
|
||||
Instances: 3,
|
||||
StorageConfiguration: pg.StorageConfiguration{
|
||||
StorageClass: new(root.KUBE_LOCAL_STORAGE_CLASS),
|
||||
Size: "10Gi",
|
||||
ResizeInUseVolumes: new(true),
|
||||
PersistentVolumeClaimTemplate: &core.PersistentVolumeClaimSpec{
|
||||
StorageClassName: new(root.KUBE_LOCAL_STORAGE_CLASS),
|
||||
},
|
||||
},
|
||||
Managed: &pg.ManagedConfiguration{
|
||||
Roles: []pg.RoleConfiguration{},
|
||||
},
|
||||
}
|
||||
return kube_cnpg.NewCluster(meta, spec)
|
||||
}
|
||||
|
||||
/*
|
||||
Need a role and secret
|
||||
- Username
|
||||
- Password
|
||||
*/
|
||||
@@ -4,10 +4,6 @@ import (
|
||||
"danicos.dev/daniel/go-kube/pkg/kube"
|
||||
"danicos.dev/daniel/go-kube/pkg/stack"
|
||||
"danicos.dev/daniel/homelab/pkg/root"
|
||||
v1 "k8s.io/api/core/v1"
|
||||
|
||||
kube_cnpg "danicos.dev/daniel/go-kube/pkg/cnpg"
|
||||
pg "github.com/cloudnative-pg/api/pkg/api/v1"
|
||||
)
|
||||
|
||||
var meta kube.Metadata
|
||||
@@ -28,19 +24,3 @@ func Stack() stack.Stack {
|
||||
})
|
||||
return s
|
||||
}
|
||||
|
||||
func Cluster() pg.Cluster {
|
||||
meta := kube.NewMetadata(root.CloudNativePG+"-cluster", PGClusterNamespace)
|
||||
spec := pg.ClusterSpec{
|
||||
Instances: 3,
|
||||
StorageConfiguration: pg.StorageConfiguration{
|
||||
StorageClass: new(root.KUBE_LOCAL_STORAGE_CLASS),
|
||||
Size: "10Gi",
|
||||
ResizeInUseVolumes: new(true),
|
||||
PersistentVolumeClaimTemplate: &v1.PersistentVolumeClaimSpec{
|
||||
StorageClassName: new(root.KUBE_LOCAL_STORAGE_CLASS),
|
||||
},
|
||||
},
|
||||
}
|
||||
return kube_cnpg.NewCluster(meta, spec)
|
||||
}
|
||||
|
||||
37
pkg/immich/immich.go
Normal file
37
pkg/immich/immich.go
Normal file
@@ -0,0 +1,37 @@
|
||||
package immich
|
||||
|
||||
import (
|
||||
"danicos.dev/daniel/go-kube/pkg/kube"
|
||||
"danicos.dev/daniel/go-kube/pkg/stack"
|
||||
"danicos.dev/daniel/homelab/pkg/root"
|
||||
core "k8s.io/api/core/v1"
|
||||
)
|
||||
|
||||
var Secret = struct {
|
||||
Name string
|
||||
DB_UserKey string
|
||||
DB_PasswordKey string
|
||||
}{
|
||||
Name: root.Immich.Name,
|
||||
DB_UserKey: "db_username",
|
||||
DB_PasswordKey: "db_password",
|
||||
}
|
||||
|
||||
var meta kube.Metadata
|
||||
var Namespace = kube.Namespace(root.Immich.Name)
|
||||
var srv core.Service
|
||||
var pvc core.PersistentVolumeClaim
|
||||
|
||||
func init() {
|
||||
meta = kube.NewMetadata(root.Immich.Name, Namespace)
|
||||
}
|
||||
|
||||
func Stack() stack.Stack {
|
||||
kz := kube.NewKuztomizedStack(
|
||||
meta,
|
||||
map[string]any{
|
||||
"namespace": Namespace,
|
||||
},
|
||||
)
|
||||
return kz.Stack("immich")
|
||||
}
|
||||
@@ -19,15 +19,15 @@ var Secret = struct {
|
||||
}
|
||||
|
||||
var meta kube.Metadata
|
||||
var Namespace = kube.Namespace("linkding")
|
||||
var Namespace = kube.Namespace(root.Linkding.Name)
|
||||
var srv core.Service
|
||||
var pvc core.PersistentVolumeClaim
|
||||
|
||||
func init() {
|
||||
meta = kube.NewMetadata("linking", Namespace)
|
||||
meta = kube.NewMetadata(root.Linkding.Name, Namespace)
|
||||
srv = meta.Service(root.Linkding.Port)
|
||||
srv.Spec.Type = core.ServiceTypeNodePort
|
||||
srv.Spec.Ports[0].NodePort = 30010
|
||||
srv.Spec.Ports[0].NodePort = int32(root.Linkding.Public.NodePort)
|
||||
pvc = meta.PVC()
|
||||
}
|
||||
|
||||
@@ -47,7 +47,7 @@ func Stack() stack.Stack {
|
||||
func deployment() apps.Deployment {
|
||||
storage := kube.NewVolumeFrom(kube.VolumeSourcePVC, "data", pvc.Name)
|
||||
envMapping := map[string]string{
|
||||
"LD_CSRF_TRUSTED_ORIGINS": root.Linkding.PublicURL,
|
||||
"LD_CSRF_TRUSTED_ORIGINS": root.Linkding.Public.URL,
|
||||
}
|
||||
secretMapping := map[string]string{
|
||||
"LD_SUPERUSER_NAME": Secret.SuperUserKey,
|
||||
|
||||
@@ -3,17 +3,34 @@ package root
|
||||
type Service struct {
|
||||
Name string
|
||||
Image string
|
||||
PublicURL string
|
||||
Port int32
|
||||
SecurityContextID int64
|
||||
Public *Public
|
||||
Postgres *Postgres
|
||||
}
|
||||
|
||||
type Public struct {
|
||||
URL string
|
||||
NodePort int32
|
||||
}
|
||||
|
||||
type Postgres struct{}
|
||||
|
||||
var Linkding = Service{
|
||||
Name: "linkding",
|
||||
Image: "sissbruecker/linkding:1.45.0",
|
||||
PublicURL: "https://link.danicos.me",
|
||||
Port: 9090,
|
||||
SecurityContextID: 33, // www-data user, group and FS ID
|
||||
Public: &Public{
|
||||
URL: "https://link.danicos.me",
|
||||
NodePort: 30010,
|
||||
},
|
||||
}
|
||||
|
||||
var Immich = Service{
|
||||
Name: "immich",
|
||||
Image: "",
|
||||
// PublicURL: "https://photos.danicos.me",
|
||||
}
|
||||
|
||||
var (
|
||||
|
||||
Reference in New Issue
Block a user