6.9. Configuration du projet de fonction dans func.yaml


Le fichier func.yaml contient la configuration de votre projet de fonction. Les valeurs spécifiées dans func.yaml sont utilisées lorsque vous exécutez une commande kn func. Par exemple, lorsque vous exécutez la commande kn func build, la valeur du champ build est utilisée. Dans certains cas, vous pouvez remplacer ces valeurs par des drapeaux de ligne de commande ou des variables d'environnement.

6.9.1. Champs configurables dans func.yaml

La plupart des champs de func.yaml sont générés automatiquement lorsque vous créez, construisez et déployez votre fonction. Cependant, il existe également des champs que vous modifiez manuellement pour changer certaines choses, comme le nom de la fonction ou le nom de l'image.

6.9.1.1. buildEnvs

Le champ buildEnvs vous permet de définir des variables d'environnement qui seront disponibles pour l'environnement qui construit votre fonction. Contrairement aux variables définies à l'aide de envs, une variable définie à l'aide de buildEnv n'est pas disponible pendant l'exécution de la fonction.

Vous pouvez définir une variable buildEnv directement à partir d'une valeur. Dans l'exemple suivant, la variable buildEnv nommée EXAMPLE1 se voit directement attribuer la valeur one:

buildEnvs:
- name: EXAMPLE1
  value: one
Copy to Clipboard

Vous pouvez également définir une variable buildEnv à partir d'une variable d'environnement locale. Dans l'exemple suivant, la variable buildEnv nommée EXAMPLE2 se voit attribuer la valeur de la variable d'environnement locale LOCAL_ENV_VAR:

buildEnvs:
- name: EXAMPLE1
  value: '{{ env:LOCAL_ENV_VAR }}'
Copy to Clipboard

6.9.1.2. envs

Le champ envs vous permet de définir des variables d'environnement qui seront disponibles pour votre fonction au moment de l'exécution. Vous pouvez définir une variable d'environnement de différentes manières :

  1. Directement à partir d'une valeur.
  2. À partir d'une valeur assignée à une variable d'environnement locale. Voir la section "Referencing local environment variables from func.yaml fields" pour plus d'informations.
  3. À partir d'une paire clé-valeur stockée dans un secret ou une carte de configuration.
  4. Vous pouvez également importer toutes les paires clé-valeur stockées dans un secret ou une carte de configuration, les clés étant utilisées comme noms des variables d'environnement créées.

Cet exemple montre les différentes façons de définir une variable d'environnement :

name: test
namespace: ""
runtime: go
...
envs:
- name: EXAMPLE1 
1

  value: value
- name: EXAMPLE2 
2

  value: '{{ env:LOCAL_ENV_VALUE }}'
- name: EXAMPLE3 
3

  value: '{{ secret:mysecret:key }}'
- name: EXAMPLE4 
4

  value: '{{ configMap:myconfigmap:key }}'
- value: '{{ secret:mysecret2 }}' 
5

- value: '{{ configMap:myconfigmap2 }}' 
6
Copy to Clipboard
1
Variable d'environnement définie directement à partir d'une valeur.
2
Variable d'environnement définie à partir d'une valeur attribuée à une variable d'environnement locale.
3
Variable d'environnement attribuée à partir d'une paire clé-valeur stockée dans un secret.
4
Variable d'environnement attribuée à partir d'une paire clé-valeur stockée dans une carte de configuration.
5
Un ensemble de variables d'environnement importées à partir de paires clé-valeur d'un secret.
6
Un ensemble de variables d'environnement importées à partir des paires clé-valeur d'une carte de configuration.

6.9.1.3. constructeur

Le champ builder indique la stratégie utilisée par la fonction pour construire l'image. Il accepte les valeurs pack ou s2i.

6.9.1.4. construire

Le champ build indique comment la fonction doit être construite. La valeur local indique que la fonction est construite localement sur votre machine. La valeur git indique que la fonction est construite sur un cluster en utilisant les valeurs spécifiées dans le champ git.

6.9.1.5. volumes

Le champ volumes vous permet de monter les secrets et les cartes de configuration en tant que volume accessible à la fonction au chemin spécifié, comme le montre l'exemple suivant :

name: test
namespace: ""
runtime: go
...
volumes:
- secret: mysecret 
1

  path: /workspace/secret
- configMap: myconfigmap 
2

  path: /workspace/configmap
Copy to Clipboard
1
Le secret mysecret est monté en tant que volume résidant sur /workspace/secret.
2
La carte de configuration myconfigmap est montée en tant que volume résidant à l'adresse /workspace/configmap.

6.9.1.6. options

Le champ options vous permet de modifier les propriétés du service Knative pour la fonction déployée, telles que l'autoscaling. Si ces options ne sont pas définies, les options par défaut sont utilisées.

Les options suivantes sont disponibles :

  • scale

    • min: Le nombre minimum de répliques. Doit être un nombre entier non négatif. La valeur par défaut est 0.
    • max: Nombre maximal de répliques. Il doit s'agir d'un nombre entier non négatif. La valeur par défaut est 0, ce qui signifie qu'il n'y a pas de limite.
    • metric: Définit quel type de métrique est surveillé par l'Autoscaler. Il peut être défini sur concurrency, qui est la valeur par défaut, ou sur rps.
    • target: Recommandation sur le moment de la mise à l'échelle en fonction du nombre de requêtes entrantes simultanées. L'option target peut être une valeur flottante supérieure à 0,01. La valeur par défaut est 100, sauf si l'option options.resources.limits.concurrency est définie, auquel cas target prend sa valeur par défaut.
    • utilization: Pourcentage d'utilisation de requêtes simultanées autorisé avant la mise à l'échelle. Il peut s'agir d'une valeur flottante comprise entre 1 et 100. La valeur par défaut est 70.
  • resources

    • requests

      • cpu: Une demande de ressource CPU pour le conteneur avec la fonction déployée.
      • memory: Une demande de ressource mémoire pour le conteneur avec la fonction déployée.
    • limits

      • cpu: Une limite de ressources CPU pour le conteneur avec la fonction déployée.
      • memory: Une limite de ressources mémoire pour le conteneur avec la fonction déployée.
      • concurrency: Limite stricte du nombre de requêtes simultanées pouvant être traitées par une seule réplique. Il peut s'agir d'une valeur entière supérieure ou égale à 0. La valeur par défaut est 0, ce qui signifie qu'il n'y a pas de limite.

Voici un exemple de configuration des options de scale:

name: test
namespace: ""
runtime: go
...
options:
  scale:
    min: 0
    max: 10
    metric: concurrency
    target: 75
    utilization: 75
  resources:
    requests:
      cpu: 100m
      memory: 128Mi
    limits:
      cpu: 1000m
      memory: 256Mi
      concurrency: 100
Copy to Clipboard

6.9.1.7. image

Le champ image définit le nom de l'image de votre fonction après sa construction. Vous pouvez modifier ce champ. Si vous le faites, la prochaine fois que vous exécuterez kn func build ou kn func deploy, l'image de la fonction sera créée avec le nouveau nom.

6.9.1.8. imageDigest

Le champ imageDigest contient le hachage SHA256 du manifeste de l'image lorsque la fonction est déployée. Ne pas modifier cette valeur.

6.9.1.9. étiquettes

Le champ labels vous permet de définir des étiquettes sur une fonction déployée.

Vous pouvez définir une étiquette directement à partir d'une valeur. Dans l'exemple suivant, l'étiquette de la clé role se voit directement attribuer la valeur backend:

labels:
- key: role
  value: backend
Copy to Clipboard

Vous pouvez également définir une étiquette à partir d'une variable d'environnement locale. Dans l'exemple suivant, l'étiquette de la touche author se voit attribuer la valeur de la variable d'environnement locale USER:

labels:
- key: author
  value: '{{ env:USER }}'
Copy to Clipboard

6.9.1.10. nom

Le champ name définit le nom de votre fonction. Cette valeur est utilisée comme nom de votre service Knative lorsqu'il est déployé. Vous pouvez modifier ce champ pour renommer la fonction lors des déploiements ultérieurs.

6.9.1.11. espace de noms

Le champ namespace indique l'espace de noms dans lequel votre fonction est déployée.

6.9.1.12. durée d'exécution

Le champ runtime indique la langue d'exécution de votre fonction, par exemple python.

6.9.2. Référencement des variables d'environnement locales à partir des champs de func.yaml

Si vous souhaitez éviter de stocker des informations sensibles telles qu'une clé API dans la configuration de la fonction, vous pouvez ajouter une référence à une variable d'environnement disponible dans l'environnement local. Pour ce faire, modifiez le champ envs dans le fichier func.yaml.

Conditions préalables

  • Vous devez avoir créé le projet de fonction.
  • L'environnement local doit contenir la variable à laquelle vous souhaitez faire référence.

Procédure

  • Pour faire référence à une variable d'environnement locale, utilisez la syntaxe suivante :

    {{ env:ENV_VAR }}
    Copy to Clipboard

    Remplacez ENV_VAR par le nom de la variable de l'environnement local que vous souhaitez utiliser.

    Par exemple, vous pouvez disposer de la variable API_KEY dans l'environnement local. Vous pouvez assigner sa valeur à la variable MY_API_KEY, que vous pouvez ensuite utiliser directement dans votre fonction :

    Exemple de fonction

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

Retour au début
Red Hat logoGithubredditYoutubeTwitter

Apprendre

Essayez, achetez et vendez

Communautés

À propos de la documentation Red Hat

Nous aidons les utilisateurs de Red Hat à innover et à atteindre leurs objectifs grâce à nos produits et services avec un contenu auquel ils peuvent faire confiance. Découvrez nos récentes mises à jour.

Rendre l’open source plus inclusif

Red Hat s'engage à remplacer le langage problématique dans notre code, notre documentation et nos propriétés Web. Pour plus de détails, consultez le Blog Red Hat.

À propos de Red Hat

Nous proposons des solutions renforcées qui facilitent le travail des entreprises sur plusieurs plates-formes et environnements, du centre de données central à la périphérie du réseau.

Theme

© 2025 Red Hat