2 min read | by Jordi Prats
After trying to set a custom default certificate for the OpenShift routes we might see how it's Pods starts crashing:
$ kubectl get pods
NAME READY STATUS RESTARTS AGE
router-10-rh8vf 1/1 Running 0 32m
router-10-f2dt2 0/1 CrashLoopBackOff 6 7m
router-10-m45b7 1/1 Running 0 31m
Checking it's logs we'll get a quite misleading message:
$ kubectl logs router-10-f2dt2 -n default
Error from server: Get https://some.openshift.cluster:10250/containerLogs/default/router-10-f2dt2/router: x509: certificate has expired or is not yet valid
To set a custom default certificate for routes (that don't have the certificate explicitly set) we need to update the router-certs
Secret in the default
namespace:
$ kubectl get secret router-certs
NAME TYPE DATA AGE
router-certs kubernetes.io/tls 2 5h
In it we need to update two keys: tls.crt
and tls.key
but if we do so it will start crashing. What we really need to do is append the private key with the certificate into tls.crt
like so:
$ kubectl get secret router-certs -n default -o jsonpath='{.data.tls\.crt}' | base64 -d
-----BEGIN CERTIFICATE-----
(...)
CHAIN CERT
(...)
-----END CERTIFICATE-----
(...)
-----BEGIN CERTIFICATE-----
(...)
CERTIFICATE
(...)
-----END CERTIFICATE-----
-----BEGIN RSA PRIVATE KEY-----
(...)
PRIVATE KEY
(...)
-----END RSA PRIVATE KEY-----
Don't know why you need to do so, but to be honest, I don't want to know because it will not make any sense.
Posted on 04/07/2023