Skip to content

Commit 71e13ad

Browse files
committed
LCORE-2664: extend automation decision S4 with podman-only reference
Per PM review on the spike PR (sbunciak, 2026-07-21): teams with podman-only deployments need a non-Kubernetes automation reference. Spike doc: Decision S4 gains option D (CronJob reference manifest plus a podman Quadlet reference — .container + .timer systemd units driving the same importer container, plain-cron fallback noted) and D becomes the recommendation, PM-confirmed. The scheduled-refresh JIRA stub's scope and acceptance criteria now cover both deployment shapes. Spec doc kept in sync: R9 and its acceptance-test-surface row cover the Quadlet reference, the rollout plan names systemctl restart alongside kubectl rollout restart, the key-files table adds the Quadlet example units, and the changelog records the amendment.
1 parent 3b600ce commit 71e13ad

2 files changed

Lines changed: 38 additions & 18 deletions

File tree

docs/design/byok-confluence-import/byok-confluence-import-spike.md

Lines changed: 24 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -103,13 +103,21 @@ LCORE-788 asks for "an automation Lightspeed admins can deploy".
103103
| A. Documented Kubernetes CronJob reference manifest | Wraps the importer container; portable to any k8s/OpenShift cluster |
104104
| B. Shipwright BuildStrategy | Extends the s2i PoC; OCP-specific, assumes image contract + registry |
105105
| C. Docs only | Ship the importer CLI/container; scheduling left entirely to admins |
106+
| D. A + podman/systemd-timer reference | A, plus a Quadlet (`.container` + `.timer` systemd units) reference for podman-only hosts |
106107

107-
**Recommendation**: A — CronJob reference manifest + admin guide in
108+
**Recommendation**: D — CronJob reference manifest + admin guide in
108109
rag-content, documenting the DB-file flow (shared volume + rollout
109-
trigger). Note B as the natural OLS product-layer variant built on the
110-
same importer container.
110+
trigger), **plus a podman-only reference**: Quadlet systemd units
111+
(`.container` + `.timer`) running the same importer container on a
112+
schedule, with a plain-cron one-liner noted as the minimal fallback.
113+
Both references drive the identical container image and flags — the
114+
automation layer is thin by design. Note B as the natural OLS
115+
product-layer variant built on the same importer container.
111116

112-
**Confidence**: 78%
117+
*2026-07-21: extended from A to D per PM review on the spike PR
118+
(non-Kubernetes deployments must be covered).*
119+
120+
**Confidence**: 88% (PM-confirmed with the podman amendment)
113121

114122
### Decision S5: Lightspeed-stack config surface
115123

@@ -416,20 +424,25 @@ in lightspeed-core/rag-content.
416424

417425
<!-- type: Task -->
418426
<!-- key: LCORE-???? -->
419-
#### LCORE-???? CronJob reference manifest and admin automation guide
427+
#### LCORE-???? Scheduled-refresh references (CronJob, podman/systemd) and admin automation guide
420428

421-
**Description**: Reference Kubernetes CronJob manifest running the importer
422-
container on a schedule (shared volume for the artifact + state; rollout
423-
trigger for lightspeed-stack), plus the admin guide covering credentials
424-
(Secret; service-account recommendation), scheduling, staleness
425-
expectations, and the security warning about permission flattening.
429+
**Description**: Reference automation for scheduled refresh in two
430+
deployment shapes, both driving the same importer container: a Kubernetes
431+
CronJob manifest (shared volume for the artifact + state; rollout trigger
432+
for lightspeed-stack) and a podman-only Quadlet reference (`.container` +
433+
`.timer` systemd units, plain-cron fallback noted). Plus the admin guide
434+
covering credentials (Secret / podman secret; service-account
435+
recommendation), scheduling, staleness expectations, and the security
436+
warning about permission flattening.
426437

427438
**Blocked by**: LCORE-???? (end-to-end importer command)
428439

429440
**Acceptance criteria**:
430441
- Manifest applies cleanly on a stock OpenShift/k8s cluster
442+
- Quadlet units run the same refresh on a podman-only RHEL-family host
443+
(systemd timer fires, artifact refreshed, restart documented)
431444
- Guide walks an admin from zero to scheduled refresh with the DB-file
432-
contract (image variant referenced)
445+
contract in both shapes (image variant referenced)
433446

434447
**Agentic tool instruction**:
435448

docs/design/byok-confluence-import/byok-confluence-import.md

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -56,8 +56,11 @@ unchanged pages).
5656
permission denials, and rate limiting (429 honoring `Retry-After`) are
5757
reported distinctly; a partial crawl never silently produces a truncated
5858
store.
59-
- **R9:** A reference Kubernetes CronJob manifest and admin guide document
60-
the scheduled-refresh deployment (shared volume + rollout trigger).
59+
- **R9:** Reference automation and an admin guide document the
60+
scheduled-refresh deployment in two shapes driving the same importer
61+
container: a Kubernetes CronJob manifest (shared volume + rollout
62+
trigger) and a podman-only Quadlet reference (`.container` + `.timer`
63+
systemd units) for non-Kubernetes hosts.
6164
- **R10:** lightspeed-stack requires no code or config-schema changes; its
6265
BYOK guide documents the Confluence flow (spike Decision S5).
6366

@@ -173,7 +176,7 @@ output:
173176
| R6 | Re-run, no changes: 0 body fetches, 0 re-embeds. Edit: page re-imported. Delete: gone after rebuild | e2e (mock) |
174177
| R7 | Missing/incomplete model fails preflight; artifact loads from a different absolute path | integration |
175178
| R8 | 401/403/429 produce distinct, actionable, non-zero outcomes | unit (fixtures) |
176-
| R9 | Reference CronJob applies cleanly; scheduled run refreshes the artifact | e2e (kind/CRC) or documented manual verification |
179+
| R9 | Reference CronJob applies cleanly; scheduled run refreshes the artifact; Quadlet timer does the same on a podman-only host | e2e (kind/CRC) or documented manual verification |
177180
| R10 | lightspeed-stack serves the artifact with existing `byok_rag` config | e2e |
178181

179182
## Aspect-specific concerns
@@ -201,10 +204,12 @@ multi-hour, operation at default limits.
201204

202205
### Rollout / deployment plan
203206

204-
Admin-driven: deploy CronJob → first full crawl → point `byok_rag` at the
205-
artifact → restart. Refresh = CronJob rebuild + rollout trigger
206-
(documented `kubectl rollout restart` or operator-specific equivalent).
207-
Rollback = repoint to the previous versioned artifact and restart.
207+
Admin-driven: deploy the scheduler (k8s CronJob, or Quadlet systemd timer
208+
on podman-only hosts) → first full crawl → point `byok_rag` at the
209+
artifact → restart. Refresh = scheduled rebuild + restart trigger
210+
(documented `kubectl rollout restart`, `systemctl restart`, or
211+
operator-specific equivalent). Rollback = repoint to the previous
212+
versioned artifact and restart.
208213

209214
## Implementation Suggestions
210215

@@ -219,6 +224,7 @@ Rollback = repoint to the previous versioned artifact and restart.
219224
| `scripts/import_confluence.py` (new) | One-shot orchestration: fetch → `DocumentProcessor` → optional `--output-image` |
220225
| `Containerfile` (modify) | Include the importer entrypoint in the tool image |
221226
| `examples/confluence-cronjob.yaml` (new) | Reference CronJob manifest |
227+
| `examples/confluence-import.container` + `.timer` (new) | Quadlet reference for podman-only hosts |
222228
| `docs/` (rag-content, new page) | Admin automation guide |
223229
| `docs/byok_guide.md` (lightspeed-stack, modify) | Confluence walkthrough, model-match + restart + permission warnings |
224230
| `tests/confluence/` (rag-content, new) | Unit tests on recorded Cloud/DC fixtures; integration test fixture-HTML → artifact |
@@ -267,6 +273,7 @@ env vars. No lightspeed-stack Pydantic changes (R10).
267273
| Date | Change | Reason |
268274
|------|--------|--------|
269275
| 2026-07-09 | Initial version | LCORE-2664 spike |
276+
| 2026-07-21 | R9 + rollout + key files: added podman/Quadlet reference alongside the k8s CronJob | PM review on spike PR (spike Decision S4 amended A→D) |
270277

271278
## Appendix A: PoC evidence summary
272279

0 commit comments

Comments
 (0)