Template Writer's Guide¶
Les templates Muppy sont similaires aux templates Helm.
Elles utilisent le moteur de template Jinja ( Documentation de Jinja ).
Les values des Packages Muppy sont aussi des templates. Elle sont traitées (rendered) avant les templates de configuration. Ceci permet à Muppy de mettre à jour les values à partir du Dashboard.
Les variables suivantes sont disponibles dans les values et les templates
{
'namespace': self.namespace_id.name or '',
'k8s_package_release_obj': self,
'profile_obj': self.k8s_package_profile_id,
'package_obj': self.k8s_package_id,
'obj': Le package_release courant,
'k8s_cluster_obj': self.k8s_cluster_id,
'k8s_template_instance_obj': k8s_template_instance_obj,
'vault_model': self.env['mpy.vault'],
'values': ... uniquement dans les templates de fichier de configs
}
Vous pouvez inspectez le contenu du Package Generic Web App en parallèle à la lecture de cette documentation.
A noter:
Les variables sont le suffixe est _obj correspondent à des objets Muppy. Il est possible de parcourir le graphe d'objet en utilisant le . comme séparateur de champ.
Pour déterminer les noms des champs, vous pouvez utiliser le GUI Muppy en mode Dévelopeur.
Exemple:
Supposons que vous ayez besoin de connaitre le provider du cluster kubernetes sur lequel le package est installé.
Le cluster est disponible dans la template via k8s_cluster_obj.
Pour connaitre le nom du champ contenant le provider:
- activer le
Developer Mode - Ouvrez le formulaire d'un object
K8s Cluster - Laissez votre souris immobile sur le libellé du champ
Providerjusqu'à ce qu'une popup noire apparaisse comme le montre l'image suivante.
Noter le nom du champ (le field) dans la popup. Pour accéder au provider d'un cluster dans une template, vous pouvez utiliser {{ k8s_cluster_obj.provider }}
Tip
Vous pouvez utilisez le . autant de fois que vous le souhaitez pour naviger dans un graphe d'objet.
Par exemple: {{ obj.k8s_cluster_id.provider }} permet de récupérer le Provider d'un cluster en partant d'une Package Release.
Helpers¶
Les helpers / filters suivants sont disponibles pour faciliter l'écriture des templates:
to_yaml(eg. {{ values.common_env_vars | to_yaml(offset=8) }} )obj.get_dashboard(code)permet d'accéder à un dashboardvault_model.get(vault_code)permet d'accéder à un secret stocké dans le Vault- Jinja builtin helpers (eg. indent)
Dashboard helpers¶
Resources¶
Les valeurs des resources du Dashboard sont disponibles
# get_resources_json() helpers allow to inject a complete resource block in a config template.
# # Example:
spec:
replicas: 1
...
template:
metadata:
...
spec:
containers:
- args:
- --workers=4
- --max-cron-threads=0
env:
- name: PGDATABASE
value: cmorisse_xayoni_05f2a290
envFrom:
- secretRef:
name: xayoni-05f2a290-envfile-secret
image: registry.gitlab.com/cmorisse/appserver-xy/appserver-xy16c:0.11.0-alpha
name: appserver-xayoni
resources:
{{ obj.get_dashboard('redis').get_resources_json() | to_yaml(offset=10) }}
# Of courses resources values can be used individually.
# This is useful to add dashboard support to a helm package using values params
# Example:
resources:
requests:
memory: {{ obj.get_dashboard('redis').resources_requests_memory }}
cpu: {{ obj.get_dashboard('redis').resources_requests_cpu }}
limits:
memory: {{ obj.get_dashboard('redis').resources_limits_memory }}
cpu: {{ obj.get_dashboard('redis').resources_limits_cpu }}
Annotations¶
muppy.io/scope:package | namespace(namespaceest équivalent"helm.sh/resource-policy": keep)
