move to project lifecycle structure

This commit is contained in:
2024-07-21 02:20:48 -04:00
parent fd1fde499d
commit e6aff894e8
121 changed files with 6234 additions and 196 deletions

View File

@@ -6,7 +6,11 @@ A project to store homelab stuff.
- [Homelab](#homelab)
- [Table of Contents](#table-of-contents)
- [Apps](#apps)
- [Project Lifecycle](#project-lifecycle)
- [Supported Projects](#supported-projects)
- [Graduation Requirements](#graduation-requirements)
- [Retirement Requirements](#retirement-requirements)
- [Apps (TODO: Move these into their respective folders)](#apps-todo-move-these-into-their-respective-folders)
- [Gitea](#gitea)
- [Staging](#staging)
- [Install](#install)
@@ -20,7 +24,71 @@ A project to store homelab stuff.
- [Wordpress](#wordpress)
- [Grafana](#grafana)
## Apps
## Project Lifecycle
Projects will fall into one of the three following categories:
1. Incubating
2. Graduated
3. Retired
Incubating projects are experimental or prototypal. They're being actively developed and aren't
ready for production deployment. These projects may appear and disappear without warning and are not
stable. There is no minimum requirement for a project to be in incubation.
Graduated projects are in-use, stable, and production ready. They met the [graduation
requirements](#graduation-requirements) and are actively maintained.
Retired projects are no longer in use or recommended. They are kept for reference. Retired projects
must meet the [retirement requirements](#retirement-requirements)
## Supported Projects
All projects will fall into one of the following categories:
- hardware
- infrastructure
- cloud
- systemd
- podman
- docker
- kubernetes
Hardware will contain projects that relate to specific machines or equipment. 3D printers, Raspberry
Pis, and other IOT devices qualify as specialized hardware that needs documentation and configuration.
Infrastructure will contain projects that set up the environments for the remaining listed project
types. For example, infrastructure will contain "how to set up a linux box with docker" or "how to
set up a k3s cluster for kubernetes".
Cloud projects are for specific cloud providers.
Systemd projects are designed to be installed with ansible and run via systemd on a linux VM or
other linux hardware.
Podman projects are either designed to be run as quadlets or as podman containers outright.
Docker projects are either docker-compose or some form of docker run command.
Kubernetes projects are helm, kustomize, kubectl, or some other kubernetes compliant deployment.
## Graduation Requirements
- [ ] Installation is documented
- [ ] Installation configuration examples are provided
- [ ] Hardening guidelines are documented
- [ ] Upgrade procedures are documented
- [ ] Maintenance procedures are documented
- [ ] Uninstall procedures are documented
- [ ] Backup and restore procedures are documented and tested
## Retirement Requirements
- [ ] A reason for retirement is documented
- [ ] If applicable, a replacement has been identified and documented
- [ ] If applicable, backup data locations are documented
## Apps (TODO: Move these into their respective folders)
### Gitea

View File

@@ -1,114 +0,0 @@
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: grafana-pvc
namespace: grafana
spec:
storageClassName: zfs-iscsi-enc1
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi
---
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: grafana
name: grafana
namespace: grafana
spec:
selector:
matchLabels:
app: grafana
template:
metadata:
labels:
app: grafana
spec:
securityContext:
fsGroup: 472
supplementalGroups:
- 0
containers:
- name: grafana
image: grafana/grafana:latest
imagePullPolicy: IfNotPresent
ports:
- containerPort: 3000
name: http-grafana
protocol: TCP
readinessProbe:
failureThreshold: 3
httpGet:
path: /robots.txt
port: 3000
scheme: HTTP
initialDelaySeconds: 10
periodSeconds: 30
successThreshold: 1
timeoutSeconds: 2
livenessProbe:
failureThreshold: 3
initialDelaySeconds: 30
periodSeconds: 10
successThreshold: 1
tcpSocket:
port: 3000
timeoutSeconds: 1
resources:
requests:
cpu: 250m
memory: 750Mi
volumeMounts:
- mountPath: /var/lib/grafana
name: grafana-pv
volumes:
- name: grafana-pv
persistentVolumeClaim:
claimName: grafana-pvc
---
apiVersion: v1
kind: Service
metadata:
name: grafana
namespace: grafana
spec:
ports:
- port: 3000
protocol: TCP
targetPort: http-grafana
name: http
selector:
app: grafana
sessionAffinity: None
type: ClusterIP
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: grafana
namespace: grafana
annotations:
cert-manager.io/cluster-issuer: letsencrypt
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/proxy-body-size: "0"
nginx.org/client-max-body-size: "0"
spec:
rules:
- host: grafana.reeseapps.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: grafana
port:
name: http
tls:
- hosts:
- grafana.reeseapps.com
secretName: grafana-tls-cert

View File

@@ -1,4 +1,4 @@
# 3D Printing Notes
# Bambu P1S Notes
## Bambu P1S

View File

@@ -0,0 +1,29 @@
# Grafana
## Helm
```bash
helm repo add grafana https://grafana.github.io/helm-charts
helm repo update
helm upgrade --install my-grafana grafana/grafana \
--namespace monitoring \
--create-namespace \
--values grafana/values.yaml
kubectl get secret --namespace monitoring my-grafana -o jsonpath="{.data.admin-password}" | base64 --decode ; echo
```
metrics-server.kube-system.svc.cluster.local:9090
## Kube Prometheus Stack
```bash
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
helm repo update
helm upgrade --install \
kube-prometheus-stack \
prometheus-community/kube-prometheus-stack \
--namespace kube-system \
--values grafana/helm-prom-stack-values.yaml
```

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,6 @@
# Democratic CSI
## Retirement
This project has been deprecated in favor of local storage provided by rancher. Local storage is
much better for single node clusters (which is all I run right now) since it's far more performant.

Some files were not shown because too many files have changed in this diff Show More