how to create helm chart of postgres with pvc

荒凉一梦 提交于 2020-08-20 06:00:27

问题


I want to create postgres helm chat with pvc, could you please let me know how to do this, trying in katacoda https://www.katacoda.com/courses/kubernetes/helm-package-manager Create Postgres helm chart with pvc.


回答1:


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




回答2:


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



来源:https://stackoverflow.com/questions/61752126/how-to-create-helm-chart-of-postgres-with-pvc

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!