13.2. func.yaml ファイルを使用した関数プロジェクトの設定


func.yaml ファイルには、関数プロジェクトの設定が含まれます。kn func コマンドを実行すると、func.yaml に指定された値が使用されます。たとえば、kn func build コマンドを実行すると、build フィールドの値が使用されます。一部のケースでは、この値はコマンドラインフラグまたは環境変数で上書きできます。

13.2.1. func.yaml フィールドからのローカル環境変数の参照

API キーなどの機密情報を関数設定に保存したくない場合は、ローカル環境で使用可能な環境変数への参照を追加できます。これを行うには、func.yaml ファイルの envs フィールドを変更します。

前提条件

  • 関数プロジェクトを作成する必要があります。
  • ローカル環境には、参照する変数が含まれている必要があります。

手順

  • ローカル環境変数を参照するには、以下の構文を使用します。

    {{ env:ENV_VAR }}

    ENV_VAR を、使用するローカル環境の変数の名前に置き換えます。

    たとえば、ローカル環境で API_KEY 変数が利用可能な場合があります。その値を MY_API_KEY 変数に割り当てることができます。これにより、関数内で直接使用できます。

    関数の例

    name: test
    namespace: ""
    runtime: go
    ...
    envs:
    - name: MY_API_KEY
      value: '{{ env:API_KEY }}'
    ...

13.2.2. アノテーションの関数への追加

デプロイされた Serverless 関数に Kubernetes アノテーションを追加できます。アノテーションを使用すると、関数の目的に関するメモなど、任意のメタデータを関数に添付できます。アノテーションは、func.yaml 設定ファイルの annotations セクションに追加されます。

関数アノテーション機能には、以下の 2 つの制限があります。

  • 関数アノテーションがクラスター上の対応する Knative サービスに伝播されてからは、func.yaml ファイルから削除してもサービスから削除することができません。サービスの YAML ファイルを直接変更するか、OpenShift Container Platform Web コンソールを使用して、Knative サービスからアノテーションを削除する必要があります。
  • autoscaling アノテーションなど、Knative によって設定されるアノテーションを設定することはできません。

13.2.3. 関数へのアノテーションの追加

関数にアノテーションを追加できます。ラベルと同様に、アノテーションはキーと値のマップとして定義されます。アノテーションは、関数の作成者など、関数に関するメタデータを提供する場合などに役立ちます。

前提条件

  • OpenShift Serverless Operator および Knative Serving がクラスターにインストールされている。
  • Knative (kn) CLI がインストールされている。
  • 関数を作成している。

手順

  1. 関数の func.yaml ファイルを開きます。
  2. 追加するすべてのアノテーションについて、以下の YAML を annotations セクションに追加します。

    name: test
    namespace: ""
    runtime: go
    ...
    annotations:
      <annotation_name>: "<annotation_value>" 1
    1
    <annotation_name>: "<annotation_value>" をお使いのアノテーションに置き換えます。

    たとえば、関数が Alice によって作成者されたことを示すには、以下のアノテーションを含めることができます。

    name: test
    namespace: ""
    runtime: go
    ...
    annotations:
      author: "alice@example.com"
  3. 設定を保存します。

次に関数をクラスターにデプロイすると、アノテーションが対応する Knative サービスに追加されます。

13.2.4. 関連情報

13.2.5. シークレットおよび config map への関数アクセスの手動による追加

シークレットおよび config map にアクセスするための設定を手動で関数に追加できます。これは、既存の設定スニペットがある場合などに、kn func config 対話型ユーティリティーとコマンドを使用するよりも望ましい場合があります。

13.2.5.1. シークレットのボリュームとしてのマウント

シークレットをボリュームとしてマウントできます。シークレットがマウントされると、関数から通常のファイルとしてアクセスできます。これにより、関数がアクセスする必要がある URI のリストなど、関数が必要とするデータをクラスターに格納できます。

前提条件

  • OpenShift Serverless Operator および Knative Serving がクラスターにインストールされている。
  • Knative (kn) CLI がインストールされている。
  • 関数を作成している。

手順

  1. 関数の func.yaml ファイルを開きます。
  2. ボリュームとしてマウントするシークレットごとに、以下の YAML を volumes セクションに追加します。

    name: test
    namespace: ""
    runtime: go
    ...
    volumes:
    - secret: mysecret
      path: /workspace/secret
    • mysecret をターゲットシークレットの名前に置き換えます。
    • /workspace/secret は、シークレットをマウントするパスに置き換えます。

      たとえば、addresses シークレットをマウントするには、次の YAML を使用します。

      name: test
      namespace: ""
      runtime: go
      ...
      volumes:
      - configMap: addresses
        path: /workspace/secret-addresses
  3. 設定を保存します。

13.2.5.2. config map のボリュームとしてのマウント

config map をボリュームとしてマウントできます。config map がマウントされると、関数から通常のファイルとしてアクセスできます。これにより、関数がアクセスする必要がある URI のリストなど、関数が必要とするデータをクラスターに格納できます。

前提条件

  • OpenShift Serverless Operator および Knative Serving がクラスターにインストールされている。
  • Knative (kn) CLI がインストールされている。
  • 関数を作成している。

手順

  1. 関数の func.yaml ファイルを開きます。
  2. ボリュームとしてマウントする config map ごとに、以下の YAML を volumes セクションに追加します。

    name: test
    namespace: ""
    runtime: go
    ...
    volumes:
    - configMap: myconfigmap
      path: /workspace/configmap
    • myconfigmap をターゲット config map の名前に置き換えます。
    • /workspace/configmap は、config map をマウントするパスに置き換えます。

      たとえば、addresses config map をマウントするには、次の YAML を使用します。

      name: test
      namespace: ""
      runtime: go
      ...
      volumes:
      - configMap: addresses
        path: /workspace/configmap-addresses
  3. 設定を保存します。

13.2.5.3. シークレットで定義されるキー値からの環境変数の設定

シークレットとして定義されたキー値から環境変数を設定できます。以前にシークレットに保存されていた値は、実行時に環境変数として関数がアクセスできます。これは、ユーザーの ID など、シークレットに格納されている値にアクセスする場合に役立ちます。

前提条件

  • OpenShift Serverless Operator および Knative Serving がクラスターにインストールされている。
  • Knative (kn) CLI がインストールされている。
  • 関数を作成している。

手順

  1. 関数の func.yaml ファイルを開きます。
  2. 環境変数に割り当てる秘密鍵と値のペアからの値ごとに、以下の YAML を envs セクションに追加します。

    name: test
    namespace: ""
    runtime: go
    ...
    envs:
    - name: EXAMPLE
      value: '{{ secret:mysecret:key }}'
    • EXAMPLE を環境変数の名前に置き換えます。
    • mysecret をターゲットシークレットの名前に置き換えます。
    • key をターゲット値にマッピングしたキーに置き換えます。

      たとえば、userdetailssecret に保存されているユーザー ID にアクセスするには、次の YAML を使用します。

      name: test
      namespace: ""
      runtime: go
      ...
      envs:
      - value: '{{ configMap:userdetailssecret:userid }}'
  3. 設定を保存します。

13.2.5.4. config map で定義されるキー値からの環境変数の設定

config map として定義されたキー値から環境変数を設定できます。以前に config map に格納されていた値は、実行時に環境変数として関数がアクセスできます。これは、ユーザーの ID など、config map に格納されている値にアクセスするのに役立ちます。

前提条件

  • OpenShift Serverless Operator および Knative Serving がクラスターにインストールされている。
  • Knative (kn) CLI がインストールされている。
  • 関数を作成している。

手順

  1. 関数の func.yaml ファイルを開きます。
  2. 環境変数に割り当てる config map のキーと値のペアからの値ごとに、以下の YAML を envs セクションに追加します。

    name: test
    namespace: ""
    runtime: go
    ...
    envs:
    - name: EXAMPLE
      value: '{{ configMap:myconfigmap:key }}'
    • EXAMPLE を環境変数の名前に置き換えます。
    • myconfigmap をターゲット config map の名前に置き換えます。
    • key をターゲット値にマッピングしたキーに置き換えます。

      たとえば、userdetailsmap に格納されているユーザー ID にアクセスするには、次の YAML を使用します。

      name: test
      namespace: ""
      runtime: go
      ...
      envs:
      - value: '{{ configMap:userdetailsmap:userid }}'
  3. 設定を保存します。

13.2.5.5. シークレットで定義されたすべての値からの環境変数の設定

シークレットで定義されているすべての値から環境変数を設定できます。以前にシークレットに保存されていた値は、実行時に環境変数として関数がアクセスできます。これは、シークレットに格納されている値のコレクション (ユーザーに関する一連のデータなど) に同時にアクセスする場合に役立ちます。

前提条件

  • OpenShift Serverless Operator および Knative Serving がクラスターにインストールされている。
  • Knative (kn) CLI がインストールされている。
  • 関数を作成している。

手順

  1. 関数の func.yaml ファイルを開きます。
  2. すべてのキーと値のペアを環境変数としてインポートするすべてのシークレットについて、以下の YAML を envs セクションに追加します。

    name: test
    namespace: ""
    runtime: go
    ...
    envs:
    - value: '{{ secret:mysecret }}' 1
    1
    mysecret をターゲットシークレットの名前に置き換えます。

    たとえば、userdetailssecret に保存されているすべてのユーザーデータにアクセスするには、次の YAML を使用します。

    name: test
    namespace: ""
    runtime: go
    ...
    envs:
    - value: '{{ configMap:userdetailssecret }}'
  3. 設定を保存します。

13.2.5.6. config map で定義されたすべての値からの環境変数の設定

config map で定義されたすべての値から環境変数を設定できます。以前に config map に格納されていた値は、実行時に環境変数として関数がアクセスできます。これは、config map に格納されている値のコレクション (ユーザーに関する一連のデータなど) に同時にアクセスする場合に役立ちます。

前提条件

  • OpenShift Serverless Operator および Knative Serving がクラスターにインストールされている。
  • Knative (kn) CLI がインストールされている。
  • 関数を作成している。

手順

  1. 関数の func.yaml ファイルを開きます。
  2. すべてのキーと値のペアを環境変数としてインポートするすべての config map について、以下の YAML を envs セクションに追加します。

    name: test
    namespace: ""
    runtime: go
    ...
    envs:
    - value: '{{ configMap:myconfigmap }}' 1
    1
    myconfigmap をターゲット config map の名前に置き換えます。

    たとえば、userdetailsmap に保存されているすべてのユーザーデータにアクセスするには、次の YAML を使用します。

    name: test
    namespace: ""
    runtime: go
    ...
    envs:
    - value: '{{ configMap:userdetailsmap }}'
  3. ファイルを保存します。
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.