更新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
相关推荐
张忠琳6 小时前
【containerd 2.1.8】(Part 1)containerd 2.1.8 超深度源码分析 — 总体架构与模块全景
云原生·kubernetes·containerd
真实的菜8 小时前
微服务注册配置中心终极选型:2026指南
微服务·云原生·架构
正经教主9 小时前
【docker基础】第五课:Docker网络详解
运维·docker·容器
Waay11 小时前
K8s ETCD 详解|备份恢复+静态Pod原理+kubectl查询底层流程(面试必考)
面试·kubernetes·etcd
松岩11 小时前
dcgm-exporter部分指标
kubernetes
我是谁??14 小时前
ubuntu22.04 通过docker部署vLLM(Qwen3-0.6B)大模型+New API+OpenWebUI
docker·容器·vllm
Patrick_Wilson14 小时前
K8s 探针避坑:Next.js 不同部署模式下的健康检查实践
kubernetes·node.js·next.js
运维瓦工14 小时前
DevOps 生态介绍(十):Docker Compose 核心 YAML 配置详解与常用命令大全
spring cloud·docker·容器
Plastic garden14 小时前
K8s(10)NFS 的动态 PV 创建数据库给k8s的mysql和redis
docker·容器·kubernetes
Plastic garden15 小时前
k8s(11) Pod 控制器,服务发现与存储管理
kubernetes