The symptom is the console is presenting the wrong certificate, correct?
Is zitictrl3.stratscient.com
the domain name you wish to use for the console?
Is zitictrl3.stratscient.com
also configured for any other ziti-controller web binding? It must be unique.
The Ingress YAML you shared has contradicting properties. It asks the Cert Manager to issue and bind a certificate to terminate TLS with NGINX and has the mutually exclusive passthrough annotation. As you correctly mentioned, an Ingress must pass through TLS to the ziti-controller pod, not terminate at the cluster edge, e.g., with an Ingress Controller.
metadata:
annotations:
cert-manager.io/cluster-issuer: letsencrypt-prod
# ...
nginx.ingress.kubernetes.io/ssl-passthrough: "true"
# ...
tls:
- hosts:
- zitictrl3.stratscient.com
secretName: tls-cert1
Since you have a Cert Manager issuer configured, you can change your ziti-controller release's input values to request a trusted certificate from that issuer for a unique domain name. You must not use the same domain name for the console's trusted certificate and the controller's client API or management API (i.e., the other web bindings).
The following example from the ziti-controller chart's README demonstrates the input values that automatically create the alternative Ingress resource, which you may use to access the console, and also to request a certificate for that Ingress from your Issuer. This example uses console.ziti.example.com
as the alternative domain name for the console, and edge.ziti.example.com
for the ziti-controller's primary web bindings, i.e., the client and mgmt APIs, which are combined on a single binding in this example.
clientApi:
advertisedHost: edge.ziti.example.com
ingress:
enabled: true
ingressClassName: nginx
annotations:
kubernetes.io/ingress.allow-http: "false"
nginx.ingress.kubernetes.io/ssl-passthrough: "true"
service:
enabled: true
type: ClusterIP
altIngress:
enabled: true
ingressClassName: nginx
advertisedHost: console.ziti.example.com
annotations:
kubernetes.io/ingress.allow-http: "false"
nginx.ingress.kubernetes.io/ssl-passthrough: "true"
webBindingPki:
enabled: true
altServerCerts:
- mode: certManager
secretName: my-alt-server-cert
dnsNames:
- console.ziti.example.com
issuerRef:
group: cert-manager.io
kind: ClusterIssuer
name: cloudflare-dns01-issuer
mountPath: /etc/ziti/alt-server-cert
This is the most automatic way to create both an Ingress and alt server cert, but you could craft your own Ingress or LoadBalancer Service resource instead, as long as the ziti-controller's web PKI has an alternative server cert with a unique DNS SAN.