将 Lambda 与 Kubernetes 结合使用
您可以使用 AWS Controllers for Kubernetes(ACK)
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)
我们建议您使用 Helm 3.8 或更高版本
创建 ACK 自定义资源后,您可以像使用任何其他内置 Kubernetes 对象一样使用此资源。例如,您可以使用首选的 Kubernetes 工具链(包括 kubectl
以下是通过 ACK 预置 Lambda 函数的示例用例:
-
您的组织使用基于角色的访问控制(RBAC)
和服务账户的 IAM 角色来创建权限边界。借助 ACK,您可以为 Lambda 重用此安全模型,而无需创建新用户和策略。 -
您的组织有一个 DevOps 流程,可以使用 Kubernetes 清单将资源部署到 Amazon Elastic Kubernetes Service(Amazon EKS)集群中。借助 ACK,您可以使用清单来配置 Lambda 函数,而无需创建单独的基础架构作为代码模板。
有关使用 ACK 的更多信息,请参阅 ACK 文档中的 Lambda 教程
Crossplane
Crossplane
借助 Crossplane,您可以使用首选的 Kubernetes 工具链(例如 kubectl
-
您的组织想要通过确保 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 无服务器架构的高级示例,从开发人员和平台两方的角度探索设计。