更新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
相关推荐
CP-DD29 分钟前
Docker 容器化开发 应用
运维·docker·容器
老司机张师傅1 小时前
【微服务实战之Docker容器】第七章-Dockerfile解析
容器·dockerfile·虚悬镜像·docker学习
登云时刻2 小时前
Kubernetes集群外连接redis集群和使用redis-shake工具迁移数据(一)
redis·kubernetes·bootstrap
运维&陈同学2 小时前
【zookeeper03】消息队列与微服务之zookeeper集群部署
linux·微服务·zookeeper·云原生·消息队列·云计算·java-zookeeper
吴半杯3 小时前
gateway漏洞(CVE-2022-22947)
docker·kubernetes·gateway
Code_Artist5 小时前
使用Portainer来管理并编排Docker容器
docker·云原生·容器
Eternal-Student5 小时前
【docker 保存】将Docker镜像保存为一个离线的tar归档文件
运维·docker·容器
码农小丘5 小时前
一篇保姆式centos/ubuntu安装docker
运维·docker·容器
灼烧的疯狂7 小时前
K8S + Jenkins 做CICD
容器·kubernetes·jenkins
wenyue11218 小时前
Revolutionize Your Kubernetes Experience with Easegress: Kubernetes Gateway API
容器·kubernetes·gateway