搭配 Kubernetes 使用 Lambda - AWS Lambda

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

搭配 Kubernetes 使用 Lambda

您可以使用 Kubernetes 專用 AWS 控制器 (ACK)Crossplane,透過 Kubernetes API 來部署和管理 Lambda 函數。

Kubernetes 專用 AWS 控制器 (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 Chart,這會安裝控制器、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) 以及任何可將清單檔案部署到 Kubernetes 的 CI/CD 管道,部署和管理 Lambda 函數。以下是一些透過 Crossplane 佈建 Lambda 函數的範例使用案例:

  • 您的組織希望確保 Lambda 函數具有正確標籤來強制遵循法規。平台團隊可以使用 Crossplane 组合,透過 API 抽象來定義此政策。開發人員隨後可以使用這些抽象來部署具標籤的 Lambda 函數。

  • 您的專案搭配 Kubernetes 使用 GITOps。在此模型中,Kubernetes 會持續協調 git 儲存庫 (所需狀態) 與叢集內執行的資源 (目前狀態)。如果有差異,GITOps 程序會自動變更叢集。您可以搭配 Kubernetes 使用 GITOps,利用諸如 CRD控制器的熟悉 Kubernetes 工具和概念,透過 Crossplane 來部署和管理 Lambda 函數。

若要進一步了解如何搭配 Lambda 使用 Crossplane,請參閱下列內容:

  • AWS Blueprints for Crossplane:此儲存庫包括如何使用 Crossplane 部署 AWS 資源 (包括 Lambda 函數) 的範例。

    注意

    目前正在積極開發 AWS Blueprints for Crossplane,因此不得用於生產環境。

  • 使用 Amazon EKS 和 Crossplane 部署 Lambda:此影片展示透過 Crossplane 部署 AWS 無伺服器架構的進階範例,並從開發人員和平台的角度探索設計。