2025-09-18 22:16:45 -05:00
2025-03-25 00:55:59 -05:00
2025-09-16 21:55:49 -05:00
2025-08-14 22:40:25 -05:00
2025-08-19 17:06:29 -05:00
2025-05-17 22:47:40 -05:00
CI
2025-09-18 22:16:45 -05:00
2025-05-19 11:18:25 -05:00
2025-05-16 11:24:47 -05:00
2025-03-16 19:28:01 -05:00
2025-07-06 22:14:11 -05:00

A Homelab based on Red Hat Technologies

A comprehensive homelab for learning advanced concepts primarily based on Red Hat OpenShift. In addition to providing services, it is an area to incorporate container technologies, and enterprise integration scenarios.

This implementation is built on easily accessible consumer based hardware and will focus heavily on GitOps practices and automation will be used wherever possible.

🎯 Project Goals

  • Multi-cluster OpenShift management with ACM
  • Hybrid cloud scenarios (bare metal + virtualized + containerized)
  • Enterprise integration testing (AD, SQL Server, SIEM)
  • GitOps and automation workflows
  • Red Hat certification preparation

📋 Documentation (Priority Order)

Phase 1: Foundation

  1. Overview & Hardware Allocation - Complete architecture overview
  2. Networking Plan - VLAN strategy and network design
  3. Core Services Setup (TBD) - Ansible, DNS, monitoring
  4. Storage Configuration (TBD) - Synology, democratic-csi

Phase 2: Proxmox Platform

  1. Proxmox Installation (TBD) - Dell 7050 virtualization
  2. VM Templates & Automation (TBD) - Template creation

Phase 3: Infrastructure Services

  1. Recursive DNS (TBD) - ACM Hub Cluster
  2. Authoritative DNS (TBD) - 3 Master/3 Worker node (production-like)
  3. Identity Management (TBD) - Multi-cluster management
  4. Matchbox (TBD) - External app cluster

Phase 4: OpenShift Clusters

  1. OpenShift SNO + Worker (TBD) - ACM Hub Cluster
  2. OpenShift Cluster (TBD) - 3 Master/3 Worker node (production-like)
  3. ACM Configuration (TBD) - Multi-cluster management
  4. HCP Cluster (TBD) - External app cluster

Phase 5: Container Platform

  1. Container Registry Setup (TBD) - Harbor deployment
  2. Git Repository Setup (TBD) - Gitea/GitLab on Synology
  3. Artifact Repository (TBD) - Nexus/Artifactory

Phase 6: Advanced Services

  1. Monitoring & Observability (TBD) - Prometheus, Grafana, Splunk
  2. Security & Compliance (TBD) - ACS, certificates, auditing
  3. Backup & DR (TBD) - Backup strategies

🚀 Quick Start Deployment

Prerequisites

  • Ubiquiti UDM Pro configured
  • Hardware powered and networked
  • Initial VLAN setup (see networking plan)

Ansible Collections

  • ansible-galaxy collection install freeipa.ansible_freeipa

Deployment Scripts

source ~/venv-ansible/bin/activate
# Phase 1: Foundation
./scripts/01-network-setup.sh
./scripts/02-core-services-deploy.sh

# Phase 2: Container Platform  
./deployment/synology/docker-compose.yml  # Git repo, Harbor, Nexus
./scripts/03-storage-setup.sh

# Phase 3: OpenShift
./deployment/openshift/compact-cluster/
./deployment/openshift/sno-cluster/

# Phase 4: Proxmox
./deployment/proxmox/

📁 Repository Structure

homelab/
├── README.md                    # This file
├── docs/                        # Documentation (numbered by priority)
│   ├── 01-overview.md
│   ├── 02-networking.md
│   └── ...
├── ansible/                     # Directory structure for Ansible 
├── deployment/                  # Deployment 
configurations
│   ├── synology/                # Docker Compose files for Synology
│   ├── k0s/                     # k0s cluster manifests
│   ├── openshift/               # OpenShift installation configs
│   └── proxmox/                 # Proxmox automation
├── scripts/                     # Automation scripts
└── .gitignore                   # Excludes sensitive data

🔧 Technology Stack

Infrastructure

  • Networking: Ubiquiti UDM SE
  • Storage: Synology DS1621+, Ubiquiti UNAS Pro
  • Compute: 3x Beelink S12 Pro, 5x Lenovo M710q, Dell T640

Container Platforms

  • OpenShift 4.14+: Two clusters (compact + SNO)
  • k0s: Core services cluster
  • vSphere: VM workloads

Core Services

  • Container Registry: Harbor
  • Git Repository: Gitea/GitLab CE
  • Artifact Repository: Nexus/Artifactory
  • Monitoring: Prometheus + Grafana
  • Logging: Splunk Enterprise
  • DNS: CoreDNS
  • Load Balancing: MetalLB + HAProxy

🔐 Security Notes

  • No sensitive data is stored in this repository
  • Secrets management via external-secrets-operator
  • Certificate management via cert-manager
  • Network segmentation via VLANs and firewall rules

🤝 Contributing

This is a personal homelab project, but feel free to:

  • Submit issues for questions or suggestions
  • Fork for your own homelab adaptations
  • Share improvements via pull requests

📞 Next Steps

  1. Create GitHub repository for version control
  2. Start with Phase 1 foundation setup
  3. Build deployment automation as we go
  4. Document lessons learned for future reference

Status: 🚧 Planning & Initial Development

Last Updated: June 2025

This repo is a mono-repo that is broken up into three sections:

  • infra-config
  • apps
  • cluster

Hardware

  • Dell 7050 SFF (7)
  • Minisforum TH60 (3)
  • Minisforum MS01 (2)
  • Synology 1621+

Software

Prerequisites

  • Ansible user created
  • Ansible configured
  • Networking
  • Proxmox (In my homelab, internal DNS, identity manangement, and ipxe are hosted here.)
  • Matchbox
  • DNS
  • Domain Registration

Assumptions

There are a dozen different architectures you could use to deploy OpenShift in every which way. For the sake of this documentation we'll assume the following:

Getting Started

Step-by-Step Walkthrough

Hub Cluster

You'll need an OpenShift "Hub Cluster" with access to persistant storage. A Single Node OpenShift (SNO) instance, installed on bare metal, will act as a Hub cluster and run:

  • Advanced Cluster Management
  • Ansible Automation Platform
  • Vault
  • OpenShift GitOps

Network Prerequisites

The prerequisites for OpenShift in traditional and HCP patterns are largely the same - it just kind of depends on where your DNS records go to.

Cluster Endpoint VIP DNS A Record Notes
Hub Cluster (SNO) App Ingress 192.168.0.10 *.apps.hub-cluster.example.com SNO App VIP goes to IP of node
Hub Cluster (SNO) API 192.168.0.10 api.hub-cluster.example.com SNO API goes to IP of node

These DNS entries should be put in your Authoratitive DNS.

ACM & GitOps Configuration

Before you start creating clusters you may want to create some Policies, integrate ACM and ArgoCD, etc. This step is optional in case you're just interested in trying out Hosted Control Planes or copy/paste around a cluster for testing purposes.

Find additional details in the ./02-rhacm-config folder.

Creating a Cluster

With everything in its right place, you can now start to declaratively create clusters

./05-clusters/hcp-bmh - HCP to Bare Metal Hosts

Internal Cluster

Two additional bare metal nodes, to be added to Advanced Cluster Management (ACM) running on the SNO Hub. These will be used to create another HCP cluster. These servers have a BMC interface with Redfish - if not, then you'll need to manually manage the boot and installation of those servers. This makes it to where you just need 3 bare metal nodes. You could run one HCP Bare Metal cluster with both of the other nodes, but then you have a shared storage requirement that can't be satisfied by ODF since that needs at least 3 nodes.

External Cluster

You'll also either need you just need at least 2 bare metal nodes.


Credits

  • Ken Moini - As I used his repo as the baseline for this project.
  • Ryan Etten
  • Andrew Potozniak
Description
No description provided
Readme MIT 23 MiB
Languages
HCL 48.6%
Jinja 29.6%
Shell 21.6%
Dockerfile 0.2%