https://github.com/cguertin14/infra
My homelab infra running on a hybrid arm64/amd64 Kubernetes Cluster.
https://github.com/cguertin14/infra
ansible cloud-native k3s kubernetes terraform
Last synced: 6 months ago
JSON representation
My homelab infra running on a hybrid arm64/amd64 Kubernetes Cluster.
- Host: GitHub
- URL: https://github.com/cguertin14/infra
- Owner: cguertin14
- License: apache-2.0
- Created: 2021-03-24T02:48:36.000Z (over 5 years ago)
- Default Branch: main
- Last Pushed: 2025-12-13T19:52:25.000Z (7 months ago)
- Last Synced: 2025-12-14T17:06:39.162Z (7 months ago)
- Topics: ansible, cloud-native, k3s, kubernetes, terraform
- Language: YAML
- Homepage:
- Size: 2.99 MB
- Stars: 8
- Watchers: 1
- Forks: 1
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# infra
[](https://circleci.com/gh/cguertin14/infra)
My infrastructure running on a hybrid arm64/amd64 Kubernetes Cluster.
## Architecture
Multiple Storage Classes exist:
1. `ceph-block` -> for all the k8s data (RWO);
2. `ceph-bucket` -> for S3-like volumes (RWO);
3. `ceph-filesystem` -> for `RWX` k8s volumes;
4. `nfs-media-client` -> for all the media data.

## Backups
Backups are created on S3 periodically for both etcd (k8s resources) and persistent volumes (PVCs and PVs).
There is a runbook available [here](./services/velero-backups/README.md) for information on how to restore backups.
## Structure of this repository
The [services/](./services) folder contains subfolders which contain different kinds of web/networking/other services.
## Dependencies
* [Docker](https://docker.io)
* [Terraform](https://terraform.io)
* [Ansible](https://www.ansible.com/)
* [Kubectl](https://kubernetes.io)
* [Kustomize](https://kustomize.io)
* [Kind](https://kind.sigs.k8s.io/)
* [SOPS](https://github.com/mozilla/sops)
* [Kustomize-Sops](https://github.com/viaduct-ai/kustomize-sops)
## Kubeconfig Setup
### NGINX Setup
First off, make sure the port `8000` is not used on your local machine, and then run the following command:
```bash
$ make start-lb
...
```
### Kubeconfig Server Modifications
Second, you're going to want to edit your `~/.kube/config` file like this:
```yaml
...
server: https://127.0.0.1:8000
...
```
And that's it! Your local setup is now fully functional.
## Start a local cluster
```bash
$ make local-cluster
...
```