Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
073eeb3
chore: Talos upgrade to v1.13.7 (k8s v1.36.2)
github-actions[bot] Jul 26, 2026
69dc88d
docs: csi-driver-nfs design spec for unraid-lab storage
syscod3 Jul 25, 2026
9b6df9a
chore: add read-only Argo CD app health gate check script
syscod3 Jul 25, 2026
c5bacc7
feat: add Radar Kubernetes dashboard
syscod3 Jul 27, 2026
dfe6805
fix: correct CSI design table formatting
syscod3 Jul 27, 2026
3e4ec08
fix: exclude Cilium identities from Argo CD
syscod3 Jul 27, 2026
06df362
fix: preserve Argo CD config labels
syscod3 Jul 27, 2026
8d13a3a
fix: configure Harbor MagicDNS endpoint
syscod3 Jul 27, 2026
d4bb78c
fix: stabilize Harbor Helm rendering
syscod3 Jul 27, 2026
3d9877c
fix: preserve Harbor runtime credentials
syscod3 Jul 27, 2026
3ee25d3
fix: use client-side apply for chart apps
syscod3 Jul 27, 2026
6632fdf
fix: use authorized Tailscale proxy tag
syscod3 Jul 27, 2026
1e00647
feat: expose radar through Tailscale
syscod3 Jul 28, 2026
744a1a3
fix: use full Radar Tailscale hostnames
syscod3 Jul 28, 2026
5601ec0
fix: align Cilium with bootstrap release
syscod3 Jul 28, 2026
48bd445
fix: set Cilium VXLAN MTU
syscod3 Jul 29, 2026
1c103d4
chore: pin kubeconform validation
syscod3 Jul 29, 2026
009421b
fix: ignore Harbor API-normalized drift
syscod3 Jul 30, 2026
af01c13
feat: add Grafana Cloud Kubernetes monitoring
syscod3 Jul 30, 2026
2532ada
fix: allow monitoring collectors on Talos
syscod3 Jul 30, 2026
6a37143
feat: collect Cilium Hubble metrics
syscod3 Jul 30, 2026
bfa5c73
chore: reduce Grafana Cloud ingestion
syscod3 Jul 31, 2026
337cdf6
chore: bound Cilium monitoring ingestion
syscod3 Jul 31, 2026
1a35434
feat: bootstrap Harbor runtime secrets through Omni
syscod3 Jul 31, 2026
b919863
feat: expose Hubble UI via Tailscale ingress
syscod3 Jul 31, 2026
e90e17c
feat: add Unraid control-plane machine class
syscod3 Jul 31, 2026
2be4cfa
docs: update GitOps layering state and TODOs
syscod3 Jul 31, 2026
e086831
refactor: rename oci-talos to oci-lab throughout repo
syscod3 Jul 31, 2026
1eee76d
fix: make validate_cluster.py compatible with Python 3.7
syscod3 Jul 31, 2026
802af13
feat: manage postgres radar with argocd
syscod3 Aug 1, 2026
df7a11a
fix: use deploy key for postgres radar source
syscod3 Aug 1, 2026
5efa39f
chore: Talos upgrade to v1.13.7 (k8s v1.36.2)
github-actions[bot] Aug 2, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 8 additions & 2 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -47,8 +47,14 @@ jobs:

- name: Install kubeconform
run: |
curl -sL https://github.com/yannh/kubeconform/releases/latest/download/kubeconform-linux-amd64.tar.gz \
| tar -xz -C /usr/local/bin kubeconform
version="0.8.0"
checksum="9bc2bffbf71f261128533edaf912153948b7ff238f9a531ae6d34466ec287883"
archive="$(mktemp)"
trap 'rm -f "$archive"' EXIT
curl -fsSL "https://github.com/yannh/kubeconform/releases/download/v${version}/kubeconform-linux-amd64.tar.gz" \
-o "$archive"
printf '%s %s\n' "$checksum" "$archive" | sha256sum --check --status
tar -xzf "$archive" -C /usr/local/bin kubeconform

- name: Render and schema-check manifests
run: |
Expand Down
12 changes: 12 additions & 0 deletions .gitleaks.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
# Extend the default gitleaks rules and ignore generated inline manifests.
# These files contain Argo CD chart-generated TLS material (server certs,
# repo-server certs, etc.) and are not human-managed secrets.
[extend]
useDefault = true

[[allowlists]]
description = "generated Talos inline manifests"
paths = [
'''omni\/patches\/.*-inline-manifests\.yaml''',
'''clusters\/.*\/omni\/inline-manifests\.yaml''',
]
7 changes: 4 additions & 3 deletions .mise.toml
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,11 @@
helm = "3.17.0"
yq = "4"
kubectl = "1.34"
kubeconform = "0.8.0"

[tasks."oci:generate-manifests"]
description = "Regenerate OCI (oci-talos) Talos inline-manifests: argocd + cilium + appset"
run = "omni/scripts/generate-manifests.sh oci-talos"
[tasks."oci-lab:generate-manifests"]
description = "Regenerate OCI (oci-lab) Talos inline-manifests: argocd + cilium + appset"
run = "omni/scripts/generate-manifests.sh oci-lab"

[tasks."unraid:generate-manifests"]
description = "Regenerate unraid-lab Talos inline-manifests: argocd + appset"
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ The `omni/` directory is consumed by Omni tooling, not Argo CD.
```text
bootstrap/ Root-synced Argo CD apps, including App-of-Apps and Tailscale operator
infrastructure/ Helm charts + values, one directory per app
clusters/oci/ Cluster-specific kustomize patches
clusters/oci-lab/ Cluster-specific kustomize patches
omni/ Omni machine classes, patches, and cluster templates
```

Expand Down
2 changes: 1 addition & 1 deletion apps/cilium/app.yaml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
chart: cilium
repoURL: https://helm.cilium.io
version: "1.17.18"
version: "1.19.6"
namespace: kube-system
5 changes: 5 additions & 0 deletions apps/radar/app.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
# App coordinates consumed by the layering ApplicationSet.
chart: radar
repoURL: https://skyhook-io.github.io/helm-charts
version: "1.8.6"
namespace: radar
17 changes: 16 additions & 1 deletion appset.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -76,10 +76,25 @@ spec:
destination:
server: https://kubernetes.default.svc
namespace: "{{.namespace}}"
# Harbor chart 1.15.1 renders empty subPath and annotations keys for its
# internal StatefulSets; Kubernetes omits both fields when persisting them.
ignoreDifferences:
- group: apps
kind: StatefulSet
name: harbor-database
jqPathExpressions:
- .spec.template.spec.containers[]?.volumeMounts[]?.subPath
- .spec.template.spec.initContainers[]?.volumeMounts[]?.subPath
- .spec.volumeClaimTemplates[]?.metadata.annotations
- group: apps
kind: StatefulSet
name: harbor-redis
jqPathExpressions:
- .spec.template.spec.containers[]?.volumeMounts[]?.subPath
- .spec.volumeClaimTemplates[]?.metadata.annotations
syncPolicy:
automated:
prune: true
selfHeal: true
syncOptions:
- CreateNamespace=true
- ServerSideApply=true
19 changes: 19 additions & 0 deletions bootstrap/argocd-cm.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# Cilium creates CiliumIdentity resources at runtime from workload labels.
# Exclude them globally so Argo CD never mistakes a generated identity for an
# application resource and attempts to prune it.
apiVersion: v1
kind: ConfigMap
metadata:
name: argocd-cm
namespace: argocd
labels:
app.kubernetes.io/name: argocd-cm
app.kubernetes.io/part-of: argocd
data:
resource.exclusions: |
- apiGroups:
- cilium.io
kinds:
- CiliumIdentity
clusters:
- "*"
4 changes: 4 additions & 0 deletions bootstrap/tailscale-operator.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,10 @@ spec:
oauth:
clientId: "" # set via Argo CD ApplicationSet or cluster secret
clientSecret: "" # set via Argo CD ApplicationSet or cluster secret
proxyConfig:
# Reuse the tag authorized for the operator; tag:k8s is not allowed
# by this tailnet and prevents Ingress proxy provisioning.
defaultTags: "tag:k8s-operator"
destination:
server: https://kubernetes.default.svc
namespace: tailscale
Expand Down
File renamed without changes.
4 changes: 2 additions & 2 deletions clusters/unraid-lab/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,8 +30,8 @@ cluster template — see `omni-on-unraid` / the Omni machine config) must sync
TLS.
- [ ] Point the inline root Application at `clusters/unraid-lab/app-of-apps.yaml`
(plus `bootstrap/`).
- [ ] Set the real MagicDNS name in `apps/harbor/values.yaml`
(`externalURL` + `expose.ingress.hosts.core` → `harbor.<tailnet>.ts.net`).
- [x] Set `values/base/harbor.yaml` to the real MagicDNS name
(`externalURL` + `expose.ingress.hosts.core` → `harbor.wind-bearded.ts.net`).
- [ ] Create the `harbor-admin-password` Secret (`HARBOR_ADMIN_PASSWORD`) in the
`harbor` namespace before first sync.
- [ ] Create the `arc-gha-secret` GitHub App Secret in the `arc-runners`
Expand Down
2 changes: 1 addition & 1 deletion clusters/unraid-lab/apps/arc-runners/application.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ spec:
# server: https://kubernetes.default.svc
# namespace: arc-runners
# scaleSetName: arc-runners-oci
# valuesPath: clusters/oci/apps/arc-runners/values.yaml
# valuesPath: clusters/oci-lab/apps/arc-runners/values.yaml
template:
metadata:
name: "{{ .cluster }}-{{ .scaleSetName }}"
Expand Down
30 changes: 30 additions & 0 deletions clusters/unraid-lab/apps/radar-pg/application.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: radar-pg
namespace: argocd
annotations:
argocd.argoproj.io/sync-wave: "2"
spec:
project: default
sources:
- repoURL: git@github.com:syscode-labs/radar-postgre.git
targetRevision: 9f22278a615c5c2863fa6059c4ab7192c3e57cb6
path: deploy/helm/radar
helm:
releaseName: radar-pg
valueFiles:
- $values/values/clusters/unraid-lab/radar-pg.yaml
- repoURL: https://github.com/syscode-labs/syscode-homelab-gitops-apps.git
targetRevision: main
ref: values
destination:
server: https://kubernetes.default.svc
namespace: radar-pg
syncPolicy:
automated:
prune: true
selfHeal: true
syncOptions:
- CreateNamespace=true
- ServerSideApply=true
Loading
Loading