kapitan-reference
kapitan-reference copied to clipboard
Please improve PV/PVC generator
Usecase
For a Deployment + Job + CronJob resource it's sometimes required to have one or more additional PV/PVC's. Therfore I need the generators to be able to generate them.
Issue
Currently PV/PVC generator only allows the function with volumeClaimTemplate
by type: statefulset
to create actual persistence.
Current "Workaround"
parameters:
kapitan:
compile:
- output_path: manifests
input_type: jinja2
input_paths:
- templates/jinja/pvc.yml
The Component
parameters:
extra:
pvcs:
- name: pg-backup
spec:
storageClassName: ${postgres:persistence:storageclass}
accessModes: ${postgres:persistence:accessModes}
resources:
requests:
storage: ${postgres:backup:size}
My Jinja2 Template:
{% set p = inventory.parameters %}
{% for pvc in p.extra.pvcs %}
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: {{ pvc.name }}
namespace: {{ p.namespace }}
labels: {{ p.generators.manifest.default_config.labels }}
annotations: {{ p.generators.manifest.default_config.annotations }}
spec: {{ pvc.spec }}
{% endfor %}
The Result
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: pg-backup
namespace: gitea
labels: {'app.kubernetes.io/part-of': 'gitea', 'app.kubernetes.io/managed-by': 'kapitan'}
annotations: {'manifests.kapicorp.com/generated': 'true'}
spec: {'storageClassName': 'standard', 'accessModes': ['ReadWriteOnce'], 'resources': {'requests': {'storage': '10Gi'}}}