我有一个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触发器身份验证触发器
AWS_ACCESS_KEY_ID_ASSUME值将以AWS_ACCESS_KEY_ID的名称命名,AWS_SECRET_ACCESS_KEY_ASSUME值将以AWS_SECRET_ACCESS_KEY的名称命名,并定义AWS_REGION值。由于某些原因,我一直从AWS那里得到一个错误,当标量者试图缩放时,它说链中没有凭据提供者。似乎没有发送AWS凭据。我在这里做错什么了?
发布于 2021-06-21 05:37:43
我将向您展示两种基于AWS SQS成功扩展部署的方法。
第一种方式:使用连接到节点的AWS角色
如果您的IAM角色(节点角色)具有访问SQS的权限,那么访问SQS就更容易了,您只需将identityOwner: pod字段更改为identityOwner: operator,这样KEDA就可以使用节点角色访问AWS。
带有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用户
在这种方法中,我们需要创建以下对象
Kubernetes.
创建IAM用户并向此IAM用户授予SQS权限。
首先使用base64对IAM用户访问密钥和秘密密钥进行编码,这是创建Kubernetes秘密时所必需的。
创建秘密
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来映射您希望基于SQS触发器进行扩展的部署的keda
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"https://stackoverflow.com/questions/62320364
复制相似问题