我尝试在 yaml 文件中创建 Ingress TLS 证书密钥。为了获得正确的 yaml 内容,我决定首先通过命令行创建秘密:
kubectl create secret tls tls-secret --namespace demo --key=cert/private.pem --cert=cert/certificate.crt -o yaml
例如我得到:
apiVersion: v1
tls.crt: CERT_TEXT
tls.key: KEY_TEXT
metadata:
name: tls-secret
resourceVersion: "3802272"
uid: a5d10767-cb8e-41f7-b0f8-68c194ae2584
然后我将
tls.crt
和tls.key
放入yaml文件中:
apiVersion: v1
kind: Secret
metadata:
name: tls-secret
namespace: demo
type: kubernetes.io/tls
data:
tls.crt: CERT_TEXT
tls.key: KEY_TEXT
当我尝试应用 yaml 文件时
kubectl apply -f
,我收到错误:
Error from server (BadRequest): error when creating ".\\tls-secret.yaml": Secret in version "v1" cannot be handled as a Secret: illegal base64 data at input byte 1548
我不知道为什么会出现此错误,证书和密钥内容已提取如终端中所示。
我尝试使用base64编码对证书和密钥内容进行编码,并将原始文本替换为base64编码,但它现在可以工作,出现错误:
Warning: tls: failed to find any PEM data in certificate input
如果您的密钥和证书文件正确,请使用以下命令:
kubectl create secret tls tls-secret --namespace demo --key=cert/private.pem --cert=cert/certificate.crt
或者:
kubectl create secret tls tls-secret --namespace demo --key=cert/private.pem --cert=cert/certificate.crt --dry-run=client -o=yaml > tls.yaml
kubectl apply -f tls.yaml
如果出现任何错误,请检查密钥和证书文件的内容。您可以使用 openssl 来实现。