更新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
相关推荐
清水加冰3 小时前
Docker + Jenkins + gitee 实现CICD环境搭建
docker·容器·jenkins
杨充4 小时前
11.组合模式设计思想
docker·容器·组合模式
来自宇宙的曹先生7 小时前
k8s核心概念
java·开发语言·数据库·云原生·容器·kubernetes
李少兄8 小时前
Docker在CentOS上的安装与配置
docker·容器·centos
猫毛已经快要掉光的小猫8 小时前
【docker】运行一个container
运维·docker·容器
天弈初心10 小时前
k8s和docker的区别及各自的应用场景
docker·容器·kubernetes
青柚~11 小时前
【Windows修改Docker Desktop(WSL2)内存分配大小】
运维·docker·容器
会飞的土拨鼠呀12 小时前
docker-ce-stable‘ 下载元数据失败 : Cannot download repomd.xml: Cannot download
xml·docker·容器
Chancezhou14 小时前
【微服务】不同微服务之间用户信息的获取和传递方案
微服务·云原生