通过KubeConfig回收站管理KubeConfig

容器服务 Kubernetes 版会为不同的阿里云账号、RAM用户或角色签发带有其身份信息的KubeConfig凭证用于连接集群。如果您需要恢复误清除的KubeConfig,或回滚某个历史版本的KubeConfig,您可以通过KubeConfig回收站功能来实现。

注意事项

  • 您的账号需为阿里云账号(主账号)或有指定权限的RAM用户或角色。

    如使用RAM用户或角色,请确保您的账号已有AliyunCSFullAccessAliyunRAMReadOnlyAccess权限。

  • 仅支持恢复过去30天内被清除的KubeConfig。超过30天的清除记录无法恢复。关于清除Kubeconfig,请参见清除KubeConfig

  • 在一个ACK集群中,一个阿里云账号、RAM用户或RAM角色只能保有一个正在生效的KubeConfig。如果某集群对应的阿里云账号、RAM用户或角色账号下已存在生效中的KubeConfig,则过往的KubeConfig无法恢复。

使用场景

场景一:误清除某KubeConfig,需恢复该Kubeconfig

因操作失误,管理员A清除了RAM用户B在集群Cluster1中的KubeConfig,用户B随即发现无法连接Cluster1。此时,用户B申请管理员A在回收站中重新恢复误清除的KubeConfig。

场景二:当前KubeConfig不适用,需恢复历史的KubeConfig

管理员A清除了RAM用户B在集群Cluster1中v1版本的KubeConfig,RAM用户B在控制台重新获取了v2版本的KubeConfig用于连接集群。但管理员A发现业务系统中仍然有业务应用依赖v1版本的KubeConfig,且v1版本的KubeConfig关联了许多RBAC权限,故希望恢复v1版本的KubeConfig。

此时,管理员A需要首先清除v2版本的KubeConfig,然后在回收站查询v1、v2两个版本的KubeConfig记录,并选择恢复v1版本的KubeConfig。

恢复KubeConfig

您可以恢复单个或多个KubeConfig及其关联的RBAC权限。

  1. 登录容器服务管理控制台,在左侧导航栏选择授权管理

  2. 单击KubeConfig 管理页签,然后单击页面右上角的KubeConfig 回收站

    KubeConfig回收站展示30天内已被清除的KubeConfig列表。列表字段说明如下。

    列表项

    说明

    用户信息

    该KubeConfig对应阿里云账号或RAM用户、角色的名称及ID。

    集群信息

    该KubeConfig对应集群的名称以及ID。

    证书信息

    该KubeConfig的客户端证书CN(CommonName)。关于CN的更多信息,请参见参考资料:客户端证书CN

    RBAC 权限

    该KubeConfig关联的RBAC权限列表。

    回收时间

    该KubeConfig被删除的时间,即进入回收站的时间。

    清理时间

    该KubeConfig被永久清理的时间。

    回收站仅支持恢复过去30天内被清除的KubeConfig。超过30天的待回收条目会被自动清理且无法找回。

  3. 单击恢复,恢复目标记录对应的KubeConfig及其关联的RBAC权限。

    您也可以勾选多条记录,批量恢复。批量恢复时,请避免KubeConfig冲突。

删除KubeConfig记录

如充分评估后无需再使用某个KubeConfig,您可以在回收站中删除其对应的记录。删除后,记录无法回滚。

  1. 登录容器服务管理控制台,在左侧导航栏选择授权管理

  2. 单击KubeConfig 管理页签,然后单击页面右上角的KubeConfig 回收站

  3. 确认待删除的回收站记录后,单击删除,并在删除前填写证书CN完成确认。

参考资料:客户端证书CN

在KubeConfig中,客户端证书CN (CommonName) 是访问Kubernetes集群的客户端身份信息。不同的KubeConfig对应不同的客户端身份信息。更多信息,请参见kube-apiserver

ACK集群中,客户端证书CN的组成格式为{UserID}-{后缀ID}。其中,UserID为KubeConfig对应的RAM用户或角色ID;后缀ID为随机字符串,在每次清除或吊销KubeConfig后均会自动更新,防止历史的KubeConfig仍然可以正常访问集群。

常见问题

同一集群下,为什么同一RAM用户在回收站存在多条KubeConfig记录?

由于证书CN的更新,在KubeConfig回收站中,即使是同一集群的同一RAM用户也会存在多个KubeConfig记录。

回收站存在多个KubeConfig记录时,如何识别待恢复的KubeConfig?

您可以查看记录对应的RBAC权限来选择待恢复的KubeConfig,也可以根据证书CN来区分KubeConfig记录,选择恰当的KubeConfig记录进行恢复。您可以通过以下命令查看某一份KubeConfig的CN,然后根据证书CN在回收站中查找对应记录并进行恢复。

openssl x509 -in <(kubectl config view  --kubeconfig {kubeconfig 文件名} --raw --minify --output=jsonpath='{.users[0].user.client-certificate-data}'|base64 -d) -noout -subject

为什么有回收站条目的恢复按钮置灰?

在某一集群中,一个RAM用户或角色只能拥有一个生效中的KubeConfig。因此,当该RAM用户或角色在某一集群中已存在生效中的KubeConfig时,历史的KubeConfig便无法恢复,以避免集群KubeConfig冲突。

如果需要恢复历史的KubeConfig,请将当前生效的KubeConfig清除,然后再恢复历史的KubeConfig。关于如何清除KubeConfig,请参见清除KubeConfig

有哪些情况可能会导致KubeConfig恢复失败?

  • 操作人员的RBAC权限不足:恢复回收站KubeConfig记录时,会连带恢复关联的RBAC权限。如果操作人员没有对应集群的RBAC权限,可能会导致KubeConfig恢复失败。相关授权步骤请参见配置RAM用户或RAM角色RBAC权限

  • 集群状态异常:集群状态异常时可能无法连接集群,继而导致KubeConfig恢复失败。

  • KubeConfig冲突:在一个ACK集群中,一个RAM用户或角色只能保有一个正在生效的KubeConfig。如果您在批量恢复KubeConfig记录时KubeConfig存在冲突,ACK默认恢复最近的一条记录,其余记录均会恢复失败。

相关文档

  • 当企业内部员工离职或KubeConfig有潜在安全风险时,请及时清理和解除授权。具体操作,请参见清除KubeConfig

  • 当签发的KubeConfig疑似泄露时,请吊销该集群的KubeConfig以生成新的KubeConfig。具体操作,请参见吊销集群的KubeConfig凭证