kubernetes 上的 Pgadmin4:将用户和设置保存在卷中

Kha*_*Meg 2 postgresql kubernetes persistent-volumes pgadmin-4

我想将用户帐户和其他设置保存在 pgadmin4 k8s 实例的卷中,我这样做了:

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: pgadmin
      namespace: pgadmin
    spec:
      selector:
       matchLabels:
        app: pgadmin
      replicas: 1
      template:
        metadata:
          labels:
            app: pgadmin
        spec:
          containers:
            - name: pgadmin4
              image: dpage/pgadmin4
              env:
               - name: PGADMIN_DEFAULT_EMAIL
                 value: "admin@example.com"
               - name: PGADMIN_DEFAULT_PASSWORD
                 value: "mysecpwd"
               - name: PGADMIN_PORT
                 value: "80"
              ports:
                - containerPort: 80
                  name: pgadminport
              volumeMounts:
                - mountPath: /
                  name: pgadmin-storage

          volumes:
               - name: pgadmin-storage
                 persistentVolumeClaim:
                   claimName: pgadmin-pv-claim
    ---
        kind: PersistentVolume
        apiVersion: v1
        metadata:
          name: pgadmin-pv-volume
          namespace: pgadmin
          labels:
            type: local
            app: pgadmin
        spec:
          storageClassName: manual
          capacity:
            storage: 5Gi
          accessModes:
            - ReadWriteMany
          hostPath:
            path: "/mnt/data"
    ---
        kind: PersistentVolumeClaim
        apiVersion: v1
        metadata:
          name: pgadmin-pv-claim
          namespace: pgadmin
          labels:
            app: pgadmin
        spec:
          storageClassName: manual
          accessModes:
            - ReadWriteMany
          resources:
            requests:
              storage: 5Gi
Run Code Online (Sandbox Code Playgroud)

问题是当我重新启动 pod 时,即使 pv 绑定到 pod,创建的用户也会消失,我不确定这一部分:

              volumeMounts:
                - mountPath: /
                  name: pgadmin-storage
Run Code Online (Sandbox Code Playgroud)

我想我必须指定保存用户信息和设置的目录,我尝试了默认目录,/pgadmin4但 pod 崩溃了。

Kha*_*Meg 5

根据 @Wytrzyma\xc5\x82y 答案,我检查了使用 helm 创建的部署,发现正确的mountPath/var/lib/pgadmin,该部分应该如下所示:

\n
      ...\n      volumeMounts:\n        - mountPath: /var/lib/pgadmin\n          name: pgadmin-storage\n      ...\n
Run Code Online (Sandbox Code Playgroud)\n

另一件事是我必须更改该目录的所有者,以便应用程序可以写入它,我InitContainers为此使用了(pgadmin uid = 5050):

\n
...\nspec:\n  initContainers:\n    - name: volume-mount-hack\n    image: busybox\n    command: ["sh", "-c", "chown -R 5050:5050 /var/lib/pgadmin"]\n    volumeMounts:\n      - name: pgadmin-storage\n        mountPath: /var/lib/pgadmin\n....\n
Run Code Online (Sandbox Code Playgroud)\n

希望这可以帮助别人

\n