帮助改进此页面
要帮助改进本用户指南,请选择位于每个页面右侧窗格中的在 GitHub 上编辑此页面链接。
适用于 ACK 的 EKS 功能与自主管理型 ACK 功能的比较
适用于 ACK 的 EKS 功能提供了与自主管理型 ACK 控制器相同的功能,且具备显著的运营优势。有关 EKS 功能与自主管理型解决方案的总体比较,请参阅 EKS 功能和注意事项。本主题将重点介绍 ACK 特有的差异。
与上游 ACK 的区别
适用于 ACK 的 EKS 功能基于上游 ACK 控制器,但在 IAM 集成方面有所不同。
IAM 功能角色:该功能将使用专用 IAM 角色,其信任策略允许 capabilities.eks.amazonaws.com 服务主体,而不允许 IRSA(用于服务账户的 IAM 角色)。您可以将 IAM 策略直接附加到功能角色,而无需创建 Kubernetes 服务账户或为其添加注释,也无需配置 OIDC 提供者。对于生产使用案例,最佳实践是使用 IAMRoleSelector 来配置服务权限。有关更多信息,请参阅配置 ACK 权限。
会话标签:托管功能会为所有 AWS API 请求自动设置会话标签,从而实现精细的访问控制和审计。标签包括 eks:eks-capability-arn、eks:kubernetes-namespace 和 eks:kubernetes-api-group。这与自主管理的 ACK 有所不同,后者默认不设置这些标签。有关在 IAM 策略中使用会话标签的详细信息,请参阅 配置 ACK 权限。
资源标签:该功能为 AWS 资源应用的默认标签与自主管理的 ACK 所应用的标签不同。该功能使用 eks: 前缀标签(例如 eks:kubernetes-namespace、eks:eks-capability-arn),而不是自主管理的 ACK 使用的 services.k8s.aws/ 标签。有关默认资源标签的完整列表,请参阅 针对 EKS 的 ACK 注意事项。
资源兼容性:ACK 自定义资源的工作方式与上游 ACK 完全相同,您无需更改 ACK 资源 YAML 文件。该功能使用同一 Kubernetes API 和 CRD,因此 kubectl 等工具的使用方式将保持不变。支持上游 ACK 中所有已正式发布的控制器和资源。
有关完整的 ACK 文档及针对具体服务的指南,请参阅 ACK 文档
迁移路径
您可以从自主管理型 ACK 迁移到托管功能,且停机时间为零:
-
更新自主管理型 ACK 控制器,使其使用
kube-system实现主节点选举租约,例如:helm upgrade --install ack-s3-controller \ oci://public.ecr.aws/aws-controllers-k8s/s3-chart \ --namespace ack-system \ --set leaderElection.namespace=kube-system这会将控制器的租约移至
kube-system,从而允许托管功能与其协调。 -
在集群上创建 ACK 功能(请参阅创建 ACK 功能)
-
托管功能可识别出由 ACK 托管的 AWS 现有资源,并接管协调工作
-
逐步缩减或移除自主管理型控制器部署:
helm uninstall ack-s3-controller --namespace ack-system
此方法允许两个控制器在迁移期间安全共存。托管功能会自动接管先前由自主管理型控制器托管的资源,确保持续协调且不发生冲突。