12.2. func.yaml ファイルを使用した関数プロジェクトの設定
func.yaml ファイルには、関数プロジェクトの設定が含まれます。kn func コマンドを実行すると、func.yaml に指定された値が使用されます。たとえば、kn func build コマンドを実行すると、build フィールドの値が使用されます。一部のケースでは、この値はコマンドラインフラグまたは環境変数で上書きできます。
12.2.1. func.yaml フィールドからのローカル環境変数の参照 リンクのコピーリンクがクリップボードにコピーされました!
API キーなどの機密情報を関数設定に保存したくない場合は、ローカル環境で使用可能な環境変数への参照を追加できます。これを行うには、func.yaml ファイルの envs フィールドを変更します。
前提条件
- 関数プロジェクトを作成する必要があります。
- ローカル環境には、参照する変数が含まれている必要があります。
手順
ローカル環境変数を参照するには、以下の構文を使用します。
{{ env:ENV_VAR }}{{ env:ENV_VAR }}Copy to Clipboard Copied! Toggle word wrap Toggle overflow ENV_VARを、使用するローカル環境の変数の名前に置き換えます。たとえば、ローカル環境で
API_KEY変数が利用可能な場合があります。その値をMY_API_KEY変数に割り当てることができます。これにより、関数内で直接使用できます。関数の例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
12.2.2. アノテーションの関数への追加 リンクのコピーリンクがクリップボードにコピーされました!
デプロイされたサーバーレス機能に Kubernetes アノテーションを追加できます。アノテーションを使用すると、関数の目的に関するメモなど、任意のメタデータを関数に添付できます。アノテーションは、func.yaml 設定ファイルの annotations セクションに追加されます。
関数アノテーション機能には、以下の 2 つの制限があります。
-
関数アノテーションがクラスター上の対応する Knative サービスに伝播されてからは、
func.yamlファイルから削除してもサービスから削除することができません。サービスの YAML ファイルを直接変更するか、OpenShift Container Platform Web コンソールを使用して、Knative サービスからアノテーションを削除する必要があります。 -
autoscalingアノテーションなど、Knative によって設定されるアノテーションを設定することはできません。
12.2.3. 関数へのアノテーションの追加 リンクのコピーリンクがクリップボードにコピーされました!
関数にアノテーションを追加できます。ラベルと同様に、アノテーションはキーと値のマップとして定義されます。アノテーションは、関数の作成者など、関数に関するメタデータを提供する場合などに役立ちます。
前提条件
- OpenShift Serverless Operator および Knative Serving がクラスターにインストールされている。
-
Knative (
kn) CLI がインストールされている。 - 関数を作成している。
手順
-
関数の
func.yamlファイルを開きます。 追加するすべてのアノテーションについて、以下の YAML を
annotationsセクションに追加します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
<annotation_name>: "<annotation_value>"をお使いのアノテーションに置き換えます。
たとえば、関数が Alice によって作成者されたことを示すには、以下のアノテーションを含めることができます。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 設定を保存します。
次に関数をクラスターにデプロイすると、アノテーションが対応する Knative サービスに追加されます。
12.2.5. シークレットおよび Config Map への関数アクセスの手動による追加 リンクのコピーリンクがクリップボードにコピーされました!
シークレットおよび Config Map にアクセスするための設定を手動で関数に追加できます。これは、既存の設定スニペットがある場合などに、kn func config 対話型ユーティリティーとコマンドを使用するよりも望ましい場合があります。
12.2.5.1. シークレットのボリュームとしてのマウント リンクのコピーリンクがクリップボードにコピーされました!
シークレットをボリュームとしてマウントできます。シークレットがマウントされると、関数から通常のファイルとしてアクセスできます。これにより、関数がアクセスする必要がある URI のリストなど、関数が必要とするデータをクラスターに格納できます。
前提条件
- OpenShift Serverless Operator および Knative Serving がクラスターにインストールされている。
-
Knative (
kn) CLI がインストールされている。 - 関数を作成している。
手順
-
関数の
func.yamlファイルを開きます。 ボリュームとしてマウントするシークレットごとに、以下の YAML を
volumesセクションに追加します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
mysecretをターゲットシークレットの名前に置き換えます。 /workspace/secretは、シークレットをマウントするパスに置き換えます。たとえば、
addressesシークレットをマウントするには、次の YAML を使用します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
- 設定を保存します。
12.2.5.2. Config Map のボリュームとしてのマウント リンクのコピーリンクがクリップボードにコピーされました!
Config Map をボリュームとしてマウントできます。Config Map がマウントされると、関数から通常のファイルとしてアクセスできます。これにより、関数がアクセスする必要がある URI のリストなど、関数が必要とするデータをクラスターに格納できます。
前提条件
- OpenShift Serverless Operator および Knative Serving がクラスターにインストールされている。
-
Knative (
kn) CLI がインストールされている。 - 関数を作成している。
手順
-
関数の
func.yamlファイルを開きます。 ボリュームとしてマウントする Config Map ごとに、以下の YAML を
volumesセクションに追加します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
myconfigmapをターゲット Config Map の名前に置き換えます。 /workspace/configmapは、Config Map をマウントするパスに置き換えます。たとえば、
addressesconfig map をマウントするには、次の YAML を使用します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
- 設定を保存します。
12.2.5.3. シークレットで定義されるキー値からの環境変数の設定 リンクのコピーリンクがクリップボードにコピーされました!
シークレットとして定義されたキー値から環境変数を設定できます。以前にシークレットに保存されていた値は、実行時に環境変数として関数がアクセスできます。これは、ユーザーの ID など、シークレットに格納されている値にアクセスする場合に役立ちます。
前提条件
- OpenShift Serverless Operator および Knative Serving がクラスターにインストールされている。
-
Knative (
kn) CLI がインストールされている。 - 関数を作成している。
手順
-
関数の
func.yamlファイルを開きます。 環境変数に割り当てる秘密鍵と値のペアからの値ごとに、以下の YAML を
envsセクションに追加します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
EXAMPLEを環境変数の名前に置き換えます。 -
mysecretをターゲットシークレットの名前に置き換えます。 keyをターゲット値にマッピングしたキーに置き換えます。たとえば、
userdetailssecretに保存されているユーザー ID にアクセスするには、次の YAML を使用します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
- 設定を保存します。
12.2.5.4. Config Map で定義されるキー値からの環境変数の設定 リンクのコピーリンクがクリップボードにコピーされました!
config map として定義されたキー値から環境変数を設定できます。以前に config map に格納されていた値は、実行時に環境変数として関数がアクセスできます。これは、ユーザーの ID など、config map に格納されている値にアクセスするのに役立ちます。
前提条件
- OpenShift Serverless Operator および Knative Serving がクラスターにインストールされている。
-
Knative (
kn) CLI がインストールされている。 - 関数を作成している。
手順
-
関数の
func.yamlファイルを開きます。 環境変数に割り当てる Config Map のキーと値のペアからの値ごとに、以下の YAML を
envsセクションに追加します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
EXAMPLEを環境変数の名前に置き換えます。 -
myconfigmapをターゲット Config Map の名前に置き換えます。 keyをターゲット値にマッピングしたキーに置き換えます。たとえば、
userdetailsmapに格納されているユーザー ID にアクセスするには、次の YAML を使用します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
- 設定を保存します。
12.2.5.5. シークレットで定義されたすべての値からの環境変数の設定 リンクのコピーリンクがクリップボードにコピーされました!
シークレットで定義されているすべての値から環境変数を設定できます。以前にシークレットに保存されていた値は、実行時に環境変数として関数がアクセスできます。これは、シークレットに格納されている値のコレクション (ユーザーに関する一連のデータなど) に同時にアクセスする場合に役立ちます。
前提条件
- OpenShift Serverless Operator および Knative Serving がクラスターにインストールされている。
-
Knative (
kn) CLI がインストールされている。 - 関数を作成している。
手順
-
関数の
func.yamlファイルを開きます。 すべてのキーと値のペアを環境変数としてインポートするすべてのシークレットについて、以下の YAML を
envsセクションに追加します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
mysecretをターゲットシークレットの名前に置き換えます。
たとえば、
userdetailssecretに保存されているすべてのユーザー データにアクセスするには、次の YAML を使用します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 設定を保存します。
12.2.5.6. Config Map で定義されたすべての値からの環境変数の設定 リンクのコピーリンクがクリップボードにコピーされました!
config map で定義されたすべての値から環境変数を設定できます。以前に config map に格納されていた値は、実行時に環境変数として関数がアクセスできます。これは、config map に格納されている値のコレクション (ユーザーに関する一連のデータなど) に同時にアクセスする場合に役立ちます。
前提条件
- OpenShift Serverless Operator および Knative Serving がクラスターにインストールされている。
-
Knative (
kn) CLI がインストールされている。 - 関数を作成している。
手順
-
関数の
func.yamlファイルを開きます。 すべてのキーと値のペアを環境変数としてインポートするすべての Config Map について、以下の YAML を
envsセクションに追加します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
myconfigmapをターゲット Config Map の名前に置き換えます。
たとえば、
userdetailsmapに保存されているすべてのユーザー データにアクセスするには、次の YAML を使用します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - ファイルを保存します。