<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://aznot.com/index.php?action=history&amp;feed=atom&amp;title=Kubernetes%2FPostgres</id>
	<title>Kubernetes/Postgres - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://aznot.com/index.php?action=history&amp;feed=atom&amp;title=Kubernetes%2FPostgres"/>
	<link rel="alternate" type="text/html" href="https://aznot.com/index.php?title=Kubernetes/Postgres&amp;action=history"/>
	<updated>2026-04-17T02:47:38Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.41.0</generator>
	<entry>
		<id>https://aznot.com/index.php?title=Kubernetes/Postgres&amp;diff=8513&amp;oldid=prev</id>
		<title>Kenneth: Created page with &quot;== How to deploy Postgres on Kubernetes | Refine.dev ==   How to deploy Postgres on Kubernetes | Refine  https://refine.dev/blog/postgres-on-kubernetes/#additional-commands-for-setting-up-the-container  === Versions ===  docker start example  FROM postgres:latest  # or specific version:  FROM postgres:15  === PVC ===  PV: &lt;pre&gt;     apiVersion: v1     kind: PersistentVolume     metadata:       name: postgres-pv     spec:       capacity:         storage: 5Gi       accessMo...&quot;</title>
		<link rel="alternate" type="text/html" href="https://aznot.com/index.php?title=Kubernetes/Postgres&amp;diff=8513&amp;oldid=prev"/>
		<updated>2025-03-25T21:55:58Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;== How to deploy Postgres on Kubernetes | Refine.dev ==   How to deploy Postgres on Kubernetes | Refine  https://refine.dev/blog/postgres-on-kubernetes/#additional-commands-for-setting-up-the-container  === Versions ===  docker start example  FROM postgres:latest  # or specific version:  FROM postgres:15  === PVC ===  PV: &amp;lt;pre&amp;gt;     apiVersion: v1     kind: PersistentVolume     metadata:       name: postgres-pv     spec:       capacity:         storage: 5Gi       accessMo...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== How to deploy Postgres on Kubernetes | Refine.dev ==&lt;br /&gt;
&lt;br /&gt;
 How to deploy Postgres on Kubernetes | Refine&lt;br /&gt;
 https://refine.dev/blog/postgres-on-kubernetes/#additional-commands-for-setting-up-the-container&lt;br /&gt;
&lt;br /&gt;
=== Versions ===&lt;br /&gt;
&lt;br /&gt;
docker start example&lt;br /&gt;
 FROM postgres:latest&lt;br /&gt;
 # or specific version:&lt;br /&gt;
 FROM postgres:15&lt;br /&gt;
&lt;br /&gt;
=== PVC ===&lt;br /&gt;
&lt;br /&gt;
PV:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    apiVersion: v1&lt;br /&gt;
    kind: PersistentVolume&lt;br /&gt;
    metadata:&lt;br /&gt;
      name: postgres-pv&lt;br /&gt;
    spec:&lt;br /&gt;
      capacity:&lt;br /&gt;
        storage: 5Gi&lt;br /&gt;
      accessModes:&lt;br /&gt;
        - ReadWriteOnce&lt;br /&gt;
      hostPath:&lt;br /&gt;
        path: &amp;quot;/mnt/data&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
PVC:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    apiVersion: v1&lt;br /&gt;
    kind: PersistentVolumeClaim&lt;br /&gt;
    metadata:&lt;br /&gt;
      name: postgres-pvc&lt;br /&gt;
    spec:&lt;br /&gt;
      accessModes:&lt;br /&gt;
        - ReadWriteOnce&lt;br /&gt;
      resources:&lt;br /&gt;
        requests:&lt;br /&gt;
          storage: 5Gi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 kubectl apply -f [your-pv-file].yaml&lt;br /&gt;
&lt;br /&gt;
=== Config Map ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    apiVersion: v1&lt;br /&gt;
    kind: ConfigMap&lt;br /&gt;
    metadata:&lt;br /&gt;
      name: postgres-config&lt;br /&gt;
    data:&lt;br /&gt;
      postgresql.conf: |&lt;br /&gt;
        max_connections = 100&lt;br /&gt;
        shared_buffers = 256MB&lt;br /&gt;
        log_statement = &amp;#039;all&amp;#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
spec:&lt;br /&gt;
  containers:&lt;br /&gt;
  - name: postgres&lt;br /&gt;
    image: postgres:latest&lt;br /&gt;
    volumeMounts:&lt;br /&gt;
    - name: postgres-config-volume&lt;br /&gt;
      mountPath: /etc/postgresql&lt;br /&gt;
  volumes:&lt;br /&gt;
  - name: postgres-config-volume&lt;br /&gt;
    configMap:&lt;br /&gt;
      name: postgres-config&lt;br /&gt;
      items:&lt;br /&gt;
      - key: postgresql.conf&lt;br /&gt;
        path: postgresql.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Secrets ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apiVersion: v1&lt;br /&gt;
kind: Secret&lt;br /&gt;
metadata:&lt;br /&gt;
  name: postgres-secret&lt;br /&gt;
type: Opaque&lt;br /&gt;
data:&lt;br /&gt;
  postgres-password: &amp;lt;base64-encoded-password&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 echo -n &amp;#039;yourpassword&amp;#039; | base64&lt;br /&gt;
&lt;br /&gt;
=== Use Secret ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
spec:&lt;br /&gt;
  containers:&lt;br /&gt;
  - name: postgres&lt;br /&gt;
    image: postgres:latest&lt;br /&gt;
    env:&lt;br /&gt;
    - name: POSTGRES_PASSWORD&lt;br /&gt;
      valueFrom:&lt;br /&gt;
        secretKeyRef:&lt;br /&gt;
          name: postgres-secret&lt;br /&gt;
          key: postgres-password&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Exec Into Pod ===&lt;br /&gt;
&lt;br /&gt;
 kubectl exec -it &amp;lt;pod-name&amp;gt; -- psql -U &amp;lt;username&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How to Deploy Postgres to Kubernetes Cluster | DigitalOcean ==&lt;br /&gt;
&lt;br /&gt;
MANY instances version&lt;br /&gt;
&lt;br /&gt;
 How to Deploy Postgres to Kubernetes Cluster | DigitalOcean&lt;br /&gt;
 https://www.digitalocean.com/community/tutorials/how-to-deploy-postgres-to-kubernetes-cluster&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== PVC ===&lt;br /&gt;
&lt;br /&gt;
PV:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apiVersion: v1&lt;br /&gt;
kind: PersistentVolume&lt;br /&gt;
metadata:&lt;br /&gt;
  name: postgres-volume&lt;br /&gt;
  labels:&lt;br /&gt;
    type: local&lt;br /&gt;
    app: postgres&lt;br /&gt;
spec:&lt;br /&gt;
  storageClassName: manual&lt;br /&gt;
  capacity:&lt;br /&gt;
    storage: 10Gi&lt;br /&gt;
  accessModes:&lt;br /&gt;
    - ReadWriteMany&lt;br /&gt;
  hostPath:&lt;br /&gt;
    path: /data/postgresql&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NOTE: accessModes: &amp;#039;&amp;#039;&amp;#039;ReadWriteMany&amp;#039;&amp;#039;&amp;#039; - ReadWriteMany, allowing multiple Pods to read and write to the volume simultaneously.&lt;br /&gt;
&lt;br /&gt;
PVC:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apiVersion: v1&lt;br /&gt;
kind: PersistentVolumeClaim&lt;br /&gt;
metadata:&lt;br /&gt;
  name: postgres-volume-claim&lt;br /&gt;
  labels:&lt;br /&gt;
    app: postgres&lt;br /&gt;
spec:&lt;br /&gt;
  storageClassName: manual&lt;br /&gt;
  accessModes:&lt;br /&gt;
    - ReadWriteMany&lt;br /&gt;
  resources:&lt;br /&gt;
    requests:&lt;br /&gt;
      storage: 10Gi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 kubectl apply -f psql-pv.yaml&lt;br /&gt;
 kubectl apply -f psql-claim.yaml&lt;br /&gt;
&lt;br /&gt;
=== Deployment ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apiVersion: apps/v1&lt;br /&gt;
kind: Deployment&lt;br /&gt;
metadata:&lt;br /&gt;
  name: postgres&lt;br /&gt;
spec:&lt;br /&gt;
  replicas: 3&lt;br /&gt;
  selector:&lt;br /&gt;
    matchLabels:&lt;br /&gt;
      app: postgres&lt;br /&gt;
  template:&lt;br /&gt;
    metadata:&lt;br /&gt;
      labels:&lt;br /&gt;
        app: postgres&lt;br /&gt;
    spec:&lt;br /&gt;
      containers:&lt;br /&gt;
        - name: postgres&lt;br /&gt;
          image: &amp;#039;postgres:14&amp;#039;&lt;br /&gt;
          imagePullPolicy: IfNotPresent&lt;br /&gt;
          ports:&lt;br /&gt;
            - containerPort: 5432&lt;br /&gt;
          envFrom:&lt;br /&gt;
            - configMapRef:&lt;br /&gt;
                name: postgres-secret&lt;br /&gt;
          volumeMounts:&lt;br /&gt;
            - mountPath: /var/lib/postgresql/data&lt;br /&gt;
              name: postgresdata&lt;br /&gt;
      volumes:&lt;br /&gt;
        - name: postgresdata&lt;br /&gt;
          persistentVolumeClaim:&lt;br /&gt;
            claimName: postgres-volume-claim&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 kubectl apply -f ps-deployment.yaml&lt;br /&gt;
&lt;br /&gt;
=== Service ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apiVersion: v1&lt;br /&gt;
kind: Service&lt;br /&gt;
metadata:&lt;br /&gt;
  name: postgres&lt;br /&gt;
  labels:&lt;br /&gt;
    app: postgres&lt;br /&gt;
spec:&lt;br /&gt;
  type: NodePort&lt;br /&gt;
  ports:&lt;br /&gt;
    - port: 5432&lt;br /&gt;
  selector:&lt;br /&gt;
    app: postgres&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Exec In ===&lt;br /&gt;
&lt;br /&gt;
 kubectl exec -it postgres-665b7554dc-cddgq -- psql -h localhost -U ps_user --password -p 5432 ps_db&lt;br /&gt;
&lt;br /&gt;
=== Scale ===&lt;br /&gt;
&lt;br /&gt;
Increase to 5&lt;br /&gt;
 kubectl scale deployment --replicas=5 postgres&lt;br /&gt;
&lt;br /&gt;
=== Backup and Restore ===&lt;br /&gt;
&lt;br /&gt;
 kubectl exec -it postgres-665b7554dc-cddgq -- pg_dump -U ps_user -d ps_db &amp;gt; db_backup.sql&lt;br /&gt;
&lt;br /&gt;
 kubectl cp db_backup.sql postgres-665b7554dc-cddgq:/tmp/db_backup.sql&lt;br /&gt;
&lt;br /&gt;
 kubectl exec -it postgres-665b7554dc-cddgq -- /bin/bash&lt;br /&gt;
&lt;br /&gt;
 psql -U ps_user -d ps_db -f /tmp/db_backup.sql&lt;/div&gt;</summary>
		<author><name>Kenneth</name></author>
	</entry>
</feed>