I have a Kubernetes cluster and I installed Postgresql and TeamCity-Server, but, as my enviorment is a sandbox, I always shutdown after comercial time and start on the next day. Said that, my data from Postgresql and TeamCity-Server always get lost and I think I'm missing some here, here is all my YAMLs, from both services:
Postgresql:
ConfigMap
apiVersion: v1
kind: ConfigMap
metadata:
namespace: postgresql
name: postgresql-config
labels:
app: postgresql
data:
POSTGRES_DB: postgresql
POSTGRES_USER: x
POSTGRES_PASSWORD: x
Storage
kind: PersistentVolume
apiVersion: v1
metadata:
namespace: postgresql
name: postgresql-pv
labels:
type: local
app: postgresql
spec:
storageClassName: manual
capacity:
storage: 10Gi
accessModes:
- ReadWriteMany
hostPath:
path: "/var/lib/postgresql/data"
type: "DirectoryOrCreate"
---
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
namespace: postgresql
name: postgresql-pvc
labels:
app: postgresql
spec:
storageClassName: manual
accessModes:
- ReadWriteMany
resources:
requests:
storage: 10Gi
Service
apiVersion: v1
kind: Service
metadata:
namespace: postgresql
name: postgresql
spec:
type: NodePort
selector:
app: postgresql
ports:
- port: 5432
targetPort: 5432
nodePort: 30582
Statefulset
apiVersion: apps/v1
kind: StatefulSet
metadata:
namespace: postgresql
name: postgresql
spec:
serviceName: postgresql
selector:
matchLabels:
app: postgresql
replicas: 1
template:
metadata:
labels:
app: postgresql
spec:
containers:
- name: postgresql
image: postgres:latest
volumeMounts:
- name: postgresql-pv
mountPath: /postgresql/data
envFrom:
- configMapRef:
name: postgresql-config
volumes:
- name: postgresql-pv
persistentVolumeClaim:
claimName: postgresql-pvc
TeamCity-Server
ConfigMap
apiVersion: v1
kind: ConfigMap
metadata:
name: teamcity-server-config
labels:
app: teamcity-server
type: backup-restorer
data:
database.properties: |
connectionProperties.user=x
connectionProperties.password=x
connectionUrl=jdbc:x
Storage
kind: PersistentVolume
apiVersion: v1
metadata:
namespace: teamcity-server
name: teamcity-server-datadir-pv
labels:
type: local
app: teamcity-server
spec:
storageClassName: manual
capacity:
storage: 2Gi
accessModes:
- ReadWriteMany
hostPath:
path: "/var/lib/teamcity_server/data"
type: "DirectoryOrCreate"
---
kind: PersistentVolume
apiVersion: v1
metadata:
namespace: teamcity-server
name: teamcity-server-log-pv
labels:
type: local
app: teamcity-server
spec:
storageClassName: manual
capacity:
storage: 2Gi
accessModes:
- ReadWriteMany
hostPath:
path: "/var/lib/teamcity_server/log"
type: "DirectoryOrCreate"
---
kind: PersistentVolume
apiVersion: v1
metadata:
namespace: teamcity-server
name: teamcity-server-backup-pv
labels:
type: local
app: teamcity-server
spec:
storageClassName: manual
capacity:
storage: 2Gi
accessModes:
- ReadWriteMany
hostPath:
path: "/var/lib/teamcity_server/backup"
type: "DirectoryOrCreate"
---
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
namespace: teamcity-server
name: teamcity-server-datadir-pvc
labels:
app: teamcity-server
spec:
storageClassName: manual
accessModes:
- ReadWriteMany
resources:
requests:
storage: 2Gi
---
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
namespace: teamcity-server
name: teamcity-server-log-pvc
labels:
app: teamcity-server
spec:
storageClassName: manual
accessModes:
- ReadWriteMany
resources:
requests:
storage: 2Gi
---
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
namespace: teamcity-server
name: teamcity-server-backup-pvc
labels:
app: teamcity-server
spec:
storageClassName: manual
accessModes:
- ReadWriteMany
resources:
requests:
storage: 2Gi
Service
apiVersion: v1
kind: Service
metadata:
namespace: teamcity-server
name: teamcity-server
labels:
app: teamcity-server
spec:
type: NodePort
ports:
- port: 8111
targetPort: 8111
protocol: TCP
selector:
app: teamcity-server
Statefulset
apiVersion: apps/v1
kind: StatefulSet
metadata:
namespace: teamcity-server
name: teamcity-server
spec:
serviceName: teamcity-server
selector:
matchLabels:
app: teamcity-server
replicas: 1
template:
metadata:
labels:
app: teamcity-server
teamcity: server
spec:
containers:
- name: teamcity-server
image: jetbrains/teamcity-server
imagePullPolicy: Always
volumeMounts:
- name: teamcity-server-data-pv
mountPath: /teamcity_server/data
- name: teamcity-server-log-pv
mountPath: /teamcity-server/logs
- name: teamcity-server-backup-pv
mountPath: /teamcity-server/backup
- name: teamcity-server-database-properties-pv
mountPath: /teamcity_server/data/config/database.properties
subPath: database.properties
ports:
- containerPort: 8111
volumes:
- name: teamcity-server-data-pv
persistentVolumeClaim:
claimName: teamcity-server-data-pvc
- name: teamcity-server-log-pv
persistentVolumeClaim:
claimName: teamcity-server-log-pvc
- name: teamcity-server-backup-pv
persistentVolumeClaim:
claimName: teamcity-server-backup-pvc
- name: teamcity-server-database-properties-pv
configMap:
name: teamcity-server-config
items:
- key: database.properties
path: database.properties