如何使用pvc创建postgres的helm图表

rrr*_*rrr 7 kubernetes kubernetes-helm

我想使用 PVC(持久卷声明)为 PostgreSQL 创建一个 helm 图表。

我看过尝试 katacoda https://www.katacoda.com/courses/kubernetes/helm-package-manager 使用 pvc 创建 Postgres helm 图表。

我该怎么做?

Cro*_*rou 7

正如我们可以从PostgreSQL helm Charts 文档中读到的,它可以与以下参数一起使用:

+----------------------------+-----------------------------------------------------------------+---------------+
|         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                             | {}            |
+----------------------------+-----------------------------------------------------------------+---------------+
Run Code Online (Sandbox Code Playgroud)

坚持

默认情况下,数据使用 PostgreSQL Statefulset 中的 PVC 模板进行持久保存。persistence.enabled 您可以将参数设置为 来 禁用持久性 falseStorageClass Kubernetes 集群中需要默认值 来动态配置卷。 如果您已有要使用的持久卷,请在persistence.storageClass 或 设置 中指定另一个 StorageClass 。persistence.existingClaim

这意味着您只需要创建自己的持久卷,例如如下所示:

pv.yaml

+----------------------------+-----------------------------------------------------------------+---------------+
|         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                             | {}            |
+----------------------------+-----------------------------------------------------------------+---------------+
Run Code Online (Sandbox Code Playgroud)

PVC.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"
Run Code Online (Sandbox Code Playgroud)

一旦部署并限制了这些,您就可以安装 PostgreSQL 图表:

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


Tek*_*ath 6

我使用以下PVCvalues.yamlChart.yaml进行部署

\n\n

PVC.yaml

\n\n
kind: PersistentVolumeClaim\napiVersion: v1\nmetadata:\n  name: postgres-pvc\nspec:\n  accessModes:\n    - ReadWriteOnce\n  resources:\n    requests:\n      storage: 25Gi\n
Run Code Online (Sandbox Code Playgroud)\n\n

值.yaml

\n\n
postgresql:\n  cpu: 1000m\n  memory: 1Gi\n  persistence:\n    enabled: true\n    existingClaim: postgres-pvc\n  volumePermissions:\n    enabled: true\n  replication:\n    enabled: false\n  initdbScripts:\n    psql.sql: |\n      CREATE USER user WITH PASSWORD 'pass';\n      ALTER USER user WITH SUPERUSER;\n
Run Code Online (Sandbox Code Playgroud)\n\n

Chart.yaml

\n\n
apiVersion: v2\nname: pgname\ndescription: A Short description\n\ntype: application\n\nversion: 0.1.3\n\nappVersion: 1.16.2\n\ndependencies:\n  - name: postgresql\n    version: 7.x.x\n    repository: https://kubernetes-charts.storage.googleapis.com/\n    condition: postgresql.enabled\n    tags:\n      - services\n      - db\n      - write\n
Run Code Online (Sandbox Code Playgroud)\n\n

我在以下目录结构中有上述文件。

\n\n
.\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 Chart.yaml\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 charts\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 postgresql-7.7.3.tgz\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 values.yaml\n
Run Code Online (Sandbox Code Playgroud)\n\n

.我做helm dependency updatehelm install release_name .安装。在那之前kubectl apply -f pvc.yaml

\n\n

注意您需要在同一名称空间中

\n