更新k8s环境支付系统支付证书

目录

一、背景

二、更新支付系统银行证书

三、备份旧的secret信息

四、更新支付应用的证书信息

五、重启支付系统的应用

六、验证应用实例挂载的秘钥已更新


一、背景

支付系统是基于k8s容器化部署的微服务,支付系统使用的支付证书以及和银行有关的证书都是保存在k8s的secret秘钥文件中。

由于测试环境和生产环境的文件名,应用名都是保存一致的,这里仅以测试环境更新支付系统支付证书来演示。测试环境和生产环境不同之处是k8s环境和版本不一致,以及支付应用所在的命名空间不同。

二、更新支付系统银行证书

  • 支付系统银行证书文件是:TrustPay.cer
  • 保存在k8s的secret是: pay-platform-cert

三、备份旧的secret信息

bash 复制代码
# 备份支付系统的secret证书,保存到当前服务器并另命名文件名为: pay-platform-cert.yaml
kubectl  -n test-pay get   secrets  pay-platform-cert -o yaml > pay-platform-cert.yaml

四、更新支付应用的证书信息

由于需要更新的TrustPay.cer证书文件无法直接查看,需要通过特别的工具查看。又因为保存在k8s的secret文件的内容不是明文,都是通过base64加密的,所以就算能直接查看证书信息也不能直接替换到secret对应的key中,需要先将明文通过base64加密后,才能替换到k8s的secret对应的key中。

首先将证书文件TrustPay.cer创建一个名为test的secret,就可以直接复制新建的名为test的secret的key为TrustPay.cer的内容来替换支付系统的secret文件pay-platform-cert中名为TrustPay.cer的key的内容(毕竟都是base64加密的结果)

1、创建名为test的secret临时使用,主要是直接得到证书通过base64加密后的结果

bash 复制代码
# 创建一个名为test的secret文件,TrustPay.cer为银行提供的新的证书文件

kubectl -n test-pay create  secret generic test --from-file=TrustPay.cer


 # 查看新建的名为test的secret
kubectl -n test-pay get secret test

2、替换支付系统的证书文件对应的key为TrustPay.cer的值

bash 复制代码
 # 复制名为test的临时的secret的,并且key为TrustPay.cer的值来替换 名为pay-platform-cert的secret中key为TrustPay.cer的值

kubectl -n test-pay edit secret pay-platform-cert

# 执行命令 kubectl -n test-pay edit secret pay-platform-cert 将可以直接在线修改名为 pay-platform-cert的secret内容

执行命令 kubectl -n test-pay edit secret pay-platform-cert ,将会出现类似下图的内容,表明此刻可以直接修改当前名为pay-platform-cert的secret的内容(修改完成后保存就会生效)

3、将新建名为test的secret的且名为TrustPay.cer的key值复制替换到pay-platform-cert的secret对应的名为TrustPay.cer的key的内容;即将下图圆圈的内容替换到上图圆圈圈住的内容

五、重启支付系统的应用

更新完成支付系统的秘钥信息后,需要重启支付系统的应用来生效,要不然应用不能及时读取到更新后的证书信息;重启支付应用后,可以登录到对应的应用查看应用更新后的证书到期时间更好确认证书已更新(以及进行对应的业务验证测试,保证更新证书后,业务正常可用)

bash 复制代码
# 重启支付应用(无状态负载,且无状态应用名是:pay-platform )的命令是:
kubectl -n test-pay rollout restart  deploy pay-platform

六、验证应用实例挂载的秘钥已更新

查看TrustPay.cer证书文件到期时间的命令是:

bash 复制代码
 # 查看TrustPay.cer证书文件到期时间的命令
openssl x509 -inform der -in TrustPay.cer -text

在我的环境证书文件挂载在容器应用的目录是: /opt/pay_platform_file/abc/cert/

当前挂载证书文件的其中一个实例是: pay-platform-58d7cd5598-9k9nc

bash 复制代码
# 登录支付容器实例验证证书文件到期时间 (需要容器已安装openssl工具)
kubectl -n test-pay  exec -it pay-platform-58d7cd5598-9k9nc -- openssl x509 -inform der -in /opt/pay_platform_file/abc/cert/TrustPay.cer -text

成功更新证书文件后,可以考虑把前面创建的名为test的临时secret 删除。

bash 复制代码
# 删除前面创建临时的名为 test的secret

kubectl -n test-pay delete secret test
相关推荐
Thneonl10 小时前
照着 CKS 教材做实验,把 apiserver 干瘫了 7 分钟
安全·kubernetes
AINative软件工程11 小时前
LLM 应用的 Graceful Shutdown 工程实践:正在进行的 AI 请求如何安全停止
云原生·ai编程
名字还没想好☜12 小时前
Kubernetes 用 kubectl port-forward 和 proxy 调试集群内服务:两者区别、断连自动重连与为什么别用在生产
运维·docker·kubernetes
武汉唯众智创21 小时前
云计算实训室建设指南(2026版):从技能大赛赛项标准反推架构、课程与落地路径
云原生·kubernetes·云计算·云计算实训室·云计算教学平台·职业技能大赛
wdfk_prog1 天前
ROS教程:01 搭建 ROS1 Noetic Docker 开发环境
运维·缓存·docker·容器·ros
szephyr1 天前
Docker + Compose 实战:把本地项目一键搬到云服务器,附完整配置
运维·docker·容器·部署·云服务器
wdfk_prog1 天前
ros教程02:创建 catkin Workspace、Package 与第一个 ROS1 C++ Node
运维·缓存·docker·容器·ros
阿里云云原生1 天前
剧透丨AI 原生研发组织的探索和实践
云原生
名字还没想好☜1 天前
Docker 网络实战:bridge/host/none/自定义网络、容器互通与端口映射踩坑
运维·docker·kubernetes
探索云原生1 天前
KubeClipper 1.7.0 发布:Operation 优化与 Kubernetes 1.37 支持
linux·docker·云原生·kubernetes·go