如何将 php.ini 添加到 kubernetes yaml 中的配置映射

How to add php.ini to a configmap in kubernetes yaml

您好,我是 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 中的配置映射,请一个 yaml 示例对我有很大帮助谢谢。

首先,您需要定义代表您的 php.ini 的 ConfigMap,如下所示:

apiVersion: v1
kind: ConfigMap
metadata:
  name: php-ini-config
  namespace: default
data:
  php.ini: |
    foo=bar
    one=two

然后你可以render this configmap into your workload as a volume,看起来像这样:

apiVersion: v1
kind: Pod
metadata:
  name: test-pod
  namespace: default
spec:
  containers:
    - name: test-container
      image: k8s.gcr.io/busybox
      command: [ "/bin/sh", "-c", "cat /etc/config/php.ini" ]
      volumeMounts:
      - name: config-volume
        mountPath: /etc/config
      env:
      - name: PHP_INI_PATH
        value: /etc/config/php.ini
  volumes:
    - name: config-volume
      configMap:
        name: php-ini-config

请注意,在此 YAML 中,我们还包含指向卷下文件的 PHP_INI_PATH 环境变量,/etc/config/php.ini

如果你想挂载 PHP.ini 的配置文件(从文件创建一个 configmap)到你的 pod 可以执行以下操作取决于你是否使用 helm。

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

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

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

kubectl create configmap phpini-configmap --from-file=configure-pod-container/configmap/php.ini

config map YAML 在使用 helm 时看起来类似于:

apiVersion: v1
kind: ConfigMap
metadata:
  name: phpini-configmap
data:
  php.ini: |-
{{ .Files.Get "conf/php.ini" | indent 4 }}

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