Kubernetes ワークロードの使用

Working with Serverless Functions

Objectives

After completing this lesson, you will be able to:
  • サーバレス機能の説明
  • サーバレスの機能を使用するための適切なシナリオの特定
  • さまざまなメソッドを使用したサーバレス関数の呼び出し
  • サーバレス機能の作成

サーバレス機能の概要

サーバレスの機能の概要

関数は、Kyma が提供するワークロードタイプです。"サーバレス" は、サーバまたはインフラストラクチャが関与しないことを意味します。しかし、それは間違っている。単にサードパーティがサーバを管理することを意味し、心配する必要はありません。関数のコードに焦点を当てることができます。

技術的には、Kyma の関数はデプロイメントやサービスなどの複数の Kubernetes リソースに依存します。

そのため、Kyma のサーバレス関数を使用すると、コンテナイメージまたはインフラストラクチャを提供および更新せずにコードスニペットを実行できます。コンテナに基づくデプロイメントと同様に、関数もイベントに合わせて拡張、公開、およびサブスクライブできます。

サーバレス機能のメリットとデメリット

長所
  • サーバレス関数は、アプリケーションの実装および運用の労力を削減する場合に役立ちます。あなたは、コードと関数の依存関係のみを考慮します。Kyma により、残りが管理されます。これにより、コードのデプロイメントが迅速になります。
  • 開発者は、完全なアプリケーションを設定することなく、軽量なサーバレス機能をデプロイできるため、迅速なプロトタイピングが可能になります。機能では、サービスバインディングによる SAP BTP サービスとのシームレスな統合がサポートされるため、SAP HANA、Event Mesh、オブジェクトストアなどの機能を簡単に利用できます。これにより、チームは SAP BTP エコシステム内でより迅速に実験および反復できるため、イノベーションが加速されます。
  • サーバレス関数では、非同期プログラミングモデルもサポートされ、イベントプロデューサとコンシューマの疎結合が提供されます。
短所
  • ただし、サーバレスの関数は、Kyma でサポートされているランタイム環境に制限されます。自己管理コンテナでは、任意の言語および環境を使用することができます。
  • 関数も仕入先固有です。つまり、特定のプロバイダ専用の機能を開発する必要があります。その結果、コンテナと比較して、機能のポータブル性は低くなります。

サーバレス関数の呼び出し

以下の表は、関数を呼び出すための 2 つの異なる方法を示しています。

関数の呼び出し

呼出方法内容説明
HTTPHTTP 要求によって、関数が呼び出されます。最初にエンドポイントを公開する必要があります。
イベント関数はイベントによって呼び出されます。

以下の図は、イベントが関数を呼び出す方法を示しています。

Kyma を使用した Kubernetes クラスタ内のイベント駆動型アーキテクチャ。ここには、プロキシにイベントを送信する Event Publisher が表示されます。これにより、サーバレス機能をトリガするイベントコントローラにイベントが転送されます。

サーバレスの関数の作成

関数を作成するには、YAML ファイルで関数マニフェストを宣言するか、Kyma ダッシュボードのビジュアルエディタを使用します。ビジュアルエディタにより、関数マニフェストが生成されます。

機能マニフェストの説明

Kyma では、Node.js および Python で関数を作成できます。Kyma により、このワークロードタイプのカスタムリソース (CR) で Kubernetes が拡張されます。

簡単な v1alhpa2 の例については、YAML の関数マニフェスト (バージョン hello-kyma-function) を参照してください。

Code Snippet
1234567891011121314151617181920212223242526272829
apiVersion: serverless.kyma-project.io/v1alpha2 kind: Function metadata: name: hello-kyma-function labels: app: hello-kyma-function spec: runtime: nodejs22 source: inline: dependencies: | { "name": "hello-kyma-function", "version": "1.0.0", "dependencies": {} } source: |- module.exports = { main: async function (event, context) { const message = `Hello ` + process.env.NAME + ` from the Kyma Function ${context["function-name"]}` + ` running on ${context.runtime}!`; console.log(message); return message; } } env: - name: NAME value: "Kyma"

注記

関数マニフェストでは、${context["function-name"]} は Kyma によって挿入されるランタイム変数です。これには、関数の名前が含まれます。これは、先ほど述べたベンダーロックインの例です。このようなコンポーネントを使用すると、コードの移植性が低下します。

以下の表は、マニフェストのさまざまな項目を示しています。

関数マニフェストのフィールド

項目内容説明
apiVersionカスタムリソースのバージョン。
種類カスタムリソースの種類。
メタデータカスタムリソースのメタデータ。
仕様カスタムリソースの仕様

マニフェストの spec の部分を分類します。

機能 CR 固有

項目内容説明
指定実行時間関数の実行時間。たとえば、nodejs22、nodejs20、python312 などです。
spec.source関数のソースコード設定。たとえば、inline や gitRepository などです。
spec.source.inline関数 CR で直接定義される、インラインで定義された関数の完全なソースコード。
spec.source.dependencies関数の依存関係。
spec.env関数の環境変数として使用されるキーと値のペアの配列。

関数の設定に使用できるフィールドが他にも多数あります。項目の完全な一覧を取得するには、機能 CR の文書を参照してください。

サマリ

サーバレス関数は、データの処理やイベントへの応答など、実行するコードを減らす場合に適しています。軽量機能をデプロイし、それらを SAP BTP サービスと統合することで、新しいアイデアを迅速にプロトタイプ化することができます。関数では、イベント駆動型アーキテクチャもサポートされ、コードの迅速なデプロイメントが確保されます。ただし、関数がベンダ固有であり、Kyma のサポートされているランタイム環境に制限されていることを考慮する必要があります。