postgresql-ha/helm的root密码是什么?

问题描述

通过 Helm 在 AWS Eks 中安装 Postgresql https://bitnami.com/stack/postgresql-ha/helm

我需要在具有 root 权限的部署中完成一些任务,但是当

su -

需要一个我不知道的密码以及从哪里获取它,并访问所需的文件夹,例如 /opt/bitnami/postgresql/

错误:权限被拒绝

如何获得必要的权限或密码?

附加图片bitnami root error

解决方法

我需要 [...] 将 postgresql 所需的 .so 库放入 [...] /opt/bitnami/postgresql/lib

我认为这是“扩展”而不是“配置”PostgreSQL;这不是单独使用 Helm 图表可以完成的任务。例如,在独立服务器上,您无法仅使用文本编辑器进行配置,虽然 the Bitnami PostgreSQL-HA chart 具有相当广泛的配置选项,但它们都不允许提供额外的二进制库。

执行此操作的第一步是创建一个包含共享库的自定义 Docker 映像。这可以启动 FROM 此图表使用的 Bitnami PostgreSQL 映像:

ARG postgresql_tag=11.12.0-debian-10-r44
FROM bitnami/postgresql:${postgresql_tag}
# assumes the shared library is in the same directory as
# the Dockerfile
COPY whatever.so /opt/bitnami/postgresql/lib
# or RUN curl ...,or RUN apt-get,or ...
#
# You do not need EXPOSE,ENTRYPOINT,CMD,etc.
# These come from the base image

构建此映像并将其推送到 Docker 注册表,就像您对应用程序代码所做的一样。 (在纯粹的本地上下文中,您可能能够docker build minikube 上下文中的图像。)

当您部署图表时,它可以选择覆盖它运行的图像,因此您可以将其指向您自己的自定义图像。您的 Helm 值可能如下所示:

postgresqlImage:
  registry: registry.example.com:5000
  repository: infra/postgresql
  tag: 11.12.0-debian-10-r44
  # `docker run registry.example.com:5000/infra/postgresql:11.12.0-debian-10-r44`

然后您可以在部署图表时通过 helm install -f 选项提供此文件。

您几乎不应该尝试通过使用 kubectl exec 登录来手动配置 Kubernetes pod。删除 pod 是非常常规的,并且在许多情况下 Kubernetes 会自动执行此操作(如果 Deployment 或 StatefulSet 中的图像标签发生变化;如果 Horizo​​ntalPodAutoscaler 缩小;如果节点脱机);在这些情况下,您的手动更改将丢失。如果 Pod 有多个副本(几乎肯定会有 HA 数据库设置),您还需要在每个副本中进行相同的更改。

,

就像他们在评论中告诉您的那样,您对问题使用了错误的方法。在容器内执行手动操作(大多数情况下)是无用的,因为 Pod(以及属于此类 Pod 的容器)是临时实体,每当 Pod 重启时这些实体就会丢失。

除非持久卷支持您尝试与之交互的路径,否则一旦容器重新启动,您的所有更改都将丢失。

HELM Charts 与 bitnami-ha 图表一样,公开了几种优化/修改默认安装的方法:

  • 您可以从默认使用的镜像开始构建自定义 docker 镜像,在那里添加库和您需要的任何内容。这样,容器一启动就已经按照你想要的方式“准备好了”

  • 您可以添加额外的 Init Container 来执行操作,例如为 emptydir 卷上的主容器准备文件,然后可以将其挂载到预期路径

  • 您可以在调用主入口点之前注入一个入口点脚本,该脚本在开始时执行您想要的操作


检查 Readme,因为它列出了图表提供的所有可能性(例如如何使用自定义的一个或多个覆盖图像)