使用 AWS Controllers for Kubernetes 部署具有 SQS、Lambda 和 DynamoDB 的无服务器数据处理解决方案 您所在的位置:网站首页 ecn与ecr的区别 使用 AWS Controllers for Kubernetes 部署具有 SQS、Lambda 和 DynamoDB 的无服务器数据处理解决方案

使用 AWS Controllers for Kubernetes 部署具有 SQS、Lambda 和 DynamoDB 的无服务器数据处理解决方案

2023-03-25 01:17| 来源: 网络整理| 查看: 265

在这篇博文中,您将在 Amazon EKS 集群上使用 AWS Controllers for Kubernetes 来组合一个解决方案,其中来自 Amazon SQS 队列 的数据由 AWS Lambda 函数 处理并持久保存到 DynamoDB 表中。

AWS CLI SQS Lambda Go function DynamoDB

适用于 Kubernetes 的 AWS 控制器(也称为 ACK)利用 Kubernetes 自定义资源和自定义资源定义,使您能够直接从 Kubernetes 管理和使用 AWS 服务,而无需在集群外部 定义资源 。其背后的 ACK 想法是使 Kubernetes 用户能够使用 Kubernetes API 和配置语言描述 AWS 资源的所需状态。 然后,将负责预置和管理 AWS 资源以匹配所需状态。 ACK 这是通过使用负责管理特定 AWS 服务的生命周期的服务控制器来实现的。每个 ACK 服务控制器都打包到一个单独的容器映像中,该映像发布在与单个 ACK 服务控制器对应的公共存储库中。

没有单个 ACK 容器映像。相反,每个单独的 ACK 服务控制器都有容器映像,用于管理特定 AWS API 的资源。

这篇博文将引导您了解如何使用 SQS、DynamoDB 和 Lambda 服务控制器进行 ACK。

先决条件

要逐步操作,除了 AWS 账户外,您还需要拥有 Helm 已安装。

您可以通过多种方式创建 Amazon EKS 集群。我更喜欢使用 eksctl CLI,因为它提供了便利。使用 创建 eksctl EKS 集群非常简单:

eksctl create cluster --name my-cluster --region region-code

有关详细信息,请参阅 Amazon EKS 入门 – eksctl。

克隆此 GitHub 存储库并将其更改为正确的目录:

git clone https://github.com/abhirockzz/k8s-ack-sqs-lambda cd k8s-ack-sqs-lambda

好的,让我们开始吧!

为 AWS Lambda、SQS 和 DynamoDB 设置 ACK 服务控制器 安装ACK控制器

登录到存储 ACK 图表的 Helm 注册表:

aws ecr-public get-login-password --region us-east-1 | helm registry login --username AWS --password-stdin public.ecr.aws

使用 Helm 图表为 lambda-chart Amazon Lambda 部署 ACK 服务控制器:

RELEASE_VERSION_LAMBDA_ACK=$(curl -sL "https://api.github.com/repos/aws-controllers-k8s/lambda-controller/releases/latest" | grep '"tag_name":' | cut -d'"' -f4) helm install --create-namespace -n ack-system oci://public.ecr.aws/aws-controllers-k8s/lambda-chart "--version=${RELEASE_VERSION_LAMBDA_ACK}" --generate-name --set=aws.region=us-east-1

使用 Helm 图表部署 sqs-chart SQS 的 ACK 服务控制器:

RELEASE_VERSION_SQS_ACK=$(curl -sL "https://api.github.com/repos/aws-controllers-k8s/sqs-controller/releases/latest" | grep '"tag_name":' | cut -d'"' -f4) helm install --create-namespace -n ack-system oci://public.ecr.aws/aws-controllers-k8s/sqs-chart "--version=${RELEASE_VERSION_SQS_ACK}" --generate-name --set=aws.region=us-east-1

使用 Helm 图表部署 dynamodb-chart 适用于 DynamoDB 的 ACK 服务控制器:

RELEASE_VERSION_DYNAMODB_ACK=$(curl -sL "https://api

com/repos/aws-controllers-k8s/dynamodb-controller/releases/latest“ |格雷普 ‘“tag_name”:’ |剪切 -d’“’ -f4)

helm install –create-namespace -n ack-system oci://public.ecr.aws/aws-controllers-k8s/dynamodb-chart “–version=${RELEASE_VERSION_DYNAMODB_ACK}” –generate-name –set=aws.region=us-east-1

现在,是时候为控制器配置 IAM 权限以调用 Lambda、DynamoDB 和 SQS。

配置 IAM 权限 为您的集群创建 OIDC 身份提供商

对于以下步骤,请将 and AWS_REGION 变量替换为EKS_CLUSTER_NAME群集名称和区域。

export EKS_CLUSTER_NAME=demo-eks-cluster export AWS_REGION=us-east-1 eksctl utils associate-iam-oidc-provider --cluster $EKS_CLUSTER_NAME --region $AWS_REGION --approve OIDC_PROVIDER=$(aws eks describe-cluster --name $EKS_CLUSTER_NAME --query "cluster.identity.oidc.issuer" --output text | cut -d '/' -f2- | cut -d '/' -f2-)

为 Lambda、SQS 和 DynamoDB ACK 服务控制器创建 IAM 角色 ACK Lambda 控制器

设置以下环境变量:

ACK_K8S_SERVICE_ACCOUNT_NAME=ack-lambda-controller ACK_K8S_NAMESPACE=ack-system AWS_ACCOUNT_ID=$(aws sts get-caller-identity --query "Account" --output text)

为 IAM 角色创建信任策略:

read -r -d '' TRUST_RELATIONSHIP


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有