轮替安全凭据

本主题介绍如何为 Anthos clusters on AWS (GKE on AWS) 管理服务和用户集群轮替安全凭据。如需详细了解 Anthos clusters on AWS 的安全功能,请参阅安全性

准备工作

为完成此页面上的步骤,您必须有权访问 Anthos clusters on AWS 配置所在目录。

管理服务证书

本部分介绍如何为管理服务轮替证书。

管理证书授权机构

本部分介绍如何为 Anthos clusters on AWS 组件轮替证书授权机构 (CA) 签名证书。

Management API 服务器根 CA

如需轮替 API 服务器根 CA,请执行以下步骤:

  1. 切换到您的 Anthos clusters on AWS 配置所在的目录。您在安装管理服务时创建了此目录。
    cd anthos-aws
  2. 在文本编辑器中打开 anthos-gke.status.yaml
  3. 移除密钥 certificateAuthority 下的所有值。这些值包括 encryptedPrivateKey.kmsKeyARNencryptedPrivateKey.valueencryptedPrivateKey.certificate
  4. 运行 anthos-gke aws management init 以更新 anthos-gke.status.yaml 文件。

     anthos-gke aws management init
    
  5. 运行 anthos-gke aws management apply 以更新管理服务。

     anthos-gke aws management apply
    

  1. anthos-aws 目录中,使用 anthos-gke 将上下文切换到管理服务。
    cd anthos-aws
    anthos-gke aws management get-credentials

其他管理 CA

本部分介绍如何轮替以下所有 CA:

  • 身份验证 Webhook CA
  • Etcd CA
  • 服务帐号签名者 CA

您可以使用以下方法之一轮替这些 CA:

  • anthos-gke.status.yaml 中移除 certificateAuthority 部分。

    1. 切换到您的 Anthos clusters on AWS 配置所在的目录。您在安装管理服务时创建了此目录。
      cd anthos-aws
    2. 在文本编辑器中打开 anthos-gke.status.yaml
    3. 移除密钥 certificateAuthority 下的所有值。这些值包括 encryptedPrivateKey.kmsKeyARNencryptedPrivateKey.valueencryptedPrivateKey.certificate
    4. 运行 anthos-gke aws management init 以更新 anthos-gke.status.yaml 文件。

       anthos-gke aws management init
      
    5. 运行 anthos-gke aws management apply 以更新管理服务。

       anthos-gke aws management apply
      

  • 如果有新的 Anthos clusters on AWS 版本可用,请升级 Anthos clusters on AWS 管理服务

  • 重新创建管理服务 EC2 实例。

    1. anthos-aws 目录中,使用 terraform 获取管理服务的 ID。
      cd anthos-aws
      terraform output cluster_id
      输出包括您的管理服务 ID。在以下示例中,ID 为 gke-12345abc
      terraform output cluster_id
      gke-12345abc
      
    2. 打开 AWS EC2 控制台
    3. 点击实例
    4. 找到名为 cluster-id-management-0 的实例。
    5. 依次选择操作 -> 实例状态 -> 终止以移除实例。EC2 会自动创建一个具有相同 EBS 卷的新实例。

管理 TLS 客户端/服务器密钥和证书

如需为管理服务轮替 TLS 客户端/服务器密钥和证书,您需要重新创建管理服务实例。如需重新创建实例,请执行以下步骤:

  1. anthos-aws 目录中,使用 terraform 获取管理服务的 ID。
    cd anthos-aws
    terraform output cluster_id
    输出包括您的管理服务 ID。在以下示例中,ID 为 gke-12345abc
    terraform output cluster_id
    gke-12345abc
    
  2. 打开 AWS EC2 控制台
  3. 点击实例
  4. 找到名为 cluster-id-management-0 的实例。
  5. 依次选择操作 -> 实例状态 -> 终止以移除实例。EC2 会自动创建一个具有相同 EBS 卷的新实例。

Google Cloud 服务帐号

管理服务的服务帐号

如需为管理服务轮替 Google Cloud 服务帐号,请执行以下步骤。

  1. 按照前提条件中的步骤创建新的服务帐号并下载服务帐号密钥。
  2. 切换到您的 Anthos clusters on AWS 配置所在的目录。您在安装管理服务时创建了此目录。
    cd anthos-aws
  3. 如果您将密钥下载到了其他路径,请在文本编辑器中打开 anthos-gke.yaml 文件。将 .spec.googleCloud.serviceAccountKeys.managementService.status.googleCloud.serviceAccountKeys.connectAgent.spec.googleCloud.serviceAccountKeys.node 的值更改为新路径。

    apiVersion: multicloud.cluster.gke.io/v1
    kind: AWSManagementService
    metadata:
     name: management
    spec:
     googleCloud:
       serviceAccountKeys:
         managementService: MANAGEMENT_KEY_PATH
         connectAgent: CONNECT_KEY_PATH
         node: NODE_KEY_PATH
     ...
    
  4. 运行 anthos-gke aws management init 以更新 anthos-gke.status.yaml 文件。

    anthos-gke aws management init
    
  5. 运行 anthos-gke aws management apply 以更新管理服务。

    anthos-gke aws management apply
    

用户集群服务帐号

如需将这些服务帐号应用于您的 AWSCluster 和 AWSNodePool,您必须升级删除它们,然后重新创建

用户集群证书

本部分介绍如何为用户集群轮替证书。

用户集群 CA 和 SSH 密钥

大多数用户集群 CA 都是在您创建集群时创建的。

当您删除用户集群时,Anthos clusters on AWS 会轮替以下证书:

  • API 服务器根 CA
  • API 前端代理 CA
  • Etcd CA
  • Kubernetes 服务帐号签名者 CA
  • 控制层面到节点 SSH 密钥对

用户集群身份验证 Webhook CA

如需轮替用户集群身份验证 Webhook CA,您需要修改 anthos-gke.status.yaml 文件并应用更改。

  1. 切换到您的 Anthos clusters on AWS 配置所在的目录。您在安装管理服务时创建了此目录。
    cd anthos-aws
  2. 在文本编辑器中打开 anthos-gke.status.yaml
  3. 移除密钥 certificateAuthority 下的所有值。这些值包括 encryptedPrivateKey.kmsKeyARNencryptedPrivateKey.valueencryptedPrivateKey.certificate
  4. 运行 anthos-gke aws management init 以更新 anthos-gke.status.yaml 文件。

     anthos-gke aws management init
    
  5. 运行 anthos-gke aws management apply 以更新管理服务。

     anthos-gke aws management apply
    

用户集群 TLS 密钥对和证书

在创建实例时,Anthos clusters on AWS 会生成 TLS 密钥对和证书。如需轮替这些密钥对,请为控制层面和节点池执行以下步骤来重新创建实例。

控制层面

  1. anthos-aws 目录中,使用 anthos-gke 将上下文切换到管理服务。
    cd anthos-aws
    anthos-gke aws management get-credentials
  2. 使用 kubectl 从 AWSCluster 获取控制层面的 AWS EC2 目标组。

    env HTTPS_PROXY=http://localhost:8118 \
      kubectl get awscluster cluster-name \
      -o jsonpath='{.status.targetGroupName}{"\n"}'
    

    输出包含控制层面的 EC2 目标组的名称。例如,gke-123456a7-controlplane

  3. 打开 AWS EC2 控制台。从左侧窗格中选择目标组

  4. 点击搜索栏并查找您的目标组。点击目标组的名称,然后点击目标。系统会显示控制层面实例列表。

  5. 对于目标组中的每个实例,请执行以下步骤:

    1. 点击实例 ID。系统会显示 AWS EC2 实例控制台。

    2. 点击实例 ID

    3. 依次选择操作 -> 实例状态 -> 终止以移除实例。EC2 会自动创建一个具有相同 EBS 卷的新实例。

    4. 返回到“目标组”页面。

  6. 终止组中的所有实例后,返回到“目标组”页面。

  7. 在该页面的已注册的目标部分中,找到状态列。每个实例的状态都应为运行状况良好。如果任何实例的运行状况都良好,请等待几分钟,然后点击“刷新”() 图标。

  8. 目标组中所有实例的运行状况都良好以后,请继续执行下一步。

节点池

如需轮替节点池的 TLS 证书,请执行以下操作:

  1. anthos-aws 目录中,使用 anthos-gke 将上下文切换到管理服务。
    cd anthos-aws
    anthos-gke aws management get-credentials
  2. 使用 kubectl 从 AWSNodePool 获取节点池的 AWS EC2 目标组。

    env HTTPS_PROXY=http://localhost:8118 \
      kubectl get awsnodepool -o jsonpath='{.items[*].status.autoScalingGroupName}{"\n"}'
    

    输出包括节点池的 EC2 目标组的名称。例如,gke-123456a7-nodepool-abc123

  3. 打开 AWS EC2 控制台。从左侧窗格中选择目标组

  4. 点击搜索栏并查找您的目标组。点击目标组的名称,然后点击目标。系统会显示控制层面实例列表。

  5. 对于目标组中的每个实例,请执行以下步骤:

    1. 点击实例 ID。系统会显示 AWS EC2 实例控制台。

    2. 点击实例 ID

    3. 依次选择操作 -> 实例状态 -> 终止以移除实例。EC2 会自动创建一个具有相同 EBS 卷的新实例。

    4. 返回到“目标组”页面。

  6. 终止组中的所有实例后,返回到“目标组”页面。

  7. 在该页面的已注册的目标部分中,找到状态列。每个实例的状态都应为运行状况良好。如果任何实例的运行状况都良好,请等待几分钟,然后点击“刷新”() 图标。

  8. 目标组中所有实例的运行状况都良好以后,请继续执行下一步。