1
0
Fork 0
Resources for deploying and managing my personal Kubernetes cluster
 
 
 
Go to file
Dustin ffffe9d3c8 postgresql: Deploy Postgres Operator
While I was preparing to deploy PostgreSQL for Firefly III, I was
thinking it would be a neat idea to write an operator that uses
custom resources to manage PostgreSQL roles and databases.  Then I
though, surely something like that must exist already.  As it turns out,
the [Postgres Operator][0] does exactly that, and a whole lot more.

The *Postgres Operator* handles deploying PostgreSQL server instances,
including primary/standby replication with load balancers.  It uses
custom resources to manage the databases and users (roles) in an
instance, and stores role passwords in Secret resources.  It supports
backing up instances using `pg_basebackup` and WAL archives (i.e.
physical backups) via [WAL-E][1]/[WAL-G][2].  While various backup
storage targets are supported, *Postgres Operator* really only works
well with the cloud storage services like S3, Azure, and Google Cloud
Platform.  Fortunately, S3-compatible on-premises solutions like MinIO
are just fine.

I think for my use cases, a single PostgreSQL cluster with multiple
databases will be sufficient.  I know *Firefly III* will need a
PostgreSQL database, and I will likely want to migrate *Paperless-ngx*
to PostgreSQL eventually too.  Having a single instance will save on
memory resources, at the cost of per-application point-in-time recovery.
For now, just one server in the cluster is probably sufficient, but
luckily adding standby servers appears to be really easy should the need
arise.

[0]: https://postgres-operator.readthedocs.io/en/latest/
[1]: https://github.com/wal-e/wal-e
[2]: https://github.com/wal-g/wal-g
2023-05-12 12:13:24 -05:00
authelia authelia: add OIDC client for MinIO 2023-05-12 11:45:20 -05:00
autoscaler autoscaler: Tolerate control-plane taint 2022-12-16 17:20:22 -06:00
cert-manager cert-manager: Add certificate for tabitha.biz 2023-05-12 11:44:10 -05:00
docker-distribution docker-distribution: Deploy OCI image registry 2022-07-31 01:15:01 -05:00
dynk8s-provisioner dynk8s: Fix Ingress routing 2022-11-24 11:14:01 -06:00
hudctrl hudctrl: Update for v0.2.0 2022-12-18 16:26:07 -06:00
ingress ingress: Show how to import cert as secret 2022-08-23 21:20:47 -05:00
jenkins jenkins: Remove dockerconfigjson 2022-12-28 11:05:40 -06:00
kitchen kitchen: Allow Jenkins to restart deployment 2022-11-06 17:22:46 -06:00
metrics metrics: Add role to allow anon access to metrics 2022-11-05 16:23:02 -05:00
ntfy ntfy: Allow notification attachments 2023-01-13 09:41:10 -06:00
paperless-ngx paperless-ngx: Deploy application 2023-01-13 21:33:14 -06:00
phpipam phpipam: Update to v1.5.2 2023-04-20 13:59:30 -05:00
postgresql postgresql: Deploy Postgres Operator 2023-05-12 12:13:24 -05:00
prometheus_speedtest prom_speedtest: Add application manifest 2022-08-06 22:21:06 -05:00
scanservjs scanservjs: ingress: Increase proxy read timeout 2023-04-20 17:40:58 -05:00
setup setup: ks: Generate iSCSI initiator name 2022-08-23 21:22:01 -05:00
storage storage: Upgrade Longhorn to v1.4.1 2023-04-24 23:21:55 -05:00
README.md README: Add storage section 2022-07-31 01:38:46 -05:00

README.md

Dustin's Kubernetes Cluster

This repository contains resources for deploying and managing my on-premises Kubernetes cluster

Cluster Setup

The cluster primarily consists of libvirt/QEMU+KVM virtual machines. The Control Plane nodes are VMs, as are the x86_64 worker nodes. Eventually, I would like to add Raspberry Pi or Pine64 machines as aarch64 nodes.

All machines run Fedora, using only Fedora builds of the Kubernetes components (kubeadm, kubectl, and kubeadm).

See Cluster Setup for details.

Jenkins Agents

One of the main use cases for the Kubernetes cluster is to provide dynamic agents for Jenkins. Using the Kubernetes Plugin, Jenkins will automatically launch worker nodes as Kubernetes pods.

See Jenkins Kubernetes Integration for details.

Persistent Storage

Persistent storage for pods is provided by Longhorn. Longhorn runs within the cluster and provisions storage on worker nodes to make available to pods over iSCSI.

See Persistent Storage Using Longorn for details.