Add Glance Deployment

This commit is contained in:
Daniel Cosme
2026-05-07 12:36:47 -04:00
parent ad9659d1ee
commit 2450a25fac
6 changed files with 112 additions and 14 deletions

View File

@@ -0,0 +1,9 @@
apiVersion: v1
data:
user.css: |
main {
}
kind: ConfigMap
metadata:
name: glance-assets-configmap
namespace: glance

View File

@@ -3,6 +3,15 @@ data:
glance.yml: | glance.yml: |
server: server:
assets-path: /app/assets assets-path: /app/assets
# proxied: true
# auth:
# secret-key: # this must be set to a random value generated using the secret:make CLI command
# users:
# admin:
# password: 123456
# svilen:
# password: 123456
theme: theme:
# Note: assets are cached by the browser, changes to the CSS file # Note: assets are cached by the browser, changes to the CSS file
@@ -102,9 +111,6 @@ data:
- go-gitea/gitea - go-gitea/gitea
- immich-app/immich - immich-app/immich
- syncthing/syncthing - syncthing/syncthing
user.css: |
main {
}
kind: ConfigMap kind: ConfigMap
metadata: metadata:
name: glance-configmap name: glance-configmap

View File

@@ -0,0 +1,41 @@
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: glance
name: glance
namespace: glance
spec:
selector:
matchLabels:
app: glance
strategy: {}
template:
metadata:
labels:
app: glance
spec:
containers:
- image: glanceapp/glance:v0.8.4
name: glance
resources: {}
volumeMounts:
- mountPath: /app/config
name: config
- mountPath: /app/assets
name: assets
- mountPath: /etc/localtime
name: localtime
readOnly: true
volumes:
- configMap:
name: glance-configmap
name: config
- configMap:
name: glance-assets-configmap
name: assets
- hostPath:
path: /etc/localtime
type: File
name: localtime
status: {}

View File

@@ -4,6 +4,8 @@ metadata:
name: glance name: glance
namespace: glance namespace: glance
resources: resources:
- configmap.yaml - configmap-assets.yaml
- configmap-glance.yaml
- deployment.yaml
- namespace.yaml - namespace.yaml
- service.yaml - service.yaml

View File

@@ -1,5 +1,14 @@
server: server:
assets-path: /app/assets assets-path: /app/assets
# proxied: true
# auth:
# secret-key: # this must be set to a random value generated using the secret:make CLI command
# users:
# admin:
# password: 123456
# svilen:
# password: 123456
theme: theme:
# Note: assets are cached by the browser, changes to the CSS file # Note: assets are cached by the browser, changes to the CSS file

View File

@@ -19,7 +19,8 @@ var Secret = struct {
var Namespace = kube.Namespace(root.Glance.Name) var Namespace = kube.Namespace(root.Glance.Name)
var meta kube.Metadata var meta kube.Metadata
var srv core.Service var srv core.Service
var config_map core.ConfigMap var config_glance core.ConfigMap
var config_assets core.ConfigMap
func init() { func init() {
meta = kube.NewMetadata(root.Glance.Name, Namespace) meta = kube.NewMetadata(root.Glance.Name, Namespace)
@@ -27,19 +28,21 @@ func init() {
srv.Spec.Type = core.ServiceTypeNodePort srv.Spec.Type = core.ServiceTypeNodePort
srv.Spec.Ports[0].NodePort = int32(root.Glance.Public.NodePort) srv.Spec.Ports[0].NodePort = int32(root.Glance.Public.NodePort)
config_map = kube.ConfigFromFile("glance.yml", "./config/glance/config/glance.yml", meta) config_glance = kube.ConfigFromFile("glance.yml", "./config/glance/config/glance.yml", meta)
config_map.Data["home.yml"] = string(kube.ReadFileBytes("./config/glance/config/home.yml")) config_glance.Data["home.yml"] = string(kube.ReadFileBytes("./config/glance/config/home.yml"))
config_map.Data["user.css"] = string(kube.ReadFileBytes("./config/glance/assets/user.css")) meta_assets := kube.NewMetadata(root.Glance.Name+"-assets", Namespace)
config_assets = kube.ConfigFromFile("user.css", "./config/glance/assets/user.css", meta_assets)
} }
func Stack() stack.Stack { func Stack() stack.Stack {
kz := kube.NewKuztomizedStack( kz := kube.NewKuztomizedStack(
meta, meta,
map[string]any{ map[string]any{
"namespace": Namespace, "namespace": Namespace,
"service": srv, "service": srv,
"configmap": config_map, "configmap-glance": config_glance,
// "deployment": Deployment(), "configmap-assets": config_assets,
"deployment": Deployment(),
}, },
) )
return kz.Stack("glance") return kz.Stack("glance")
@@ -50,14 +53,42 @@ func Deployment() apps.Deployment {
// Config volume - ReadOnly? // Config volume - ReadOnly?
// Assets volume - ReadOnly? // Assets volume - ReadOnly?
// Mount /etc/localtime (ReadOnly) // Mount /etc/localtime (ReadOnly)
configVol := kube.NewVolumeFrom(kube.VolumeSourceConfigMap, "config", config_glance.Name)
assetsVol := kube.NewVolumeFrom(kube.VolumeSourceConfigMap, "assets", config_assets.Name)
localtimeVol := core.Volume{
Name: "localtime",
VolumeSource: core.VolumeSource{
HostPath: &core.HostPathVolumeSource{
Path: "/etc/localtime",
Type: new(core.HostPathFile),
},
},
}
podSpec := core.PodSpec{ podSpec := core.PodSpec{
Containers: []core.Container{{ Containers: []core.Container{{
Name: root.Glance.Name, Name: root.Glance.Name,
Image: root.Glance.Image, Image: root.Glance.Image,
Env: kube.NewEnvVarWithSecret(nil, nil, Secret.Name), // Env: kube.NewEnvVarWithSecret(nil, nil, Secret.Name),
VolumeMounts: []core.VolumeMount{
{
Name: configVol.Name,
MountPath: "/app/config",
},
{
Name: assetsVol.Name,
MountPath: "/app/assets",
},
{
Name: localtimeVol.Name,
MountPath: "/etc/localtime",
ReadOnly: true,
},
},
}}, }},
Volumes: []core.Volume{ Volumes: []core.Volume{
kube.NewVolumeFrom(kube.VolumeSourceConfigMap, "config", config_map.Name), configVol,
assetsVol,
localtimeVol,
}, },
} }
return kube.NewDeployment(meta, podSpec) return kube.NewDeployment(meta, podSpec)