Conversation
clusterissuer.yaml has been gitignored since 2024-04-14, so the root of every TLS certificate on this cluster had no history, no review and no drift detection. If it were edited or deleted, nothing would notice or restore it. The gitignore was not protecting anything. Git history shows the file was committed for a week first -- ea73fb3 added it on 2024-04-07, and 6d575ac "Prod clusterissuer" deleted it on 2024-04-14 in the same commit that turned it into a template. The deleted version contained the same subscription ID, client ID and email address the ignore now appears to guard, in plaintext. None of those values are sensitive by this repo's own convention: subscription ID 86f3145a-... already in applications/external-dns/values.yaml resource group equalvote 9 tracked files prod.equal.vote 9 tracked files gmail@evanstucker.com 3 tracked files client ID ebafbf2e-... the only one absent -- but external-dns's 747dcea4-... and loki's 098d7377-... are both committed in plaintext A managed-identity client ID is an identifier, not a credential. Rendering the template with the live values reproduces the running ClusterIssuer exactly, so there is no hidden per-environment variance to preserve. The tracked manifest is byte-identical to what is deployed. It lives in secrets/ because that is the only directory an auto-syncing app applies raw manifests from -- secrets/kustomization.yaml already carries namespaces.yaml the same way. The name is a poor fit for a ClusterIssuer; moving it later would mean changing bootstrap-secrets' path in application.yaml, which needs a manual kubectl apply. The .gitignore entry is now anchored to /clusterissuer.yaml. Unanchored it matched at any depth, which would have silently ignored secrets/clusterissuer.yaml too. utils/clusterissuer.template.txt is kept as the record of where the five values come from, with a note that rendering it no longer deploys anything. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01XTsEHfxxGsxGkKWfyQCYmr
|
Important
This repository does not receive automatic reviews because it has fewer than 10 stars. ⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Advanced Run ID: Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Collaborator
|
Along the same lines as #73, I vaguely think we want here so it would survive an application delete. |
ArendPeter
reviewed
Sep 12, 2026
| spec: | ||
| acme: | ||
| server: "https://acme-v02.api.letsencrypt.org/directory" | ||
| email: "gmail@evanstucker.com" |
Member
There was a problem hiding this comment.
Can we change this to elections@equal.vote ?
I'd like to add you add the other dev leads to that email group anyway, so that way the work any certificate issues can be shared
ArendPeter
requested changes
Sep 12, 2026
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.
clusterissuer.yamlhas been gitignored since 2024-04-14, which left the root of every TLS certificate on this cluster with no history, no review and no drift detection. If it were edited or deleted, nothing would notice or restore it.The gitignore wasn't protecting anything
Git history tells the story plainly — it was tracked for a week first:
The version deleted in
6d575accontained the same subscription ID, client ID and email address the ignore now appears to guard, in plaintext. This reads as an ordinary "don't commit generated output" instinct, applied in the commit that turned the file into a template — not a security decision.None of the values are sensitive by this repo's own convention
86f3145a-…applications/external-dns/values.yamlequalvoteprod.equal.votegmail@evanstucker.comebafbf2e-…But external-dns's identity (
747dcea4-…) and loki's (098d7377-…) are both committed in plaintext. A managed-identity client ID is an identifier, not a credential — the repo already treats them that way.No hidden variance
I rendered the template with the live values and diffed against the cluster: identical apart from the comment header. The manifest added here is byte-identical to what's deployed, so this changes nothing at sync time.
Why
secrets/It's the only directory an auto-syncing app applies raw manifests from —
secrets/kustomization.yamlalready carriesnamespaces.yamlexactly this way, andbootstrap-secretsruns withselfHeal: trueandprune: true.The directory name is a poor fit for a ClusterIssuer, and I'd rather say so than pretend otherwise. Moving it later means changing
bootstrap-secrets' path inapplication.yaml, which needs a manualkubectl apply— the thing #57 moved away from. Happy to do that separately if you'd prefer acluster-resources/directory.It can't live with cert-manager: that app is a Helm chart from the ApplicationSet and can't carry extra manifests.
One subtle fix
The
.gitignoreentry is now anchored to/clusterissuer.yaml. Unanchored, the pattern matches at any depth — it was already silently ignoringsecrets/clusterissuer.yamlbefore I anchored it, which would have made this PR quietly do nothing.The root-level render stays ignored, so the
envsubstworkflow still works locally.Template kept
utils/clusterissuer.template.txtremains as the record of where the five values come from, with a note that rendering it no longer deploys anything — copy the result intosecrets/clusterissuer.yamland push instead.After merge
The manifest matches live, so ArgoCD should adopt it with an empty diff.
🤖 Generated with Claude Code
https://claude.ai/code/session_01XTsEHfxxGsxGkKWfyQCYmr