如何在OpenShift Route YAML配置中正确添加TLS证书
问题根因
- 字段格式不符合要求:OpenShift Route的
tls.destinationCACertificate字段只接受PEM格式的原始证书明文,不接受base64编码字符串,直接传入base64内容会触发API校验失败。 - 变量注入逻辑错误:当前写法直接引用base64变量,既没有做解码处理,也没有处理YAML块要求的多行缩进,就算变量正常展开也会因为格式错误导致证书解析失败。
正确配置方法
如果已经将证书base64编码存入certificateData变量,直接在生成YAML时完成解码和缩进适配即可,执行如下命令创建Route:
cat <<EOF | oc apply -f - apiVersion: route.openshift.io/v1 kind: Route metadata: name: test namespace: default annotations: openshift.io/host.generated: 'true' spec: path: /ts/test to: kind: Service name: test1 weight: 100 port: targetPort: https tls: termination: reencrypt destinationCACertificate: | $(echo "${certificateData}" | base64 -d | sed 's/^/ /') wildcardPolicy: None EOF
命令逻辑说明:
echo "${certificateData}" | base64 -d:将base64编码的证书还原为带-----BEGIN CERTIFICATE-----头尾的原始PEM格式sed 's/^/ /':给解码后每一行证书内容前置6个空格,匹配YAML多行块的缩进要求,避免YAML语法错误
如果不想通过变量注入,也可以直接将原始PEM证书粘贴到对应字段下,保持每一行6个空格的缩进即可,示例片段:
tls: termination: reencrypt destinationCACertificate: | -----BEGIN CERTIFICATE----- MIIC3jCCAcagAwIBAgIRAMVxQYnfOmukOqdI7EkOujMwDQYJKoZIhvcNAQELBQAw ADAeFw0yMjA2MDcwOTQ3MDlaFw0yMjA5MDUwOTQ3MDlaMAAwggEiMA0GCSqGSIb3 DQEBAQUAA4IBDwAwggEKAoIBAQDRrmSirAmqSsM3WtJ0/2wEwMw5aMH0tagfDDEy Fofr64UkxCw/e6gZYhOTY5TPMyK9XZkSf81lsRdYyo/t5WtNhYZgHkAaNTK8WVeJ LCGP1VQSjwZq82+edRfiJ0xIXD1JWlARhh7uXToZxYUXQXhJYtjJg9qCtISOv3/C S6V+rMNaCq8yegLfb3RdXz5KAiHs/+xAAKlOmhn2Ab3XUVFCBPpVIWZpCrcnAag3 ev8dDm28g9oRjJzC0jeOrLz1gbUn6M/B8VsYLTGFSjiopPkYZsmcFY0DHe7FopWe hDQueVkmFtYdrRUZaT/r1R+65dCmS1YtQu83mhCDZQ7oNW+XAgMBAAGjUzBRMB0G A1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAMBgNVHRMBAf8EAjAAMCIGA1Ud EQEB/wQYMBaCFHdvLXNyZS48Y2x1c3RlciBVUkw+MA0GCSqGSIb3DQEBCwUAA4IB AQB86t7SguZySp7C0vjqqAECEHOS34xyhecOYbmxyu+aaQTu2Ryzxh9ymSUlI9oa qUqjMYXSeQY244bt2jgqh9yLWe7VtMu9IMX3DAXlV5Hogmt4BKNtJTRwB8hTBZHl 26e+UiHe72BW28xCL5zYNkLG4fE5r+pMWUrAQzIsVmkfiGSb+OZpwJ7EoOz5wnBm Q/85ehlufxYwpywnZZcM3FKcDwxiDm1VDo+jU70KsZ4f1zxWpXqnUEUBQ0Y8ca+7 oMneoZi4/VeBC82qDmTfvigi0NE+VTCglVeU2jgKFDodChaJbHXIpg8UKVpmvGsO CfUXffVNI/PErCgY3e4vH/65 -----END CERTIFICATE-----
注意事项
- reencrypt模式下
destinationCACertificate需要填写后端服务使用的CA根证书,用于OpenShift路由器校验后端HTTPS服务的证书合法性,不要错填成客户端证书或者服务端公网证书。 - PEM证书不要随意修改换行、添加额外空格,保持原始格式即可,否则会导致证书解析失败。
内容的提问来源于stack exchange,提问作者Manju
相关产品推荐
相关产品推荐

