9 - 修改k8s证书后Rancher端需要做的操作


一:Rancher相关备份操作

1、备份yaml

  • 在集群层级,点击项目/命名空间导出所有的命名空间yaml文件;
  • 在各个项目级别,分别导出工作负载、负载均衡、服务发现、数据卷、配置映射、密文的yaml文件;

2、备份etcd(HA部署)

指定rke配置文件进行集群备份:

  1. ./rke_linux-amd64 etcd snapshot-save --name SNAPSHOT-201903xx.db --config cluster.yml

RKE会获取每个etcd节点的快照,并保存在每个etcd节点的/opt/rke/etcd-snapshots目录下。

二:进行业务集群的k8s证书升级

验证证书有效期:

  1. openssl x509 -in ca.crt -noout -dates

CA证书文件一般路径在/etc/kubernetes/ssl,如果找不到,可以在local集群中执行如下命令获取

  1. kubectl --kubeconfig=kube_configxxx.yml get clusters <CLUSTER_ID> \
  2. -o jsonpath={.status.caCert} | base64 -d

CLUSTER_ID,集群ID可在浏览器地址栏查看。

1、示例

  1. kubectl --kubeconfig=kube_configxxx.yml get clusters c-2xqt7 -o jsonpath={.status.caCert} | base64 -d
  2. -----BEGIN CERTIFICATE-----
  3. MIIFnTCCA4WgAwIBAgIJAPnVRHuosezjMA0GCSqGSIb3DQEBCwUAMGUxCzAJBgNV
  4. BAYTAkNOMREwDwYDVQQIDAhTaGFuZ2hhaTEPMA0GA1UEBwwGUHVkb25nMRYwFAYD
  5. VQQKDA1zYWljbW90b3IuY29tMQwwCgYDVQQLDANrOHMxDDAKBgNVBAMMA2s4czAe
  6. Fw0xODAzMDgwNjI2NDNaFw0xOTAzMDgwNjI2NDNaMGUxCzAJBgNVBAYTAkNOMREw
  7. DwYDVQQIDAhTaGFuZ2hhaTEPMA0GA1UEBwwGUHVkb25nMRYwFAYDVQQKDA1zYWlj
  8. bW90b3IuY29tMQwwCgYDVQQLDANrOHMxDDAKBgNVBAMMA2s4czCCAiIwDQYJKoZI
  9. hvcNAQEBBQADggIPADCCAgoCggIBAK/e4muA4zUtBG7WtXC7J46jdAxZmYmh6W/j
  10. zTpzir8yKcvocx/ELPZ6qVdSXZJPb5IKC1RAJz/xM2pvU5oAzgRc8inxz3AFHBZM
  11. 1oHVoIq5pVG0XVBt6o1N16myrHaCgwPLnytQ5lhJD09safmIGSShTktB6JdhA/7y
  12. 1ol8NLrFnzBH4/8oNwCChy+qGXTOa566S8c5noCg6NZ/LlYV1KPyIv1LnTfwulzU
  13. zzRLe0VDcezpRf4FrxMRKK83VEIJvRqnTxE3hYAH4AyvShpQseIHEtA4sJyRK69H
  14. lWE+FE2ozY3jhpVftl3zJj/7S2oHxBZQtBSizIOmoj7kTm0cxS1zqjdz6k/NAhCW
  15. dUwQOmEW/N2sxZ/9A3KtGxgERJsm1EFHcVC3oqcVemnt08TIpChbvJ9nphDUwgEN
  16. ikxod8W8012Cvir71AGcwfsQsa2NpdqBuP8m0AZN0HX0RflNsTMyUhP6z72u1Crw
  17. xfohyowh0LO3heL9/aHwwGTD8hN0n6dbjPNE/YMDwEFiO5dqtQjh2heerHFr6oPP
  18. facHBNc7YJi3/ANJMrVzTs5EadX6XY+INRWNNTlKL/lkzwogtvLX0V40RfISWkyK
  19. CRcrK/bqjFHKYTqIWOvPvtY7LhT/K0tjTMV1dALsJ59yLIT28vX/YtmcadhFlt6P
  20. LdMwyEwrAgMBAAGjUDBOMB0GA1UdDgQWBBTSG2dcHpgXJHTONTgeQtQWargg4TAf
  21. BgNVHSMEGDAWgBTSG2dcHpgXJHTONTgeQtQWargg4TAMBgNVHRMEBTADAQH/MA0G
  22. CSqGSIb3DQEBCwUAA4ICAQAoUvv1cX0cPVzWh6q1gJGd2AND7w6WfXNbumdxi3PR
  23. MiaTvvE59Ud7hSJ5MLUcSI56HS+hdfF8U1/919E5I2m1LhcbqU8hFtn6ZGJr+P5z
  24. 4iCyXpvgvJeXqauqgvOZlBlc1Xm6YhyOyC98bk9fJtiTePIVOzv3edWmZIBnu/MT
  25. VbObqIkzIpaHCjZh7wfnhU3uLzujFt4oZNQcIQsOYaLg1QHW/rFvKm01sog7odo/
  26. ZEhz71YkhtMblmkY7LoUR9ql6LaxuYglTis+zczJdB4xpR/29WTkVVJ29ETnxS55
  27. QMNnZJsAtfubc9B51x0r/LWzSH8iBmlnpjiY2SyJEvWqJj8rJCAFfgXDJt37rffz
  28. BxLl9xFor4maWLY7zpGu/7sMz0CYdYyTeQvIss9/ChqTSEqQmtcdaKNdJiyrdBhF
  29. ZQXhR21YHdxrsorrIC4qbq7eWnCjpzzBCEHpqL+FwGwbvXdMNZNJTo1RaKOMXdfA
  30. XXqcYqZWltrserDKasxZ30OYMaH2RwNjvZAqQRVauliiF8feJlHt9JZHT45dPCaO
  31. Bc973rbUJ/xZYxUpONaCl9vV5ZDoD4y2TSx5C1iM/U1aNKd5FWww+E7GZpLiCFx4
  32. HAR5R84cBjbGLG9qLWa+TTLQeZrHuq1NTmbDCttiJVwFM7bii5eTPsJAauRFS744
  33. 7Q==
  34. -----END CERTIFICATE-----

升级完业务集群的证书之后,Rancher中集群会报x509错误,需要执行以下步骤修复。

三:修复步骤

需要准备的文件

  • ca.crt 新的ca证书文件
  • kubeconfig 更新证书后的集群链接配置文件

注: 假设kubeconfig文件位置为:

  • 老证书对应的文件位置:207:/home/appuser/rke/new_dev/kubeconfig-new-dev-rancher
  • 新证书对应的文件位置:207:/home/appuser/cacrt/config-test2-new

1、在业务集群中删除token

删除其中的cattle-token-xxx,其会基于最新证书配置启动重建

  1. kubectl --kubeconfig=config-test2-new -n cattle-system get secret
  2. NAME TYPE DATA AGE
  3. cattle-credentials-096434b Opaque 2 61d
  4. cattle-credentials-152dd17 Opaque 2 61d
  5. cattle-token-2vff8 kubernetes.io/service-account-token 3 1d
  6. default-token-r2wtl kubernetes.io/service-account-token 3 61d

生成新token之后,取值解密备用。

  1. kubectl --kubeconfig=kube_configxxx.yml -n cattle-system \
  2. get secret cattle-token-9n9f5 -o jsonpath={.data.token} | base64 -d

2、在local集群中编辑业务集群的crd clusters对象做二个变更

  • 备份集群crd对象
  1. kubectl --kubeconfig=kube_configxxx.yml get clusters <cluster-id> -o yaml > `<cluster-id>.yaml`
  • caCert字段参数,用新的ca证书文件base64加密后替换。直接cat完整的证书文件,然后base64加密。
  1. cat ca.crt | base64
  • serviceAccountToken字段的参数,使用步骤1中的token解密后替换。