1
0
Fork 0
Resources for deploying and managing my personal Kubernetes cluster
 
 
 
Go to file
Dustin 0592f450c4 sealed-secrets: Deploy Bitnami Sealed Secrets
[Sealed Secrets] will allow us to store secret values in the Git
repository, since the actual secrets are encrypted and can only be
decrypted using the private key stored in the Kubernetes cluster.

I have been looking for a better way to deal with secrets for some time
now.  For one thing, having the secret files ignored by Git means they
only exist on my main desktop.  If I need to make changes to an
application from another machine, I have to not only clone the
repository, but also manually copy the secret files.  That sort of
makes my desktop a single point-of-failure.  I tried moving all the
secret files to another (private) repository and adding it as a
submodule, but Kustomize did not like that; it will only load files from
the current working directory, or another Kustomize project.  Having to
create two projects for each application, one for the secrets and one
for everything else, would be tedious and annoying.  I also considered
encrypting all the secret files with e.g. GnuPG and creating Make
recipies for each project to decrypt them before running `kubectl
apply`.  I eventually want to use Argo CD, though, so that prerequisite
step would make that a lot more complex.  Eventually, I discovered
[KSOPS] and *Sealed Secrets*.  KSOPS operates entirely on the client
side, and thus requires a plugin for Kustomize and/or Argo CD in order
to work, so it's not significantly different than the GnuPG/Make idea.
I like that Sealed Secrets does not require anything on the client side,
except when initially creating the manifests for the SealedSecret
objects, so Argo CD will "just work" without any extra tools or
configuration.

[Sealed Secrets]: https://github.com/bitnami-labs/sealed-secrets
[KSOPS]: https://github.com/viaduct-ai/kustomize-sops
2023-10-13 18:34:01 -05:00
authelia authelia: Add OIDC client for step-ca 2023-10-10 22:31:44 -05:00
autoscaler autoscaler: Tolerate control-plane taint 2022-12-16 17:20:22 -06:00
cert-manager cert-manager: Drop acmeDNS solver 2023-08-28 12:00:23 -05:00
dch-root-ca dch-webhooks: Configure SSH cert signer 2023-10-10 22:31:44 -05:00
dch-webhooks dch-webhooks: Configure SSH cert signer 2023-10-10 22:31:44 -05:00
device-plugins device-plugins: Add fuse-device-plugin DaemonSet 2023-10-10 22:31:44 -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
firefly-iii firefly-iii: Update to v6.0.19 2023-08-09 14:04:52 -05:00
home-assistant home-assistant: Update to 2023.8.4 2023-08-29 09:13:15 -05:00
hudctrl hudctrl: Update for v0.2.0 2022-12-18 16:26:07 -06:00
ingress home-assistant: Deploy Home Assistant 2023-07-24 17:53:58 -05:00
jenkins jenkins: Update to v2.401.3 2023-08-09 14:04:23 -05: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: Update to v2.5.0 2023-06-20 14:44:52 -05:00
paperless-ngx paperless-ngx: Downgrade gotenberg to 7.5.4 2023-05-18 15:20:46 -05:00
phpipam phpipam: Update PVC storage class name 2023-10-10 22:42:14 -05:00
postgresql firefly-iii: Deploy Firefly III 2023-05-14 11:15:15 -05:00
prometheus_speedtest prom_speedtest: Add application manifest 2022-08-06 22:21:06 -05:00
scanservjs scanservjs: Update to v2.27.0 2023-07-08 07:06:10 -05:00
sealed-secrets sealed-secrets: Deploy Bitnami Sealed Secrets 2023-10-13 18:34:01 -05:00
setup setup: ks: Generate iSCSI initiator name 2022-08-23 21:22:01 -05:00
step-ca step-ca: Deploy Step CA service 2023-10-10 22:31:44 -05:00
storage home-assistant: Deploy Home Assistant 2023-07-24 17:53:58 -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.