kapitan-reference icon indicating copy to clipboard operation
kapitan-reference copied to clipboard

Please improve PV/PVC generator

Open Moep90 opened this issue 4 years ago • 0 comments

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'}}}

Moep90 avatar Feb 12 '21 15:02 Moep90