feat: support per-app letsencrypt emails on k3s

The `letsencrypt-email-prod` and `letsencrypt-email-stag` properties can now be set per app in addition to globally, resolving app-level before the global value for the app's selected `letsencrypt-server`. An app that sets its own email renders a namespaced cert-manager `Issuer` using that email, while apps without an override continue to use the shared `ClusterIssuer` with the global email.
This commit is contained in:
Jose Diaz-Gonzalez
2026-07-19 03:31:55 -04:00
parent 05ce8fb68e
commit dc802ddd19
11 changed files with 441 additions and 25 deletions

View File

@@ -46,6 +46,7 @@ type GlobalValues struct {
AppName string `yaml:"app_name"`
DeploymentID string `yaml:"deployment_id"`
Image GlobalImage `yaml:"image"`
Issuer AppIssuer `yaml:"issuer,omitempty"`
Labels ProcessLabels `yaml:"labels,omitempty"`
Keda GlobalKedaValues `yaml:"keda"`
Namespace string `yaml:"namespace"`
@@ -343,10 +344,19 @@ func (a NameSorter) Less(i, j int) bool { return a[i].Name < a[j].Name }
type ProcessTls struct {
Enabled bool `yaml:"enabled"`
IssuerKind string `yaml:"issuer_kind"`
IssuerName string `yaml:"issuer_name"`
UseImportedCert bool `yaml:"use_imported_cert"`
}
type AppIssuer struct {
Email string `yaml:"email"`
Enabled bool `yaml:"enabled"`
IngressClass string `yaml:"ingress_class"`
Name string `yaml:"name"`
Server string `yaml:"server"`
}
type ClusterIssuer struct {
Email string `yaml:"email"`
Enabled bool `yaml:"enabled"`