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
buildEnvs:
- name: EXAMPLE1
value: one
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 }}'
buildEnvs:
- name: EXAMPLE1
value: '{{ env:LOCAL_ENV_VAR }}'
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 :
- Directement à partir d'une valeur.
- À 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.
- À partir d'une paire clé-valeur stockée dans un secret ou une carte de configuration.
- 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 value: value - name: EXAMPLE2 value: '{{ env:LOCAL_ENV_VALUE }}' - name: EXAMPLE3 value: '{{ secret:mysecret:key }}' - name: EXAMPLE4 value: '{{ configMap:myconfigmap:key }}' - value: '{{ secret:mysecret2 }}' - value: '{{ configMap:myconfigmap2 }}'
name: test
namespace: ""
runtime: go
...
envs:
- name: EXAMPLE1
value: value
- name: EXAMPLE2
value: '{{ env:LOCAL_ENV_VALUE }}'
- name: EXAMPLE3
value: '{{ secret:mysecret:key }}'
- name: EXAMPLE4
value: '{{ configMap:myconfigmap:key }}'
- value: '{{ secret:mysecret2 }}'
- value: '{{ configMap:myconfigmap2 }}'
- 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 path: /workspace/secret - configMap: myconfigmap path: /workspace/configmap
name: test
namespace: ""
runtime: go
...
volumes:
- secret: mysecret
path: /workspace/secret
- configMap: myconfigmap
path: /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 surconcurrency
, qui est la valeur par défaut, ou surrps
. -
target
: Recommandation sur le moment de la mise à l'échelle en fonction du nombre de requêtes entrantes simultanées. L'optiontarget
peut être une valeur flottante supérieure à 0,01. La valeur par défaut est 100, sauf si l'optionoptions.resources.limits.concurrency
est définie, auquel castarget
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
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
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
labels:
- key: role
value: backend
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 }}'
labels:
- key: author
value: '{{ env:USER }}'
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 }}
{{ env:ENV_VAR }}
Copy to Clipboard Copied! 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 variableMY_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 }}' ...
name: test namespace: "" runtime: go ... envs: - name: MY_API_KEY value: '{{ env:API_KEY }}' ...
Copy to Clipboard Copied!