【问题标题】:What is the root password of postgresql-ha/helm?postgresql-ha/helm 的 root 密码是什么?
【发布时间】:2021-09-20 22:02:46
【问题描述】:

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

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

苏-

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

错误:权限被拒绝

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

附图:bitnami root error

【问题讨论】:

  • 您几乎不需要像这样直接登录到容器;在 Kubernetes 中更是如此,它是例行的并且预计会删除 pod(在任何类型的更新中;因为节点正在离线)。你实际上想做什么,你能配置 pod 自己做吗?
  • 我需要 root 权限才能将 postgresql 所需的 .so 库放在此文件夹中:/opt/bitnami/postgresql/lib 我现在想这样做:helm upgrade postgresql-ha bitnami/postgresql- ha \ --set containerSecurityContext.runAsUser=[root] \ --set securityContext.fsGroup=[0] 我还能做些什么来解决我的问题(将我的 .so 库放在这些部署中)?

标签: postgresql amazon-web-services kubernetes kubernetes-helm amazon-eks


【解决方案1】:

我需要 [...] 将我需要用于 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 注册表,就像您为应用程序代码所做的那样。 (在纯本地上下文中,您可能可以在 minikube 的上下文中 docker build 图像。)

当您部署图表时,它可以选择覆盖它运行的图像,因此您可以将其指向您自己的自定义图像。您的 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 缩小;如果 Node 离线);在这些情况下,您的手动更改将丢失。如果一个 pod 有多个副本(几乎肯定会有 HA 数据库设置),您还需要在每个副本中进行相同的更改。

【讨论】:

    【解决方案2】:

    就像他们在 cmets 中告诉您的那样,您使用了错误的方法来解决问题。在容器内执行以进行手动操作(大多数情况下)是无用的,因为 Pod(以及属于此类 Pod 的容器)是短暂的实体,一旦 Pod 重新启动,这些实体就会丢失。

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

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

    • 您可以从默认使用的镜像开始构建自定义 docker 镜像,在其中添加库和您需要的任何内容。这样,一旦容器启动,容器就会以您想要的方式“准备就绪”

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

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


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

    【讨论】:

      猜你喜欢
      • 2021-05-07
      • 1970-01-01
      • 1970-01-01
      • 2016-03-03
      • 2020-12-28
      • 2010-11-15
      • 2012-09-23
      • 1970-01-01
      • 2020-12-29
      相关资源
      最近更新 更多