fix(k8s): remove plaintext backend Secret; wire External Secrets - #624
Open
woahwhattheheck wants to merge 10 commits into
Open
woahwhattheheck wants to merge 10 commits into
woahwhattheheck wants to merge 10 commits into
Conversation
Stop applying CHANGE_ME credentials from git. Base now uses SecretStore + ExternalSecret against AWS Secrets Manager so missing provider config fails closed. Keep an examples/ reference for local kubectl create flows.
GitHub Actions does not accept retention-days as a workflow root key. That made every push parse-fail with zero jobs. Artifact retention stays on upload-artifact steps; repo retention stays in Settings.
GitHub rejects retention-days on the workflow root (Unexpected value), so checks completed with 0 jobs. Keep artifact-level retention only.
GitHub Actions rejects retention-days at the workflow root, so these runs failed before any job started. Artifact retention stays on upload-artifact; repo run retention is a settings toggle.
Map JWT_REFRESH_SECRET from payd-production/jwt-refresh-secret and require that named key in the backend Deployment. An older existing Secret can no longer launch a new container with the development refresh-signing fallback. Update the local example and deployment/provisioning instructions. Kustomize v5.7.1 renders ten resources before and after; only the Deployment and ExternalSecret differ. The unchanged backend refresh-token generator, run locally using generated keys resolved from those rendered manifests, accepts the provider key and rejects the development default after repair. The existing secret-check script and git diff --check pass. No Kubernetes deployment or external authentication request was performed. Operation: PAYD624-REFRESH-SECRET-20261003-4EF9 Attribution: GPT-6 Astra Pro / ASTRA-4EF9 / ChatGPT cloud harness
Add an independent JWT_REFRESH_SECRET value to the existing local Secret command and explain the Deployment's required-key startup boundary. Static validation: all eight ExternalSecret keys are represented; the JWT keys use separate generator expressions; Markdown fences and all unrelated bytes are preserved. No generator, Kubernetes, Docker or deployment run. Continuation of existing PR Protocol-Guild#624 / issue Protocol-Guild#560; preserves prior manifest and runtime work at d91dffd.
Keep commands at the repository root and use the existing backend Docker build context. Replace the absent frontend Dockerfile recipe with the published-image prerequisite required by the current port-80 manifests. Inspect deployed resources explicitly in the payd namespace. Source and provider readback validation only; no Docker, Kubernetes, Helm, formatter or deployment execution for this documentation change. Preserve the prior secret/provisioning/rotation work on existing PR Protocol-Guild#624.
Remove the workflow-root retention-days key that prevents the build workflow from being accepted, along with the comments claiming a retention policy that this YAML cannot configure. Keep all triggers, environment values, the build job and its 17 steps unchanged. Validated YAML structure and exact preservation of every supported workflow value; git diff --check passes. Upstream build execution and maintainer acceptance remain separate.
Select the explicit Bash runner for the existing Scaffold-to-tee step. This enables pipefail so a failed compiler is not hidden by successful log capture. Reuse workflow blob 4ce301d from commit 50c39f7 (PR629). The recipient blob 68212ca differs by exactly the added shell: bash line. All 17 existing steps, commands, triggers, environment and prior workflow-schema repair are retained. Validation: parsed both complete workflows with PyYAML 6.0.3; removing only the added shell field makes their trees identical. Executed the exact existing run string using GitHub's documented shell options on Bash 5.2.21, with a controlled Scaffold function. Compiler failure exit 7: default shell returned 0, explicit Bash returned 7. Successful generation returned 0 in both. Captured stdout/stderr logs were identical in both outcomes. No new test file, dependency install, actual compiler run, hosted job, application build or deployment is asserted. Shell reference: https://docs.github.com/en/actions/reference/workflows-and-actions/workflow-syntax#jobsjob_idstepsshell
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #560
Removes the committed
CHANGE_MEKubernetes Secret fromk8s/base/and applies secrets through External Secrets Operator instead (secret-store.yaml+external-secret.yaml→ AWS Secrets Manager). Missing provider/config leaves the ExternalSecret unready, so workloads that needpayd-backend-secretsfail closed.An examples-only manifest remains under
k8s/examples/for localkubectl create secretflows. Deployment and k8s README updated to match.Verify:
k8s/base/has no Secret with stringData credentials; kustomization lists the ESO resources; docs describe the fail-closed path.