创建 K8S Ingress TLS 机密错误:版本“v1”中的机密无法作为机密处理:输入字节 1548 处的非法 base64 数据

问题描述 投票:0回答:1

我尝试在 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

kubernetes ssl kubernetes-ingress
1个回答
0
投票

如果您的密钥和证书文件正确,请使用以下命令:

 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 来实现。

© www.soinside.com 2019 - 2024. All rights reserved.