Kubernetes で Lambda を使用する
AWS Controllers for Kubernetes (ACK)
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)
Helm 3.8 またはそれ以降
ACK カスタムリソースは、作成後、他の組み込み Kubernetes オブジェクトと同様に使用できます。例えば、kubectl
ACK を使用して Lambda 関数をプロビジョニングするユースケースの例を次に示します。
-
組織で ロールベースアクセス制御 (RBAC)
およびサービスアカウントの IAM ロールを使用して、アクセス許可の境界を作成する。ACK を使用すると、新しいユーザーやポリシーを作成しなくても、このセキュリティモデルを Lambda に再利用できます。 -
組織には、Kubernetes マニフェストを使用して Amazon Elastic Kubernetes Service (Amazon EKS) クラスターにリソースをデプロイする DevOps プロセスがあります。ACK を使用すると、コードテンプレートとして個別のインフラストラクチャを作成しなくても、マニフェストを使用して Lambda 関数をプロビジョニングできます。
ACK の使用に関する詳細については、ACK ドキュメントの Lambda チュートリアル
Crossplane
Crossplane
Crossplane を使用すると、Kubernetes にマニフェストをデプロイできる任意の CI/CD パイプラインや kubectl
-
組織が、Lambda 関数に正しいタグがあることを確認することでコンプライアンスを強化したいと考えている。プラットフォームチームは、Crossplane Compositions
を使用し、API 抽象化を通じてこのポリシーを定義できます。その後、デベロッパーはこれらの抽象化を使用してタグ付きの Lambda 関数をデプロイできます。 -
プロジェクトでは、Kubernetes GitOps で を使用します。このモデルでは、Kubernetes は git リポジトリ (望ましい状態) とクラスター内で実行されているリソース (現在の状態) を継続的に照合します。違いがある場合、 GitOps プロセスは自動的にクラスターを変更します。Kubernetes GitOps で を使用すると、CRDs
や Controllers などの使い慣れた Kubernetes ツールと概念を使用します。
Lambda で Crossplane を使用する方法の詳細については、次を参照してください。
-
AWS Blueprints for Crossplane
: このリポジトリには、Crossplane を使用して Lambda 関数などの AWS リソースをデプロイする方法の例が含まれています。 注記
AWS Blueprints for Crossplane は現在開発中であり、本番環境では使用することはできません。
-
Deploying Lambda with Amazon EKS and Crossplane
: この動画では、Crossplane を使用した AWS サーバーレスアーキテクチャの高度なデプロイの例が紹介されており、デベロッパーとプラットフォームの両方の観点から設計が検討されています。