how to create helm chart of postgres with pvc

前端 未结 2 1743
说谎
说谎 2021-01-22 21:09

I would like to create a helm chart for PostgreSQL with PVC (persistent volume claim).

I\'ve looked at trying katacoda https://www.katacoda.com/courses/kubernetes/helm-pa

相关标签:
2条回答
  • 2021-01-22 22:05

    I deployed using following PVC ,values.yaml and Chart.yaml

    pvc.yaml

    kind: PersistentVolumeClaim
    apiVersion: v1
    metadata:
      name: postgres-pvc
    spec:
      accessModes:
        - ReadWriteOnce
      resources:
        requests:
          storage: 25Gi
    

    values.yaml

    postgresql:
      cpu: 1000m
      memory: 1Gi
      persistence:
        enabled: true
        existingClaim: postgres-pvc
      volumePermissions:
        enabled: true
      replication:
        enabled: false
      initdbScripts:
        psql.sql: |
          CREATE USER user WITH PASSWORD 'pass';
          ALTER USER user WITH SUPERUSER;
    

    Chart.yaml

    apiVersion: v2
    name: pgname
    description: A Short description
    
    type: application
    
    version: 0.1.3
    
    appVersion: 1.16.2
    
    dependencies:
      - name: postgresql
        version: 7.x.x
        repository: https://kubernetes-charts.storage.googleapis.com/
        condition: postgresql.enabled
        tags:
          - services
          - db
          - write
    

    I have got above files in following directory structure.

    .
    ├── Chart.yaml
    ├── charts
    │   └── postgresql-7.7.3.tgz
    └── values.yaml
    

    At . I do helm dependency update and helm install release_name . to install. Before that kubectl apply -f pvc.yaml

    Note You Need to in in same namespace

    0 讨论(0)
  • 2021-01-22 22:07

    As we can read from PostgreSQL helm charts docs it can be used with following parameters:

    +----------------------------+-----------------------------------------------------------------+---------------+
    |         Parameter          |                           Description                           |    Default    |
    +----------------------------+-----------------------------------------------------------------+---------------+
    | persistence.enabled        | Enable data persistence                                         | true          |
    | persistence.existingClaim  | Use a existing PVC which must be created manually before bound  | nil           |
    | persistence.storageClass   | Specify the storageClass used to provision the volume           | nil           |
    | persistence.mountPath      | Path to mount data volume at                                    | nil           |
    | persistence.accessMode     | Access mode of data volume                                      | ReadWriteOnce |
    | persistence.size           | Size of data volume                                             | 8Gi           |
    | persistence.annotations    | Persistent Volume Claim annotations                             | {}            |
    +----------------------------+-----------------------------------------------------------------+---------------+
    

    Persistence

    The data is persisted by default using PVC templates in the PostgreSQL statefulset. You can disable the persistence setting the persistence.enabled parameter to false. A default StorageClass is needed in the Kubernetes cluster to dynamically provision the volumes. Specify another StorageClass in the persistence.storageClass or set persistence.existingClaim if you have already existing persistent volumes to use.

    This means you just need to create your own Persistent Volume which can for example look like this:

    pv.yaml

    apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: task-pv-volume
      labels:
        type: local
    spec:
      storageClassName: manual
      capacity:
        storage: 10Gi
      accessModes:
        - ReadWriteOnce
      hostPath:
        path: "/mnt/data"
    

    pvc.yaml

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: task-pv-claim
    spec:
      storageClassName: manual
      accessModes:
        - ReadWriteOnce
      resources:
        requests:
          storage: 8Gi
    

    Once those are deployed and bounded you can install the PostgreSQL chart:

    helm install my-release bitnami/postgresql --set persistence.existingClaim=task-pv-claim

    0 讨论(0)
提交回复
热议问题