将 Lambda 与 Kubernetes 结合使用 - AWS Lambda

将 Lambda 与 Kubernetes 结合使用

您可以使用 AWS Controllers for Kubernetes(ACK) 或 Crossplane 通过 Kubernetes API 部署和管理 Lambda 函数。

AWS Controllers for Kubernetes(ACK)

您可以使用 ACK 部署和管理来自 Kubernetes API 的 AWS 资源。通过 ACK,AWS 为 AWS 服务 [例如 Lambda、Amazon Elastic Container Registry(Amazon ECR)、Amazon Simple Storage Service(Amazon S3)和 Amazon SageMaker AI] 提供开源自定义控制器。每个支持的 AWS 服务有自己的自定义控制器。在您的 Kubernetes 集群中,为每个您要使用的 AWS 服务安装控制器。然后,创建自定义资源定义(CRD)来定义 AWS 资源。

我们建议您使用 Helm 3.8 或更高版本安装 ACK 控制器。每个 ACK 控制器都有自己的 Helm 图表,用于安装控制器、CRD 和 Kubernetes RBAC 规则。有关更多信息,请参阅 ACK  文档中的 Install an ACK Controller

创建 ACK 自定义资源后,您可以像使用任何其他内置 Kubernetes 对象一样使用此资源。例如,您可以使用首选的 Kubernetes 工具链(包括 kubectl)部署和管理 Lambda 函数。

以下是通过 ACK 预置 Lambda 函数的示例用例:

  • 您的组织使用基于角色的访问控制(RBAC)服务账户的 IAM 角色来创建权限边界。借助 ACK,您可以为 Lambda 重用此安全模型,而无需创建新用户和策略。

  • 您的组织有一个 DevOps 流程,可以使用 Kubernetes 清单将资源部署到 Amazon Elastic Kubernetes Service(Amazon EKS)集群中。借助 ACK,您可以使用清单来配置 Lambda 函数,而无需创建单独的基础架构作为代码模板。

有关使用 ACK 的更多信息,请参阅 ACK 文档中的 Lambda 教程

Crossplane

Crossplane 是一个开源云原生计算基金会(CNCF)项目,其使用 Kubernetes 来管理云基础设施资源。借助 Crossplane,开发人员可以请求基础设施,而无需了解其复杂性。平台团队保留对基础设施的预置和管理方式的控制。

借助 Crossplane,您可以使用首选的 Kubernetes 工具链(例如 kubectl)部署和管理 Lambda 函数,以及任何可以将清单部署到 Kubernetes 的 CI/CD 管道。以下是通过 Crossplane 预置 Lambda 函数的示例用例:

  • 您的组织想要通过确保 Lambda 函数具有正确的标签来强制实施合规性。平台团队可以使用 Crossplane Compositions 通过 API 抽象来定义此策略。然后,开发人员可以使用这些抽象来部署带标签的 Lambda 函数。

  • 您的项目使用将 GitOps 和 Kubernetes 结合使用。在此模型中,Kubernetes 不断将 git 存储库(所需状态)与集群内运行的资源(当前状态)进行协调。如果存在差异,GitOps 流程会自动对集群进行更改。您可以将 GitOps 与 Kubernetes 结合使用,以便借助 CRD 和控制器等熟悉的 Kubernetes 工具和概念,通过 Crossplane 部署和管理 Lambda 函数。

要了解将 Crossplane 与 Lambda 结合使用的更多信息,请参阅以下内容:

  • AWS Blueprints for Crossplane:此存储库包含如何使用 Crossplane 部署 AWS 资源(包括 Lambda 函数)的示例。

    注意

    AWS Blueprints for Crossplane 正在积极开发中,不应用于生产。

  • 使用 Amazon EKS 和 Crossplane 部署 Lambda:此视频演示了使用 Crossplane 部署 AWS 无服务器架构的高级示例,从开发人员和平台两方的角度探索设计。