本主题介绍如何为 GKE on AWS 管理服务和用户集群轮替安全凭据。如需详细了解 GKE on AWS 的安全功能,请参阅安全。
准备工作
如需完成本页面上的步骤,您必须有权访问包含您的 GKE on AWS 配置的目录。
管理服务证书
本部分介绍如何为管理服务轮替证书。
管理证书授权机构
本部分介绍如何为 GKE on AWS 组件轮替证书授权机构 (CA) 签名证书。
Management API 服务器根 CA
如需轮替 API 服务器根 CA,请执行以下步骤:
- 切换到您的 GKE on AWS 配置所在的目录。
您在安装管理服务时创建了此目录。
cd anthos-aws
- 在文本编辑器中打开
anthos-gke.status.yaml
。 - 移除密钥
certificateAuthority
下的所有值。这些值包括encryptedPrivateKey.kmsKeyARN
、encryptedPrivateKey.value
、encryptedPrivateKey.certificate
。 运行
anthos-gke aws management init
以更新anthos-gke.status.yaml
文件。anthos-gke aws management init
运行
anthos-gke aws management apply
以更新管理服务。anthos-gke aws management apply
- 在
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
部分。- 切换到您的 GKE on AWS 配置所在的目录。
您在安装管理服务时创建了此目录。
cd anthos-aws
- 在文本编辑器中打开
anthos-gke.status.yaml
。 - 移除密钥
certificateAuthority
下的所有值。这些值包括encryptedPrivateKey.kmsKeyARN
、encryptedPrivateKey.value
、encryptedPrivateKey.certificate
。 运行
anthos-gke aws management init
以更新anthos-gke.status.yaml
文件。anthos-gke aws management init
运行
anthos-gke aws management apply
以更新管理服务。anthos-gke aws management apply
- 切换到您的 GKE on AWS 配置所在的目录。
您在安装管理服务时创建了此目录。
如果有新的 GKE on AWS 版本可用,请升级 GKE on AWS 管理服务。
重新创建管理服务 EC2 实例。
- 在
anthos-aws
目录中,使用terraform
获取管理服务的 ID。cd anthos-aws terraform output cluster_id
输出包括您的管理服务 ID。在以下示例中,此 ID 为gke-12345abc
。terraform output cluster_id
gke-12345abc - 打开 AWS EC2 控制台。
- 点击实例。
- 找到名为
cluster-id-management-0
的实例。 - 依次选择操作 -> 实例状态 -> 终止以移除实例。EC2 会自动创建一个具有相同 EBS 卷的新实例。
- 在
管理 TLS 客户端/服务器密钥和证书
如需为管理服务轮替 TLS 客户端/服务器密钥和证书,您需要重新创建管理服务实例。如需重新创建实例,请执行以下步骤:
- 在
anthos-aws
目录中,使用terraform
获取管理服务的 ID。cd anthos-aws terraform output cluster_id
输出包括您的管理服务 ID。在以下示例中,此 ID 为gke-12345abc
。terraform output cluster_id
gke-12345abc - 打开 AWS EC2 控制台。
- 点击实例。
- 找到名为
cluster-id-management-0
的实例。 - 依次选择操作 -> 实例状态 -> 终止以移除实例。EC2 会自动创建一个具有相同 EBS 卷的新实例。
Google Cloud 服务账号
管理服务的服务账号
如需为管理服务轮替 Google Cloud 服务账号,请执行以下步骤。
- 按照前提条件中的步骤创建新的服务账号并下载服务账号密钥。
- 切换到您的 GKE on AWS 配置所在的目录。
您在安装管理服务时创建了此目录。
cd anthos-aws
如果您将密钥下载到了其他路径,请在文本编辑器中打开
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 ...
运行
anthos-gke aws management init
以更新anthos-gke.status.yaml
文件。anthos-gke aws management init
运行
anthos-gke aws management apply
以更新管理服务。anthos-gke aws management apply
用户集群服务账号
如需将这些服务账号应用于您的 AWSCluster 和 AWSNodePool,您必须升级或删除它们,然后重新创建。
用户集群证书
本部分介绍如何为用户集群轮替证书。
用户集群 CA 和 SSH 密钥
大多数用户集群 CA 都是在您创建集群时创建的。
当您删除用户集群时,GKE on AWS 会轮替以下证书:
- API 服务器根 CA
- API 前端代理 CA
- Etcd CA
- Kubernetes 服务账号签名者 CA
- 控制层面到节点 SSH 密钥对
用户集群身份验证 Webhook CA
如需轮替用户集群身份验证 Webhook CA,您需要修改 anthos-gke.status.yaml
文件并应用更改。
- 切换到您的 GKE on AWS 配置所在的目录。
您在安装管理服务时创建了此目录。
cd anthos-aws
- 在文本编辑器中打开
anthos-gke.status.yaml
。 - 移除密钥
certificateAuthority
下的所有值。这些值包括encryptedPrivateKey.kmsKeyARN
、encryptedPrivateKey.value
、encryptedPrivateKey.certificate
。 运行
anthos-gke aws management init
以更新anthos-gke.status.yaml
文件。anthos-gke aws management init
运行
anthos-gke aws management apply
以更新管理服务。anthos-gke aws management apply
用户集群 TLS 密钥对和证书
在创建实例时,GKE on AWS 会生成 TLS 密钥对和证书。如需轮替这些密钥对,请为控制层面和节点池执行以下步骤来重新创建实例。
控制层面
- 在
anthos-aws
目录中,使用anthos-gke
将上下文切换到管理服务。cd anthos-aws anthos-gke aws management get-credentials
使用
kubectl
从 AWSCluster 获取控制层面的 AWS EC2 目标组。env HTTPS_PROXY=http://localhost:8118 \ kubectl get awscluster cluster-name \ -o jsonpath='{.status.targetGroupName}{"\n"}'
输出包含控制层面的 EC2 目标组的名称。例如,
gke-123456a7-controlplane
。打开 AWS EC2 控制台。从左侧窗格中选择目标组。
点击搜索栏并查找您的目标组。点击目标组的名称,然后点击目标。系统会显示控制层面实例列表。
对于目标组中的每个实例,请执行以下步骤:
点击实例 ID。系统会显示 AWS EC2 实例控制台。
点击实例 ID。
依次选择操作 -> 实例状态 -> 终止以移除实例。EC2 会自动创建一个具有相同 EBS 卷的新实例。
返回到“目标组”页面。
终止组中的所有实例后,返回到“目标组”页面。
在该页面的已注册的目标部分中,找到状态列。每个实例的状态都应为运行状况良好。如果任何实例的运行状况都良好,请等待几分钟,然后点击“刷新”(
) 图标。目标组中所有实例的运行状况都良好以后,请继续执行下一步。
节点池
如需轮替节点池的 TLS 证书,请执行以下操作:
- 在
anthos-aws
目录中,使用anthos-gke
将上下文切换到管理服务。cd anthos-aws anthos-gke aws management get-credentials
使用
kubectl
从 AWSNodePool 获取节点池的 AWS EC2 目标组。env HTTPS_PROXY=http://localhost:8118 \ kubectl get awsnodepool -o jsonpath='{.items[*].status.autoScalingGroupName}{"\n"}'
输出包括节点池的 EC2 目标组的名称。例如,
gke-123456a7-nodepool-abc123
。打开 AWS EC2 控制台。从左侧窗格中选择目标组。
点击搜索栏并查找您的目标组。点击目标组的名称,然后点击目标。系统会显示控制层面实例列表。
对于目标组中的每个实例,请执行以下步骤:
点击实例 ID。系统会显示 AWS EC2 实例控制台。
点击实例 ID。
依次选择操作 -> 实例状态 -> 终止以移除实例。EC2 会自动创建一个具有相同 EBS 卷的新实例。
返回到“目标组”页面。
终止组中的所有实例后,返回到“目标组”页面。
在该页面的已注册的目标部分中,找到状态列。每个实例的状态都应为运行状况良好。如果任何实例的运行状况都良好,请等待几分钟,然后点击“刷新”(
) 图标。目标组中所有实例的运行状况都良好以后,请继续执行下一步。