Initial Phoenix Sankofa Cloud setup

- Complete project structure with Next.js frontend
- GraphQL API backend with Apollo Server
- Portal application with NextAuth
- Crossplane Proxmox provider
- GitOps configurations
- CI/CD pipelines
- Testing infrastructure (Vitest, Jest, Go tests)
- Error handling and monitoring
- Security hardening
- UI component library
- Documentation
This commit is contained in:
defiQUG
2025-11-28 12:54:33 -08:00
commit 6f28146ac3
229 changed files with 43136 additions and 0 deletions

View File

@@ -0,0 +1,40 @@
apiVersion: v1
kind: Namespace
metadata:
name: "{{ .namespace }}"
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: k3s-cluster-sa
namespace: "{{ .namespace }}"
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: k3s-cluster-admin
rules:
- apiGroups: [""]
resources: ["*"]
verbs: ["*"]
- apiGroups: ["apps"]
resources: ["*"]
verbs: ["*"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: k3s-cluster-admin-binding
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: k3s-cluster-admin
subjects:
- kind: ServiceAccount
name: k3s-cluster-sa
namespace: "{{ .namespace }}"
---
# This is a template for creating a k3s cluster via Crossplane
# The actual implementation would use a Crossplane provider
# to provision VMs and install k3s on them

View File

@@ -0,0 +1,19 @@
apiVersion: proxmox.yourorg.io/v1alpha1
kind: VirtualMachineClaim
metadata:
name: "{{ .name }}"
namespace: "{{ .namespace | default "default" }}"
spec:
compositionRef:
name: virtualmachine.ubuntu.proxmox.yourorg.io
parameters:
name: "{{ .name }}"
node: "{{ .node }}"
cpu: {{ .cpu | default 2 }}
memory: "{{ .memory | default "4Gi" }}"
disk: "{{ .disk | default "50Gi" }}"
storage: "{{ .storage | default "local-lvm" }}"
network: "{{ .network | default "vmbr0" }}"
image: "debian-12-cloud"
site: "{{ .site }}"

View File

@@ -0,0 +1,19 @@
apiVersion: proxmox.yourorg.io/v1alpha1
kind: VirtualMachineClaim
metadata:
name: "{{ .name }}"
namespace: "{{ .namespace | default "default" }}"
spec:
compositionRef:
name: virtualmachine.ubuntu.proxmox.yourorg.io
parameters:
name: "{{ .name }}"
node: "{{ .node }}"
cpu: {{ .cpu | default 2 }}
memory: "{{ .memory | default "4Gi" }}"
disk: "{{ .disk | default "50Gi" }}"
storage: "{{ .storage | default "local-lvm" }}"
network: "{{ .network | default "vmbr0" }}"
image: "ubuntu-20.04-cloud"
site: "{{ .site }}"

View File

@@ -0,0 +1,19 @@
apiVersion: proxmox.yourorg.io/v1alpha1
kind: VirtualMachineClaim
metadata:
name: "{{ .name }}"
namespace: "{{ .namespace | default "default" }}"
spec:
compositionRef:
name: virtualmachine.ubuntu.proxmox.yourorg.io
parameters:
name: "{{ .name }}"
node: "{{ .node }}"
cpu: {{ .cpu | default 2 }}
memory: "{{ .memory | default "4Gi" }}"
disk: "{{ .disk | default "50Gi" }}"
storage: "{{ .storage | default "local-lvm" }}"
network: "{{ .network | default "vmbr0" }}"
image: "ubuntu-22.04-cloud"
site: "{{ .site }}"