postfix 容器 kubernetes - 设置加密机密、configmap 以实现成功的数据库连接

postfix 容器 kubernetes - 设置加密机密、configmap 以实现成功的数据库连接

我正在尝试在 k8s 中将 postfix 作为容器运行。容器启动(包括 svcs),但我的配置映射和机密无法正常使用。我尝试了以下操作:

  1. 以明文形式设置带有用户和密码的配置图结果:有效 postmap -q someuser@localhost mysql:./virtual_mailbox.cf
  2. 使用 base64 加密密码和用户名(按照 k8s 说明),将这些加密值读入容器的环境变量(envFrom:- secretRef: name: postfix-db-access),尝试使用连接到数据库postmap对于这种情况,配置图如下所示:
  1 apiVersion: v1
  2 kind: ConfigMap
  3 metadata:
  4   name: postfix-db-configs
  5   namespace: mailserver
  6 data:
  7   virtual_mailbox.cf: |
  8     user=$(echo ${POSTFIX_USER} | base64 -d)
  9     password=$(echo ${POSTFIX_PASS} | base64 -d)
 10     hosts=database.default.svc.cluster.local
 11     dbname=postfix
 12     query=SELECT mail FROM generic_map WHERE local_mail='%s' AND active=1;

结果:失败。用户“$(echo ${POSTFIX_USER} | base64 -d)”无权访问数据库。

  1. 将 Postfix 用户的用户名和密码以明文形式存储在 secret 中,如下所示:
  1 apiVersion: v1
  2 kind: Secret
  3 metadata:
  4     name: postfix-db-access
  5     namespace: mailserver
  6 type: Opaque
  7 stringData:
  8      POSTFIX_USER: PostfixUser
  9      POSTFIX_PASS: somePassword

以及配置图中的相应行

    user=$(echo ${POSTFIX_USER})

结果:失败用户 'echo ${POSTFIX_USER}) 无权访问数据库'。该请求未处理已正确设置的环境变量。

使用该命令可以很好地连接数据库并进行查询mysql -h database.default.svc.cluster.local -u postfix -p -e 'use postfix;SELECT mail FROM generic_map WHERE local_mail='someuser@localhost' AND active=1;。我得到了我需要和期望的所有结果。

问题是:我如何设置秘密和配置图,以便这个过程能够正常工作并按预期建立与数据库的连接?

真影

答案1

这是为提高可见性而发布的社区 wiki 答案。请随意扩展它。

@mdaniel 提出的可能解决方案:

POSTFIX_USER要使用、等的预处理值POSTFIX_PASS,您可以使用初始化容器使用 Volume,由 init 容器和应用程序容器共享。

更多信息请访问Kubernetes 网站

相关内容