首先,您需要使用 kubectl
工具从 Kubernetes 导出 Secret 到一个 yaml 文件,这通常使用如下命令:
kubectl get secret my-secret -o yaml > my-secret.yaml
然后我们可以创建一个简单的 bash 脚本来处理 yaml 文件并导出证书:
#!/bin/bash
# 解析 yaml 文件并得到证书内容
certData=$(cat my-secret.yaml | grep tls.crt | awk '{print $2}')
keyData=$(cat my-secret.yaml | grep tls.key | awk '{print $2}')
# 导出证书和密钥
echo $certData | base64 --decode > cert.pem
echo $keyData | base64 --decode > key.pem
这个脚本将从您的 yaml 文件中提取 tls.crt 和 tls.key(这是 Kubernetes 中默认的 SSL Secret 格式)的内容,然后使用 base64 解码并将结果导出到 pem 文件中。
这个脚本假定您的 yaml 文件名称为 my-secret.yaml
,并且您的证书和密钥分别以 base64 编码存储在 tls.crt
和 tls.key
中。根据您的实际情况,您可能需要修改这些参数以适应您的环境。
文心一言
当导出SSL证书和私钥时,需要小心处理敏感数据。以下是一个基于Python的示例脚本,用于将Kubernetes Secrets中的证书和私钥导出为PEM格式的文件。
python
import yaml
import base64
import os
# 读取Kubernetes Secrets的YAML文件
with open('secrets.yaml', 'r') as file:
secrets_yaml = yaml.safe_load(file)
# 从YAML中提取证书和私钥数据
certificate = base64.b64decode(secrets_yaml['data']['tls.crt'].encode('utf-8'))
private_key = base64.b64decode(secrets_yaml['data']['tls.key'].encode('utf-8'))
# 导出证书和私钥到文件
certificate_filename = 'certificate.pem'
private_key_filename = 'private_key.pem'
with open(certificate_filename, 'wb') as certificate_file:
certificate_file.write(certificate)
with open(private_key_filename, 'wb') as private_key_file:
private_key_file.write(private_key)
print(f'Certificate saved to {certificate_filename}')
print(f'Private key saved to {private_key_filename}')
请确保将secrets.yaml文件替换为您实际的Kubernetes Secrets YAML文件的路径。此脚本将证书保存到certificate.pem文件,私钥保存到private_key.pem文件。
标签:tls,certificate,Kubernetes,证书,Secrets,private,yaml,key From: https://www.cnblogs.com/firmament/p/17526172.html