11.2. 関数を使い始める
関数のライフサイクル管理には、関数の作成、構築、デプロイが含まれます。必要に応じて、デプロイされた関数を呼び出してテストすることもできます。これらの操作はすべて、kn func
ツールを使用して OpenShift Serverless で実行できます。
11.2.1. 前提条件
以下の手順を実行する前に、OpenShift Serverless 機能の設定の要件タスクをすべて完了している必要があります。
11.2.2. 関数の作成
関数をビルドし、デプロイする前に、Knative (kn
) CLI を使用して関数を作成する必要があります。コマンドラインでパス、ランタイム、テンプレート、およびイメージレジストリーをフラグとして指定するか、-c
フラグを使用してターミナルで対話型エクスペリエンスを開始できます。
前提条件
- OpenShift Serverless Operator および Knative Serving がクラスターにインストールされている。
-
Knative (
kn
) CLI をインストールしている。
手順
関数プロジェクトを作成します。
$ kn func create -r <repository> -l <runtime> -t <template> <path>
-
受け入れられるランタイム値には、
quarkus
、node
、typescript
、go
、python
、springboot
、およびrust
が含まれます。 受け入れられるテンプレート値には、
http
とcloudevents
が含まれます。コマンドの例
$ kn func create -l typescript -t cloudevents examplefunc
出力例
Created typescript function in /home/user/demo/examplefunc
または、カスタムテンプレートを含むリポジトリーを指定することもできます。
コマンドの例
$ kn func create -r https://github.com/boson-project/templates/ -l node -t hello-world examplefunc
出力例
Created node function in /home/user/demo/examplefunc
-
受け入れられるランタイム値には、
11.2.3. 機能をローカルで実行する
kn func run
コマンドを使用して、現在のディレクトリーまたは --path
フラグで指定されたディレクトリーで機能をローカルに実行できます。実行している関数が以前にビルドされたことがない場合、またはプロジェクトファイルが最後にビルドされてから変更されている場合、kn func run
コマンドは、既定で関数を実行する前に関数をビルドします。
現在のディレクトリーで機能を実行するコマンドの例
$ kn func run
パスとして指定されたディレクトリーで機能を実行するコマンドの例
$ kn func run --path=<directory_path>
--build
フラグを使用して、プロジェクトファイルに変更がなくても、機能を実行する前に既存のイメージを強制的に再構築することもできます。
ビルドフラグを使用した実行コマンドの例
$ kn func run --build
ビルド
フラグを false に設定すると、イメージのビルドが無効になり、以前にビルドされたイメージを使用して機能が実行されます。
ビルドフラグを使用した実行コマンドの例
$ kn func run --build=false
help コマンドを使用して、kn func run
コマンドオプションの詳細を確認できます。
help コマンドの構築
$ kn func help run
11.2.4. 関数のビルド
関数を実行する前に、関数プロジェクトをビルドする必要があります。kn func run
コマンドを使用している場合、関数は自動的に構築されます。ただし、kn func build
コマンドを使用すると、実行せずに関数をビルドできます。これは、上級ユーザーやデバッグシナリオに役立ちます。
kn func build
は、コンピューターまたは OpenShift Container Platform クラスターでローカルに実行できる OCI コンテナーイメージを作成します。このコマンドは、関数プロジェクト名とイメージレジストリー名を使用して、関数の完全修飾イメージ名を作成します。
11.2.4.1. イメージコンテナーの種類
デフォルトでは、kn func build
は、Red Hat Source-to-Image (S2I) テクノロジーを使用してコンテナーイメージを作成します。
Red Hat Source-to-Image (S2I) を使用したビルドコマンドの例
$ kn func build
11.2.4.2. イメージレジストリーの種類
OpenShift Container Registry は、関数イメージを保存するためのイメージレジストリーとしてデフォルトで使用されます。
OpenShift Container Registry を使用したビルドコマンドの例
$ kn func build
出力例
Building function image Function image has been built, image: registry.redhat.io/example/example-function:latest
--registry
フラグを使用して、OpenShift Container Registry をデフォルトのイメージレジストリーとして使用することをオーバーライドできます。
quay.io を使用するように OpenShift Container Registry をオーバーライドするビルドコマンドの例
$ kn func build --registry quay.io/username
出力例
Building function image Function image has been built, image: quay.io/username/example-function:latest
11.2.4.3. Push フラグ
--push
フラグを kn func build
コマンドに追加して、正常にビルドされた後に関数イメージを自動的にプッシュできます。
OpenShift Container Registry を使用したビルドコマンドの例
$ kn func build --push
11.2.4.4. Help コマンド
kn func build
コマンドオプションの詳細については、help コマンドを使用できます。
help コマンドの構築
$ kn func help build
11.2.5. 関数のデプロイ
kn func deploy
コマンドを使用して、関数を Knative サービスとしてクラスターにデプロイできます。ターゲット関数がすでにデプロイされている場合には、コンテナーイメージレジストリーにプッシュされている新規コンテナーイメージで更新され、Knative サービスが更新されます。
前提条件
- OpenShift Serverless Operator および Knative Serving がクラスターにインストールされている。
-
Knative (
kn
) CLI をインストールしている。 - OpenShift Container Platform でアプリケーションおよび他のワークロードを作成するために、プロジェクトを作成しているか、適切なロールおよびパーミッションを持つプロジェクトにアクセスできる。
- デプロイする関数を作成し、初期化している必要がある。
手順
関数をデプロイします。
$ kn func deploy [-n <namespace> -p <path> -i <image>]
出力例
Function deployed at: http://func.example.com
-
namespace
が指定されていない場合には、関数は現在の namespace にデプロイされます。 -
この関数は、
パス
が指定されない限り、現在のディレクトリーからデプロイされます。 - Knative サービス名はプロジェクト名から派生するので、以下のコマンドでは変更できません。
-
11.2.6. テストイベントでのデプロイされた関数の呼び出し
kn func invoke
CLI コマンドを使用して、ローカルまたは OpenShift Container Platform クラスター上で関数を呼び出すためのテストリクエストを送信できます。このコマンドを使用して、関数が機能し、イベントを正しく受信できることをテストできます。関数をローカルで呼び出すと、関数開発中の簡単なテストに役立ちます。クラスターで関数を呼び出すと、実稼働環境に近いテストに役立ちます。
前提条件
- OpenShift Serverless Operator および Knative Serving がクラスターにインストールされている。
-
Knative (
kn
) CLI をインストールしている。 - OpenShift Container Platform でアプリケーションおよび他のワークロードを作成するために、プロジェクトを作成しているか、適切なロールおよびパーミッションを持つプロジェクトにアクセスできる。
- 呼び出す関数をすでにデプロイしている必要があります。
手順
関数を呼び出します。
$ kn func invoke
-
kn func invoke
コマンドは、ローカルのコンテナーイメージが実行中の場合や、クラスターにデプロイされた関数がある場合にのみ機能します。 -
kn func invoke
コマンドは、デフォルトでローカルディレクトリーで実行され、このディレクトリーが関数プロジェクトであると想定します。
-
11.2.7. 関数の削除
kn func delete
コマンドを使用して関数を削除できます。これは、関数が不要になった場合に役立ち、クラスターのリソースを節約するのに役立ちます。
手順
関数を削除します。
$ kn func delete [<function_name> -n <namespace> -p <path>]
-
削除する関数の名前またはパスが指定されていない場合には、現在のディレクトリーで
func.yaml
ファイルを検索し、削除する関数を判断します。 -
namespace が指定されていない場合には、
func.yaml
のnamespace
の値にデフォルト設定されます。
-
削除する関数の名前またはパスが指定されていない場合には、現在のディレクトリーで
11.2.8. 関連情報
11.2.9. 次のステップ
- Knative Eventing でのチャネルの使用 を参照してください。