Compare commits

..
4 Commits
Author SHA1 Message Date
ivanch cf4757909f moving things around 2026-07-31 19:01:58 -03:00
ivanch 03dc4a385f fixing ESO node selector 2026-07-28 09:42:38 -03:00
ivanch 460978c537 fixing deployments 2026-07-28 09:42:16 -03:00
ivanch ba60c2d7f4 updating infra deployments 2026-07-17 21:27:57 -03:00
13 changed files with 191 additions and 58 deletions
+1
View File
@@ -1,5 +1,6 @@
media/ media/
default/*tt* default/*tt*
default/havenllo*
certs/ca* certs/ca*
lab/* lab/*
+20
View File
@@ -46,10 +46,30 @@ spec:
value: '{"invalidate_digital_signatures": true}' value: '{"invalidate_digital_signatures": true}'
- name: PAPERLESS_DBHOST - name: PAPERLESS_DBHOST
value: postgresql.haven value: postgresql.haven
- name: PAPERLESS_DBNAME
valueFrom:
secretKeyRef:
name: paperless-secret
key: PAPERLESS_DBNAME
- name: PAPERLESS_DBUSER
valueFrom:
secretKeyRef:
name: paperless-secret
key: PAPERLESS_DBUSER
- name: PAPERLESS_DBPASSWORD
valueFrom:
secretKeyRef:
name: paperless-secret
key: PAPERLESS_DBPASSWORD
- name: PAPERLESS_REDIS - name: PAPERLESS_REDIS
value: "redis://redis.haven:6379" value: "redis://redis.haven:6379"
- name: PAPERLESS_PORT - name: PAPERLESS_PORT
value: "8000" value: "8000"
- name: PAPERLESS_SECRET_KEY
valueFrom:
secretKeyRef:
name: paperless-secret
key: PAPERLESS_SECRET_KEY
ports: ports:
- containerPort: 8000 - containerPort: 8000
name: paperless-port name: paperless-port
+8 -1
View File
@@ -22,10 +22,17 @@ spec:
secretKeyRef: secretKeyRef:
name: beszel-key name: beszel-key
key: SECRET-KEY key: SECRET-KEY
image: henrygd/beszel-agent:0.17.0 image: henrygd/beszel-agent:0.18.7
imagePullPolicy: Always imagePullPolicy: Always
name: beszel-agent name: beszel-agent
ports: ports:
- containerPort: 45876 - containerPort: 45876
hostPort: 45876 hostPort: 45876
resources:
requests:
memory: "64Mi"
cpu: "50m"
limits:
memory: "128Mi"
cpu: "200m"
restartPolicy: Always restartPolicy: Always
+8 -1
View File
@@ -26,11 +26,18 @@ spec:
- amd64 - amd64
containers: containers:
- name: beszel - name: beszel
image: ghcr.io/henrygd/beszel/beszel:0.17.0 image: ghcr.io/henrygd/beszel/beszel:0.18.7
imagePullPolicy: Always imagePullPolicy: Always
ports: ports:
- containerPort: 8090 - containerPort: 8090
name: beszel-port name: beszel-port
resources:
requests:
memory: "128Mi"
cpu: "100m"
limits:
memory: "512Mi"
cpu: "500m"
volumeMounts: volumeMounts:
- name: beszel-config - name: beszel-config
mountPath: /beszel_data mountPath: /beszel_data
+1 -1
View File
@@ -44,7 +44,7 @@ spec:
cpu: 200m cpu: 200m
limits: limits:
memory: 1Gi memory: 1Gi
cpu: 500m cpu: 2000m
ports: ports:
- containerPort: 8443 - containerPort: 8443
name: code-port name: code-port
+2
View File
@@ -15,6 +15,8 @@ spec:
labels: labels:
app.kubernetes.io/name: bitwarden-cli app.kubernetes.io/name: bitwarden-cli
spec: spec:
nodeSelector:
kubernetes.io/arch: amd64
containers: containers:
- name: bitwarden-cli - name: bitwarden-cli
image: ghcr.io/charlesthomas/bitwarden-cli:2026.3.0 image: ghcr.io/charlesthomas/bitwarden-cli:2026.3.0
@@ -2,11 +2,16 @@ apiVersion: apps/v1
kind: Deployment kind: Deployment
metadata: metadata:
name: haven-notify name: haven-notify
namespace: default namespace: infra
labels: labels:
app: haven-notify app: haven-notify
spec: spec:
replicas: 1 replicas: 2
strategy:
type: RollingUpdate
rollingUpdate:
maxSurge: 1
maxUnavailable: 1
selector: selector:
matchLabels: matchLabels:
app: haven-notify app: haven-notify
@@ -52,7 +57,7 @@ apiVersion: v1
kind: Service kind: Service
metadata: metadata:
name: haven-notify name: haven-notify
namespace: default namespace: infra
spec: spec:
selector: selector:
app: haven-notify app: haven-notify
@@ -65,7 +70,7 @@ apiVersion: networking.k8s.io/v1
kind: Ingress kind: Ingress
metadata: metadata:
name: haven-notify name: haven-notify
namespace: default namespace: infra
spec: spec:
ingressClassName: nginx ingressClassName: nginx
rules: rules:
+62 -26
View File
@@ -3,55 +3,51 @@ kind: ServiceAccount
metadata: metadata:
name: kube-state-metrics name: kube-state-metrics
namespace: monitoring namespace: monitoring
labels:
app: kube-state-metrics
app.kubernetes.io/component: exporter
app.kubernetes.io/name: kube-state-metrics
app.kubernetes.io/version: 2.19.1
automountServiceAccountToken: false
--- ---
apiVersion: rbac.authorization.k8s.io/v1 apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole kind: ClusterRole
metadata: metadata:
name: kube-state-metrics name: kube-state-metrics
labels:
app: kube-state-metrics
app.kubernetes.io/component: exporter
app.kubernetes.io/name: kube-state-metrics
app.kubernetes.io/version: 2.19.1
rules: rules:
- apiGroups: [""] - apiGroups: [""]
resources: resources:
- nodes - nodes
- pods - pods
- services - persistentvolumeclaims
- endpoints
- namespaces
- replicationcontrollers
verbs: ["list", "watch"] verbs: ["list", "watch"]
- apiGroups: ["extensions", "apps"] - apiGroups: ["apps"]
resources: resources:
- statefulsets
- daemonsets - daemonsets
- deployments - deployments
- replicasets - replicasets
- statefulsets
verbs: ["list", "watch"] verbs: ["list", "watch"]
- apiGroups: ["batch"] - apiGroups: ["batch"]
resources: resources:
- cronjobs - cronjobs
- jobs - jobs
verbs: ["list", "watch"] verbs: ["list", "watch"]
- apiGroups: ["autoscaling"]
resources:
- horizontalpodautoscalers
verbs: ["list", "watch"]
- apiGroups: ["policy"]
resources:
- poddisruptionbudgets
verbs: ["list", "watch"]
- apiGroups: ["storage.k8s.io"]
resources:
- storageclasses
- volumeattachments
verbs: ["list", "watch"]
- apiGroups: ["apps"]
resources:
- replicasets
verbs: ["list", "watch"]
--- ---
apiVersion: rbac.authorization.k8s.io/v1 apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding kind: ClusterRoleBinding
metadata: metadata:
name: kube-state-metrics name: kube-state-metrics
labels:
app: kube-state-metrics
app.kubernetes.io/component: exporter
app.kubernetes.io/name: kube-state-metrics
app.kubernetes.io/version: 2.19.1
roleRef: roleRef:
apiGroup: rbac.authorization.k8s.io apiGroup: rbac.authorization.k8s.io
kind: ClusterRole kind: ClusterRole
@@ -68,6 +64,9 @@ metadata:
namespace: monitoring namespace: monitoring
labels: labels:
app: kube-state-metrics app: kube-state-metrics
app.kubernetes.io/component: exporter
app.kubernetes.io/name: kube-state-metrics
app.kubernetes.io/version: 2.19.1
spec: spec:
replicas: 1 replicas: 1
selector: selector:
@@ -77,14 +76,46 @@ spec:
metadata: metadata:
labels: labels:
app: kube-state-metrics app: kube-state-metrics
app.kubernetes.io/component: exporter
app.kubernetes.io/name: kube-state-metrics
app.kubernetes.io/version: 2.19.1
spec: spec:
automountServiceAccountToken: true
serviceAccountName: kube-state-metrics serviceAccountName: kube-state-metrics
nodeSelector:
kubernetes.io/os: linux
containers: containers:
- name: kube-state-metrics - name: kube-state-metrics
image: registry.k8s.io/kube-state-metrics/kube-state-metrics:v2.13.0 image: registry.k8s.io/kube-state-metrics/kube-state-metrics:v2.19.1
imagePullPolicy: IfNotPresent
args:
- --resources=cronjobs,daemonsets,deployments,jobs,nodes,persistentvolumeclaims,pods,replicasets,statefulsets
ports: ports:
- name: http-metrics - name: http-metrics
containerPort: 8080 containerPort: 8080
protocol: TCP
livenessProbe:
httpGet:
path: /livez
port: http-metrics
initialDelaySeconds: 5
timeoutSeconds: 5
readinessProbe:
httpGet:
path: /readyz
port: 8081
initialDelaySeconds: 5
timeoutSeconds: 5
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
readOnlyRootFilesystem: true
runAsNonRoot: true
runAsUser: 65534
seccompProfile:
type: RuntimeDefault
resources: resources:
requests: requests:
cpu: 50m cpu: 50m
@@ -100,10 +131,15 @@ metadata:
namespace: monitoring namespace: monitoring
labels: labels:
app: kube-state-metrics app: kube-state-metrics
app.kubernetes.io/component: exporter
app.kubernetes.io/name: kube-state-metrics
app.kubernetes.io/version: 2.19.1
spec: spec:
type: ClusterIP
selector:
app: kube-state-metrics
ports: ports:
- name: http-metrics - name: http-metrics
port: 8080 port: 8080
targetPort: http-metrics targetPort: http-metrics
selector: protocol: TCP
app: kube-state-metrics
+7
View File
@@ -24,6 +24,13 @@ spec:
mountPath: /etc/loki/config mountPath: /etc/loki/config
- name: loki-storage - name: loki-storage
mountPath: /tmp/loki mountPath: /tmp/loki
resources:
requests:
cpu: 100m
memory: 1Gi
limits:
cpu: 200m
memory: 1Gi
volumes: volumes:
- name: config - name: config
configMap: configMap:
+21
View File
@@ -0,0 +1,21 @@
apiVersion: external-secrets.io/v1
kind: ExternalSecret
metadata: { name: discord-webhook, namespace: infra }
spec:
refreshInterval: 1h
target:
name: discord-webhook
deletionPolicy: Retain
template:
type: Opaque
data:
HAVEN_WEBHOOK_URL: "{{ .HAVEN_WEBHOOK_URL }}"
data:
- secretKey: HAVEN_WEBHOOK_URL
remoteRef:
{
key: afd065bd-be8f-4e3c-a06e-e9d3089cb8f7,
property: HAVEN_WEBHOOK_URL,
}
sourceRef:
{ storeRef: { name: bitwarden-fields, kind: ClusterSecretStore } }
+18
View File
@@ -0,0 +1,18 @@
apiVersion: external-secrets.io/v1
kind: ExternalSecret
metadata: { name: kasbot, namespace: default }
spec:
refreshInterval: 1h
target:
name: kasbot-secrets
deletionPolicy: Retain
template:
type: Opaque
data:
KASBOT_TOKEN: "{{ .KASBOT_TOKEN }}"
data:
- secretKey: KASBOT_TOKEN
remoteRef:
{ key: 885a7d90-95be-494f-af88-300ac6a7e210, property: KASBOT_TOKEN }
sourceRef:
{ storeRef: { name: bitwarden-fields, kind: ClusterSecretStore } }
+9
View File
@@ -12,6 +12,7 @@ spec:
PAPERLESS_DBNAME: "{{ .PAPERLESS_DBNAME }}" PAPERLESS_DBNAME: "{{ .PAPERLESS_DBNAME }}"
PAPERLESS_DBUSER: "{{ .PAPERLESS_DBUSER }}" PAPERLESS_DBUSER: "{{ .PAPERLESS_DBUSER }}"
PAPERLESS_DBPASSWORD: "{{ .PAPERLESS_DBPASSWORD }}" PAPERLESS_DBPASSWORD: "{{ .PAPERLESS_DBPASSWORD }}"
PAPERLESS_SECRET_KEY: "{{ .PAPERLESS_SECRET_KEY }}"
data: data:
- secretKey: PAPERLESS_DBNAME - secretKey: PAPERLESS_DBNAME
remoteRef: remoteRef:
@@ -37,3 +38,11 @@ spec:
} }
sourceRef: sourceRef:
{ storeRef: { name: bitwarden-fields, kind: ClusterSecretStore } } { storeRef: { name: bitwarden-fields, kind: ClusterSecretStore } }
- secretKey: PAPERLESS_SECRET_KEY
remoteRef:
{
key: 05426e55-fe04-4c16-8697-8a258928257a,
property: PAPERLESS_SECRET_KEY,
}
sourceRef:
{ storeRef: { name: bitwarden-fields, kind: ClusterSecretStore } }