Оператору Keda отказано в доступе к SQS
Я использую масштабатор SQS для Keda для масштабирования развертывания. В настоящее время я используюoperator
на основе масштабируемого объекта. Я создал роль IAM со следующими разрешениями и доверительными отношениями: -
разрешение
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "KedaSQSReadPermission",
"Effect": "Allow",
"Action": "sqs:GetQueueAttributes",
"Resource": "arn:aws:sqs:<region-name>:<account-id>:<test-queue>"
},
{
"Sid": "KedaSQSListPermission",
"Effect": "Allow",
"Action": "sqs:ListQueues",
"Resource": ["*"]
}
]
}
доверительные отношения
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "",
"Effect": "Allow",
"Principal": {
"Federated": "arn:aws:iam::<account-id>:oidc-provider/oidc.eks.<region-name>.amazonaws.com/id/<oidc-id>"
},
"Action": "sts:AssumeRoleWithWebIdentity",
"Condition": {
"StringEquals": {
"oidc.eks.<region-name>.amazonaws.com/id/<oidc-id>:sub": "system:serviceaccount:keda:keda-operator"
}
}
}
]
}
Эта роль указана вkeda-operator
сервисный аккаунт вkeda
пространство имен, как описано ниже: -
{
"apiVersion": "v1",
"kind": "ServiceAccount",
"metadata": {
"annotations": {
"eks.amazonaws.com/role-arn": "arn:aws:iam::<account-id>:role/<role-name>",
"kubectl.kubernetes.io/last-applied-configuration": "{\"apiVersion\":\"v1\",\"kind\":\"ServiceAccount\",\"metadata\":{\"annotations\":{},\"labels\":{\"app.kubernetes.io/name\":\"keda-operator\",\"app.kubernetes.io/part-of\":\"keda-operator\",\"app.kubernetes.io/version\":\"2.7.0\"},\"name\":\"keda-operator\",\"namespace\":\"keda\"}}\n"
},
"creationTimestamp": "2022-07-14T13:49:40Z",
"labels": {
"app.kubernetes.io/name": "keda-operator",
"app.kubernetes.io/part-of": "keda-operator",
"app.kubernetes.io/version": "2.7.0"
},
"name": "keda-operator",
"namespace": "keda",
"resourceVersion": "174401872",
"uid": "a5862afb-fcd1-49e3-8ebb-6c81f4fd5014"
},
"secrets": [
{
"name": "keda-operator-token-wzqsz"
}
]
}
У меня есть развертывание, работающее в другом пространстве имен -test-keda
. Для масштабирования по длине очереди я использую следующую спецификацию:-
apiVersion: keda.sh/v1alpha1
kind: ScaledObject
metadata:
name: scaled-object-test
namespace: test-keda
labels:
name: test-app # Required Name of the deployment we want to scale.
spec:
scaleTargetRef:
kind: Deployment
name: test-app
pollingInterval: 5
cooldownPeriod: 10
maxReplicaCount: 8
minReplicaCount: 0
triggers:
- type: aws-sqs-queue
metadata:
queueURL: https://sqs.<region-name>.amazonaws.com/<account-id>/<queue-name>
queueLength: "10"
awsRegion: "<region-name>"
identityOwner: operator
Я использовал официальные документы для масштабатора SQS для настройки вышеуказанных конфигураций. Однако при проверкеkeda-opeator
pod log, я нахожу следующую ошибку:-
error": "AccessDenied: Access to the resource https://sqs.<region-name>.amazonaws.com/ is denied.\n\tstatu │
│ s code: 403, request id: 87fd482d-89cf-54ef-af3e-13a25f4d9e23"
я пытался использоватьpod
какidentityOwner
для моего масштабируемого объекта, но, кажется, бросаетAccess Denied
, из-за того, что роль узла пытается взять на себя роль развертывания IRSA.
Я что-то упустил здесь? Был бы признателен за любой намек на то, где я ошибаюсь.
Спасибо