mirror of
https://github.com/cozystack/cozystack.git
synced 2026-11-09 14:02:56 +09:00
fix(platform): migrate ACME HTTP-01 to ingressClassName API
ClusterIssuer solver referenced IngressClass "nginx" which does not exist on cozystack clusters — real classes are named after tenant namespaces (e.g. tenant-root). Cert issuance only worked because every requesting Ingress overrode the ClusterIssuer via the legacy acme.cert-manager.io/http01-ingress-class annotation. Switch both sides to the modern cert-manager API (available since cert-manager 1.12; cozystack ships 1.19.3): - ClusterIssuer: http01.ingress.ingressClassName, value parameterized from _cluster.expose-ingress (default "tenant-root") - Ingress annotation: http01-ingress-ingressclassname These must migrate together — mixing ingressClassName (ClusterIssuer) with the old http01-ingress-class annotation triggers cert-manager's "fields ingressClassName and class cannot be set at the same time" validation and breaks issuance. Assisted-By: Claude <noreply@anthropic.com> Signed-off-by: Myasnikov Daniil <myasnikovdaniil2001@gmail.com>
This commit is contained in:
11 files changed
+18
-17
No files matched your search
@@ -15,7 +15,7 @@ metadata:
|
|||||||
nginx.ingress.kubernetes.io/ssl-redirect: "true"
|
nginx.ingress.kubernetes.io/ssl-redirect: "true"
|
||||||
nginx.ingress.kubernetes.io/backend-protocol: "HTTP"
|
nginx.ingress.kubernetes.io/backend-protocol: "HTTP"
|
||||||
{{- if eq $solver "http01" }}
|
{{- if eq $solver "http01" }}
|
||||||
acme.cert-manager.io/http01-ingress-class: {{ $ingress }}
|
acme.cert-manager.io/http01-ingress-ingressclassname: {{ $ingress }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
cert-manager.io/cluster-issuer: {{ $clusterIssuer }}
|
cert-manager.io/cluster-issuer: {{ $clusterIssuer }}
|
||||||
spec:
|
spec:
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ metadata:
|
|||||||
app: bootbox
|
app: bootbox
|
||||||
annotations:
|
annotations:
|
||||||
{{- if eq $solver "http01" }}
|
{{- if eq $solver "http01" }}
|
||||||
acme.cert-manager.io/http01-ingress-class: {{ $ingress }}
|
acme.cert-manager.io/http01-ingress-ingressclassname: {{ $ingress }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
cert-manager.io/cluster-issuer: {{ $clusterIssuer }}
|
cert-manager.io/cluster-issuer: {{ $clusterIssuer }}
|
||||||
{{- if .Values.whitelistHTTP }}
|
{{- if .Values.whitelistHTTP }}
|
||||||
|
|||||||
@@ -243,7 +243,7 @@ spec:
|
|||||||
nginx.ingress.kubernetes.io/proxy-body-size: "0"
|
nginx.ingress.kubernetes.io/proxy-body-size: "0"
|
||||||
nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"
|
nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"
|
||||||
{{- if eq $solver "http01" }}
|
{{- if eq $solver "http01" }}
|
||||||
acme.cert-manager.io/http01-ingress-class: {{ $ingress }}
|
acme.cert-manager.io/http01-ingress-ingressclassname: {{ $ingress }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
cert-manager.io/cluster-issuer: {{ $clusterIssuer }}
|
cert-manager.io/cluster-issuer: {{ $clusterIssuer }}
|
||||||
tls:
|
tls:
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ metadata:
|
|||||||
nginx.ingress.kubernetes.io/proxy-read-timeout: "99999"
|
nginx.ingress.kubernetes.io/proxy-read-timeout: "99999"
|
||||||
nginx.ingress.kubernetes.io/proxy-send-timeout: "99999"
|
nginx.ingress.kubernetes.io/proxy-send-timeout: "99999"
|
||||||
{{- if eq $solver "http01" }}
|
{{- if eq $solver "http01" }}
|
||||||
acme.cert-manager.io/http01-ingress-class: {{ $ingress }}
|
acme.cert-manager.io/http01-ingress-ingressclassname: {{ $ingress }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
cert-manager.io/cluster-issuer: {{ $clusterIssuer }}
|
cert-manager.io/cluster-issuer: {{ $clusterIssuer }}
|
||||||
spec:
|
spec:
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
{{- $solver := (index .Values._cluster "solver") | default "http01" }}
|
{{- $solver := (index .Values._cluster "solver") | default "http01" }}
|
||||||
|
{{- $exposeIngress := (index .Values._cluster "expose-ingress") | default "tenant-root" }}
|
||||||
|
|
||||||
apiVersion: cert-manager.io/v1
|
apiVersion: cert-manager.io/v1
|
||||||
kind: ClusterIssuer
|
kind: ClusterIssuer
|
||||||
metadata:
|
metadata:
|
||||||
name: letsencrypt-prod
|
name: letsencrypt-prod
|
||||||
@@ -17,9 +18,9 @@ spec:
|
|||||||
name: cloudflare-api-token-secret
|
name: cloudflare-api-token-secret
|
||||||
key: api-token
|
key: api-token
|
||||||
{{- else }}
|
{{- else }}
|
||||||
http01:
|
http01:
|
||||||
ingress:
|
ingress:
|
||||||
class: nginx
|
ingressClassName: {{ $exposeIngress }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
|
|
||||||
---
|
---
|
||||||
@@ -41,9 +42,9 @@ spec:
|
|||||||
name: cloudflare-api-token-secret
|
name: cloudflare-api-token-secret
|
||||||
key: api-token
|
key: api-token
|
||||||
{{- else }}
|
{{- else }}
|
||||||
http01:
|
http01:
|
||||||
ingress:
|
ingress:
|
||||||
class: nginx
|
ingressClassName: {{ $exposeIngress }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ metadata:
|
|||||||
annotations:
|
annotations:
|
||||||
cert-manager.io/cluster-issuer: {{ $clusterIssuer }}
|
cert-manager.io/cluster-issuer: {{ $clusterIssuer }}
|
||||||
{{- if eq $solver "http01" }}
|
{{- if eq $solver "http01" }}
|
||||||
acme.cert-manager.io/http01-ingress-class: {{ $exposeIngress }}
|
acme.cert-manager.io/http01-ingress-ingressclassname: {{ $exposeIngress }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
nginx.ingress.kubernetes.io/rewrite-target: /
|
nginx.ingress.kubernetes.io/rewrite-target: /
|
||||||
nginx.ingress.kubernetes.io/client-max-body-size: 100m
|
nginx.ingress.kubernetes.io/client-max-body-size: 100m
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ metadata:
|
|||||||
{{- with .Values.ingress.annotations }}
|
{{- with .Values.ingress.annotations }}
|
||||||
annotations:
|
annotations:
|
||||||
{{- if eq $solver "http01" }}
|
{{- if eq $solver "http01" }}
|
||||||
acme.cert-manager.io/http01-ingress-class: {{ $exposeIngress }}
|
acme.cert-manager.io/http01-ingress-ingressclassname: {{ $exposeIngress }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
cert-manager.io/cluster-issuer: {{ $clusterIssuer }}
|
cert-manager.io/cluster-issuer: {{ $clusterIssuer }}
|
||||||
{{- toYaml . | nindent 4 }}
|
{{- toYaml . | nindent 4 }}
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ metadata:
|
|||||||
annotations:
|
annotations:
|
||||||
cert-manager.io/cluster-issuer: {{ $clusterIssuer }}
|
cert-manager.io/cluster-issuer: {{ $clusterIssuer }}
|
||||||
{{- if eq $solver "http01" }}
|
{{- if eq $solver "http01" }}
|
||||||
acme.cert-manager.io/http01-ingress-class: {{ $exposeIngress }}
|
acme.cert-manager.io/http01-ingress-ingressclassname: {{ $exposeIngress }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
nginx.ingress.kubernetes.io/proxy-body-size: 100m
|
nginx.ingress.kubernetes.io/proxy-body-size: 100m
|
||||||
# Keycloak access+refresh+id tokens make the oauth2-proxy session
|
# Keycloak access+refresh+id tokens make the oauth2-proxy session
|
||||||
|
|||||||
@@ -181,7 +181,7 @@ metadata:
|
|||||||
app: alerta
|
app: alerta
|
||||||
annotations:
|
annotations:
|
||||||
{{- if eq $solver "http01" }}
|
{{- if eq $solver "http01" }}
|
||||||
acme.cert-manager.io/http01-ingress-class: {{ $ingress }}
|
acme.cert-manager.io/http01-ingress-ingressclassname: {{ $ingress }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
cert-manager.io/cluster-issuer: {{ $clusterIssuer }}
|
cert-manager.io/cluster-issuer: {{ $clusterIssuer }}
|
||||||
spec:
|
spec:
|
||||||
|
|||||||
@@ -74,7 +74,7 @@ spec:
|
|||||||
metadata:
|
metadata:
|
||||||
annotations:
|
annotations:
|
||||||
{{- if eq $solver "http01" }}
|
{{- if eq $solver "http01" }}
|
||||||
acme.cert-manager.io/http01-ingress-class: "{{ $ingress }}"
|
acme.cert-manager.io/http01-ingress-ingressclassname: "{{ $ingress }}"
|
||||||
{{- end }}
|
{{- end }}
|
||||||
cert-manager.io/cluster-issuer: {{ $clusterIssuer }}
|
cert-manager.io/cluster-issuer: {{ $clusterIssuer }}
|
||||||
spec:
|
spec:
|
||||||
|
|||||||
@@ -111,7 +111,7 @@ seaweedfs:
|
|||||||
nginx.ingress.kubernetes.io/client-body-timeout: "3600"
|
nginx.ingress.kubernetes.io/client-body-timeout: "3600"
|
||||||
nginx.ingress.kubernetes.io/client-header-timeout: "120"
|
nginx.ingress.kubernetes.io/client-header-timeout: "120"
|
||||||
nginx.ingress.kubernetes.io/service-upstream: "true"
|
nginx.ingress.kubernetes.io/service-upstream: "true"
|
||||||
acme.cert-manager.io/http01-ingress-class: tenant-root
|
acme.cert-manager.io/http01-ingress-ingressclassname: tenant-root
|
||||||
cert-manager.io/cluster-issuer: letsencrypt-prod
|
cert-manager.io/cluster-issuer: letsencrypt-prod
|
||||||
tls:
|
tls:
|
||||||
- hosts:
|
- hosts:
|
||||||
|
|||||||
Reference in new issue
Block a user