Commit Graph

24 Commits

Author SHA1 Message Date
OdooSky v3
52a157f187 fix(eso): chart 0.6.2 - revert fullnameOverride; use templated SA in ClusterSecretStore
Chart 0.6.1's fullnameOverride attempted to give ESO resources stable
names (just 'external-secrets' instead of '<release>-external-secrets')
but ArgoCD couldn't fully drain the prefixed resources from 0.6.0,
leaving sync stuck. Reverting: keep the subchart's default release-
prefixed naming, template the SA reference in ClusterSecretStore via
{{ .Release.Name }}-external-secrets so it resolves correctly per
cluster.
2026-05-07 21:01:38 +03:00
OdooSky v3
f32ad64c4c fix(eso): chart 0.6.1 - fullnameOverride to keep SA names stable
The ESO subchart was prefixing the ServiceAccount with the parent
release name (qsoft-platform-external-secrets), breaking both
ClusterSecretStore.serviceAccountRef and OpenBao's role binding which
both expect plain 'external-secrets'. Lock the name via
fullnameOverride.
2026-05-07 20:48:44 +03:00
OdooSky v3
536cb72a72 feat(eso): chart 0.6.0 - ESO subchart + ClusterSecretStore + gitea-archive-pull ExternalSecret
Phase 1 of Item #9 (Tower-stamped Secrets → ESO + OpenBao migration).
Replaces Tower's imperative kubectl-stamp of gitea-archive-pull with
a declarative ExternalSecret synced from OpenBao at v3/platform/gitea-
archive-pull. Other 4 Tower-stamped Secrets (cloudflare, s3-backup,
longhorn-s3, docker-mirror-pull) remain on legacy path.

Tower must pass externalSecrets.openbao.mountPath as a per-cluster
helm parameter (kubernetes-<server-name>) for ESO to activate; chart
guards against unset mountPath via {{ if }} in both new templates.
2026-05-07 20:46:22 +03:00
pro-777
7e3280aa26 feat(slice 2B.3): chart Restore half — injectedWildcards conditional (0.5.7)
Add the chart-side machinery that lets Tower bypass the cert-manager
Certificate path on Reconnect by injecting a Vault-stashed wildcard
cert directly as a kubernetes.io/tls Secret.

values.yaml:
  certManager.injectedWildcards: []
    Each entry: { root, primary, crt, key }. Empty list = legacy ACME-only.

templates/tenants-wildcard-cert.yaml:
  Build $injectedRoots index from injectedWildcards[]; per-domain
  Certificate is skipped when its root has an injected entry.

templates/tenants-wildcard-secret.yaml (NEW):
  Per injected entry, render kubernetes.io/tls Secret using the same
  name the cert path would have produced (tenants-wildcard-tls primary,
  tenants-wildcard-<root-as-dashes>-tls non-primary). Sync-wave 2 to
  match the cert path's timing. Label odoosky.io/wildcard-source=
  vault-injected so harvester can skip them.

Verified via helm template + self-signed dummy cert:
  - Pure injection: 0 Certificate, 1 Secret (correct name + base64)
  - Pure ACME: 1 Certificate, 0 Secret (status quo)
  - Mixed (2 domains, 1 injected): 1 Certificate + 1 Secret

Inert without Tower wiring — existing clusters render identically to
0.5.6 because injectedWildcards defaults to []. Pushed first as the
foundation layer for the upcoming Tower restore + harvester slices.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-04 14:27:30 +03:00
OdooSky v3
d52d335853 feat(slice 2B.1.2): disable startupapicheck PostSync hook (chart 0.5.6) 2026-05-04 13:50:37 +03:00
OdooSky v3
252ac78888 feat(slice 2B.1.1): sync waves — kill the cert-manager-webhook race (chart 0.5.5) 2026-05-04 13:09:47 +03:00
OdooSky v3
46e8309153 feat(slice 2B.1): SkipHealthCheck on tenants-wildcard Cert (chart 0.5.4) 2026-05-04 12:38:18 +03:00
OdooSky Bot
0213a0b513 0.5.3: bump to invalidate Argo render cache 2026-05-02 23:28:49 +03:00
OdooSky Bot
e44078f061 0.5.2: api-approved annotation on CSI snapshot CRDs + spec.name on RecurringJobs (validator fixes) 2026-05-02 23:21:08 +03:00
OdooSky Bot
f73bdf6d62 0.5.1: RecurringJob namespace from .Values.namespace (Longhorn was deployed to odoosky-system, not longhorn-system) 2026-05-02 23:15:02 +03:00
OdooSky Bot
3e642dd7a1 0.5.0: Longhorn local snapshots + async S3 backup (#347 phase 5) 2026-05-02 23:14:15 +03:00
OdooSky Bot
8fca9aadfa 0.4.0: csi external-snapshotter v8.1.0 (Phase 3a — VolumeSnapshot CRDs + controller) 2026-05-02 22:01:26 +03:00
OdooSky Bot
cf0fd4c477 0.3.3: longhorn.persistence.defaultClass=false (k3s default-SC stays local-path) 2026-05-02 21:39:00 +03:00
OdooSky Bot
dcf9cf79d8 0.3.2: disable longhorn preUpgradeChecker (Argo+helm-hook ordering bug) 2026-05-02 21:24:49 +03:00
OdooSky Bot
c9aab7117a bump chart 0.3.1 2026-05-02 21:16:44 +03:00
OdooSky Bot
81ec240e03 0.3.0: Longhorn CSI skeleton (#347 phase 1) — additive, default-off 2026-05-02 21:11:41 +03:00
ops
7ee9856e25 per-cluster differentiator SAN on tenants-wildcard cert (avoid LE Duplicate Cert rate limit) 2026-04-29 22:27:02 +02:00
ops
976c67afd1 cloudflare-token Secret lives in odoosky-system (where cert-manager runs) 2026-04-29 22:03:10 +02:00
ops
4b19af28e3 vendor cert-manager v1.16.1 CRDs (resource-policy:keep stripped); subchart crds.enabled=false 2026-04-29 21:55:56 +02:00
ops
04b989facf cert-manager crds.keep=false (drop resource-policy annotation Argo wont apply) 2026-04-29 21:48:21 +02:00
ops
c8946a8965 cert-manager subchart: use dep-name alias + crds.enabled (v1.16 install fix) 2026-04-29 21:41:40 +02:00
ops
1a301cd3db sync-wave 5 on ClusterIssuer + Certificate (CRD ordering) 2026-04-29 21:36:44 +02:00
pro-777
eccb648276 0.2.0 — vendor cert-manager + traefik; parameterized substrate
bootstrap.sh-equivalent K8s manifests now ship as part of this
chart instead of being installed inline by the customer's
`curl … | sudo bash`. Result: customer terminal time drops from
~5 min to ~1 min once Tower's SubmitConnect (B2) creates the
per-cluster Argo Application that points here.

What's vendored:
  - cert-manager v1.16.1 (helm dep, charts/cert-manager-v1.16.1.tgz)
  - traefik 33.2.1       (helm dep, charts/traefik-33.2.1.tgz)

What's parameterized via .Values.tenant.{domain,wildcardHost}:
  - letsencrypt-prod ClusterIssuer (DNS-01 + tenant's Cloudflare zone)
  - tenants Namespace
  - tenants-wildcard Certificate (commonName + dnsNames from helm.values)

What stays out of Git (Tower kubectl-applies via kubeconfig at
Connect time, sourced from the tenant's Vault paths):
  - cloudflare-api-token Secret (cert-manager ns)
  - s3-backup-creds Secret      (tenants ns)

The chart references both Secrets by name only.

Argo health roll-up: a tenant server is "Ready" when this
Application's Health is `Healthy` and the tenants-wildcard
Certificate's Ready condition is True. Tower's Server card UI
will surface this as "Provisioning…" → "Ready" in B4.

Lint + template clean with a real tenant value set; clean with
empty values too (templates skip themselves so a default-rendered
chart doesn't fail without a tenant).
2026-04-29 15:09:33 +03:00
Tower Deploy
a1dbe14c20 Initial chart: odoosky-system namespace + local container registry (Distribution v2) 2026-04-27 00:47:07 +03:00