【发布时间】:2021-09-19 07:41:58
【问题描述】:
我想用 PVC(持久卷声明)为 PostgreSQL 创建一个掌舵图。
我看过尝试片尾 https://www.katacoda.com/courses/kubernetes/helm-package-manager 使用 pvc 创建 Postgres helm 图表。
我该怎么做?
【问题讨论】:
标签: kubernetes kubernetes-helm
我想用 PVC(持久卷声明)为 PostgreSQL 创建一个掌舵图。
我看过尝试片尾 https://www.katacoda.com/courses/kubernetes/helm-package-manager 使用 pvc 创建 Postgres helm 图表。
我该怎么做?
【问题讨论】:
标签: kubernetes kubernetes-helm
我使用以下PVC、values.yaml 和 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
我在以下目录结构中有以上文件。
.
├── Chart.yaml
├── charts
│ └── postgresql-7.7.3.tgz
└── values.yaml
在. 我做helm dependency update 和helm install release_name . 安装。在那之前kubectl apply -f pvc.yaml
注意你需要在同一个命名空间中
【讨论】:
正如我们可以从PostgreSQL helm charts docs 中看到的那样,它可以与以下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 | {} |
+----------------------------+-----------------------------------------------------------------+---------------+
持久性
默认情况下,数据使用 PostgreSQL 状态集中的 PVC 模板进行持久化。您可以禁用将
persistence.enabled参数设置为false的持久性。在 Kubernetes 集群中需要一个默认的StorageClass来动态供应卷。在persistence.storageClass中指定另一个 StorageClass 或设置persistence.existingClaim(如果您已经有要使用的持久卷)。
这意味着您只需要创建自己的Persistent Volume,例如如下所示:
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
一旦这些被部署和绑定,您就可以安装 PostgreSQL 图表:
helm install my-release bitnami/postgresql --set persistence.existingClaim=task-pv-claim
【讨论】:
这个https://arctype.com/blog/deploy-postgres-kubernetes/ 解决了我的问题
# clean
helm list
helm delete postgresql-db
helm repo remove bitnami
kubectl get pvc
kubectl delete pvc data-postgresql-db
helm repo add bitnami https://charts.bitnami.com/bitnami
helm search repo postgresql
# Create PV & PVC
echo "---
apiVersion: v1
kind: PersistentVolume
metadata:
name: postgresql-pv
labels:
type: local
spec:
storageClassName: manual
capacity:
storage: 10Gi
accessModes:
- ReadWriteOnce
hostPath:
path: "/mnt/data"
" > pv.yaml
k apply -f pv.yaml
echo "---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: postgresql-pv-claim
spec:
storageClassName: manual
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 10Gi
" > pvc.yaml
k apply -f pvc.yaml
helm install postgresql-db bitnami/postgresql --set persistence.existingClaim=postgresql-pv-claim --set volumePermissions.enabled=true
【讨论】: