Kubernetes で Lambda を使用する - AWS Lambda

Kubernetes で Lambda を使用する

AWS Controllers for Kubernetes (ACK) または Crossplane を使用して、Kubernetes API で Lambda 関数をデプロイおよび管理できます。

AWS Controllers for Kubernetes (ACK)

ACK を使用すると、Kubernetes API からの AWS リソースのデプロイおよび管理を行うことができます。ACK を通じて、 AWSは Lambda、Amazon Elastic Container Registry (Amazon ECR)、Amazon Simple Storage Service (Amazon S3)、Amazon などのAWSサービス用のオープンソースのカスタムコントローラーを提供します SageMaker。サポートされている各 AWS サービスには、独自のカスタムコントローラーがあります。Kubernetes クラスターに、使用する各 AWS サービス用のコントローラーをインストールします。次に、カスタムリソース定義 (CRD) を作成して、AWS リソースを定義します。

Helm 3.8 またはそれ以降を使用して ACK コントローラーをインストールすることをお勧めします。すべての ACK コントローラーには、コントローラー、CRD、および Kubernetes RBAC ルールをインストールする独自の Helm チャートが付属しています。詳細については、「ACK ドキュメント」の「Install an ACK Controller」を参照してください。

ACK カスタムリソースは、作成後、他の組み込み Kubernetes オブジェクトと同様に使用できます。例えば、kubectl などのお好みの Kubernetes ツールチェーンで Lambda 関数をデプロイして管理できます。

ACK を使用して Lambda 関数をプロビジョニングするユースケースの例を次に示します。

  • 組織で ロールベースアクセス制御 (RBAC) およびサービスアカウントの IAM ロールを使用して、アクセス許可の境界を作成する。ACK を使用すると、新しいユーザーやポリシーを作成しなくても、このセキュリティモデルを Lambda に再利用できます。

  • 組織には、Kubernetes マニフェストを使用して Amazon Elastic Kubernetes Service (Amazon EKS) クラスターにリソースをデプロイする DevOps プロセスがあります。ACK を使用すると、コードテンプレートとして個別のインフラストラクチャを作成しなくても、マニフェストを使用して Lambda 関数をプロビジョニングできます。

ACK の使用に関する詳細については、ACK ドキュメントの Lambda チュートリアルを参照してください。

Crossplane

Crossplane は、Kubernetes を使用してクラウドインフラストラクチャリソースを管理する、クラウドネイティブコンピューティング財団 (CNCF) のオープンソースのプロジェクトです。Crossplane を使用すると、デベロッパーはインフラストラクチャの複雑さを理解しなくてもインフラストラクチャをリクエストできます。プラットフォームチームは、インフラストラクチャのプロビジョニングおよび管理方法を制御できます。

Crossplane を使用すると、Kubernetes にマニフェストをデプロイできる任意の CI/CD パイプラインや kubectl のようなお好みの Kubernetes ツールチェーンで Lambda 関数をデプロイして管理できます。Crossplane を使用して Lambda 関数をプロビジョニングするユースケースの例を次に示します。

  • 組織が、Lambda 関数に正しいタグがあることを確認することでコンプライアンスを強化したいと考えている。プラットフォームチームは、Crossplane Compositions を使用し、API 抽象化を通じてこのポリシーを定義できます。その後、デベロッパーはこれらの抽象化を使用してタグ付きの Lambda 関数をデプロイできます。

  • プロジェクトでは、Kubernetes GitOps で を使用します。このモデルでは、Kubernetes は git リポジトリ (望ましい状態) とクラスター内で実行されているリソース (現在の状態) を継続的に照合します。違いがある場合、 GitOps プロセスは自動的にクラスターを変更します。Kubernetes GitOps で を使用すると、CRDsControllers などの使い慣れた Kubernetes ツールと概念を使用します。

Lambda で Crossplane を使用する方法の詳細については、次を参照してください。

  • AWS Blueprints for Crossplane: このリポジトリには、Crossplane を使用して Lambda 関数などの AWS リソースをデプロイする方法の例が含まれています。

    注記

    AWS Blueprints for Crossplane は現在開発中であり、本番環境では使用することはできません。

  • Deploying Lambda with Amazon EKS and Crossplane: この動画では、Crossplane を使用した AWS サーバーレスアーキテクチャの高度なデプロイの例が紹介されており、デベロッパーとプラットフォームの両方の観点から設計が検討されています。