如何将 php.ini 添加到 kubernetes yaml 中的 configmap

Jea*_*ton 0 php yaml kubernetes dockerhub configmap

你好,我是 kubernetes 新手。我目前一直在尝试使用来自 dockerhub 的 docker 镜像(如果它是 php-fpm 镜像)。我希望能够在 configmap 中自定义 php.ini 我将如何做到这一点。dockerhub 上的镜像是 crunchgeek/php-fpm ,php.ini 的说明说有一个环境变量“PHP_INI_PATH=/path/to/php.ini 将在 php-fpm 管理器启动期间包含指定的 php.ini 配置。它允许如果您想包含多个 .ini 配置文件,请使用通配符。” 如何将控制 php.ini 文件的环境变量添加到 kubernetes 中的 configmap 中,请提供 yaml 示例,非常感谢。

Mic*_*vel 9

如果您想将 PHP .ini 的配置文件(从文件创建配置映射)挂载到您的 pod 中,可以执行以下操作,具体取决于您是否使用 helm。

使用 helm 时,您需要创建一个配置映射 YAML 文件,并将所需的配置文件(场景中的 php.ini)放在 helm Chart 位置根目录下的专用文件夹(例如conf文件夹)下,然后创建一个配置从该文件映射并根据您的需要将其安装到部署中。

如果您不使用 helm,您可以直接使用 kubectl 命令从文件创建配置映射(取自此参考配置映射来自文件命令):

从没有 helm 的文件创建配置映射:

kubectl create configmap phpini-configmap --from-file=configure-pod-container/configmap/php.ini
Run Code Online (Sandbox Code Playgroud)

使用 helm 时的配置映射 YAML 看起来类似于:

apiVersion: v1
kind: ConfigMap
metadata:
  name: phpini-configmap
data:
  php.ini: |-
{{ .Files.Get "conf/php.ini" | indent 4 }}
Run Code Online (Sandbox Code Playgroud)

然后,pod 应该使用此配置映射并将其挂载到正确的路径

apiVersion: v1
kind: Pod
metadata:
  name: test-pod
  namespace: default
spec:
  containers:
    - name: php-container
      image: k8s.gcr.io/busybox
      command: [ "/bin/sh", "-c", "cat /etc/config/php.ini" ]
      volumeMounts:
      - name: ini-configmap
        mountPath: /etc/config/php.ini
        subPath: php.ini
      env:
      - name: PHP_INI_PATH
        value: /etc/config/php.ini
  volumes:
    - name: ini-configmap
      configMap:
        name: phpini-configmap
Run Code Online (Sandbox Code Playgroud)