[英]Authenticate an AWS SQS scaler in Keda
我有一個 Keda 部署,我已經嘗試開始工作大約一個月了。 目前,我的定標器看起來像這樣:
apiVersion: keda.k8s.io/v1alpha1
kind: ScaledObject
metadata:
name: {service-name}-scaler
spec:
scaleTargetRef:
deploymentName: {service-name}
containerName: {service-name}
pollingInterval: 30
cooldownPeriod: 600
minReplicaCount: 0
maxReplicaCount: 10
triggers:
- type: aws-sqs-queue
authenticationRef:
name: keda-trigger-authentication
metadata:
queueURL: https://sqs.ap-northeast-1.amazonaws.com/{AWS ID}/{Queue-name}
queueLength: "1"
awsRegion: "ap-northeast-1"
identityOwner: pod
關聯的觸發器身份驗證和密碼是:
apiVersion: v1
kind: Secret
metadata:
name: keda-secrets
data:
AWS_ACCESS_KEY_ID: {base64-encoded-string}
AWS_SECRET_ACCESS_KEY: {base64-encoded-string}
KEDA_ROLE_ARN: {base64-encoded-string}
---
apiVersion: keda.k8s.io/v1alpha1
kind: TriggerAuthentication
metadata:
name: keda-trigger-authentication
spec:
env:
- parameter: awsRegion
name: AWS_REGION
- parameter: awsAccessKeyID
name: AWS_ACCESS_KEY_ID
- parameter: awsSecretAccessKey
name: AWS_SECRET_ACCESS_KEY
- parameter: awsRoleArn
name: KEDA_ROLE_ARN
secretTargetRef:
- parameter: awsRoleArn
name: keda-secrets
key: KEDA_ROLE_ARN
我了解到這里重復了KEDA_ROLE_ARN
值; 為了調試目的,我把兩者都留下了。 部署順序如下:
AWS_ACCESS_KEY_ID
、 AWS_SECRET_ACCESS_KEY
和KEDA_ROLE_ARN
值的位置AWS_ACCESS_KEY_ID
和AWS_SECRET_ACCESS_KEY
值在文件中分別列為AWS_ACCESS_KEY_ID_ASSUME
和AWS_SECRET_ACCESS_KEY_ASSUME
,並將在容器上采用它們的適當值。同樣,這些被復制以進行調試目的。我更願意使用這些值而不是單獨的秘密。使用 Helm 安裝 Keda podsAWS_ACCESS_KEY_ID_ASSUME
值將采用AWS_ACCESS_KEY_ID
名稱的位置, AWS_SECRET_ACCESS_KEY_ASSUME
值將采用AWS_SECRET_ACCESS_KEY
名稱的位置,以及定義AWS_REGION
值的位置。出於某種原因,當縮放器嘗試縮放時,我不斷從 AWS 收到錯誤消息,說鏈中沒有憑證提供程序。 似乎未發送 AWS 憑據。 我在這里做錯了什么?
我將向您展示兩種基於 AWS SQS 成功擴展部署的方法
第一種方式:使用附加到節點的 AWS IAM 角色
如果您的 IAM 角色(節點角色)具有 SQS 的權限,那么訪問 SQS 將變得更容易您只需將identityOwner: pod
字段更改為identityOwner: operator
以便 KEDA 可以使用節點角色訪問 AWS SQS
帶有 SQS 觸發器的示例 ScaledObject 文件
apiVersion: keda.sh/v1alpha1
kind: ScaledObject
metadata:
name: aws-sqs-queue-scaledobject
namespace: default
spec:
scaleTargetRef:
name: test-deployment
minReplicaCount: 0
maxReplicaCount: 2
triggers:
- type: aws-sqs-queue
metadata:
queueURL: https://sqs.us-east-1.amazonaws.com/3243234432432/Queue
queueLength: "5"
awsRegion: "us-east-1"
identityOwner: operator
第二種方式:使用IAM用戶
在這種方法中,我們需要創建以下對象
創建 IAM 用戶並向該 IAM 用戶授予 SQS 權限。
首先使用 base64 對 IAM 用戶訪問密鑰和秘密密鑰進行編碼,這在創建 Kube.netes 秘密時是必需的。
創建秘密
apiVersion: v1
kind: Secret
metadata:
name: test-secrets
namespace: default
data:
AWS_ACCESS_KEY_ID: <base64-encoded-key>
AWS_SECRET_ACCESS_KEY: <base64-encoded-secret-key>
創建TriggerAuthentication這將在 scaledObject 中使用
apiVersion: keda.sh/v1alpha1
kind: TriggerAuthentication
metadata:
name: keda-trigger-auth-aws-credentials
namespace: default
spec:
secretTargetRef:
- parameter: awsAccessKeyID # Required.
name: test-secrets # Required.
key: AWS_ACCESS_KEY_ID # Required.
- parameter: awsSecretAccessKey # Required.
name: test-secrets # Required.
key: AWS_SECRET_ACCESS_KEY # Required.
創建scaledObject到 map keda 部署你想根據 SQS 觸發器擴展
apiVersion: keda.sh/v1alpha1
kind: ScaledObject
metadata:
name: aws-sqs-queue-scaledobject
namespace: default
spec:
scaleTargetRef:
name: test-deployment
minReplicaCount: 0
maxReplicaCount: 2
triggers:
- type: aws-sqs-queue
authenticationRef:
name: keda-trigger-auth-aws-credentials
metadata:
queueURL: https://sqs.us-east-1.amazonaws.com/012345678912/Queue
queueLength: "5"
awsRegion: "us-east-1"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.