解决EKS中KEDA访问AWS SQS权限问题:完整的IRSA配置指南
问题背景
在Amazon EKS集群中使用KEDA进行基于SQS队列的自动扩缩容时,经常会遇到AWS权限认证问题。典型的错误信息如下:
error getting queue attributes: operation error SQS: GetQueueAttributes, failed to resolve service endpoint
这个问题的根本原因是KEDA Operator没有足够的AWS权限来访问SQS服务。本文将详细介绍如何通过IRSA(IAM Roles for Service Accounts)来解决这个问题。
什么是IRSA?
IRSA(IAM Roles for Service Accounts)是AWS EKS提供的一种安全机制,允许Kubernetes ServiceAccount与AWS IAM角色关联,从而为Pod提供AWS服务访问权限,而无需在Pod中硬编码AWS凭证。
解决方案概述
我们将通过以下步骤来解决权限问题:
- 检查EKS集群的OIDC提供程序
- 创建IAM角色和策略
- 配置KEDA ServiceAccount
- 重启KEDA Operator
- 更新ScaledObject配置
- 验证配置