首页 > 解决方案 > Kubernetes - 以声明方式包含配置文件的简单方法?

问题描述

试图复制一个 nginx conf 文件供我的 pod 使用(位于<project>/nginx.conf)。使用 Docker compose 我只需执行以下操作...

image: "nginx:alpine"
ports:
- "80:80"
volumes:
- ./nginx.conf:/etc/nginx/conf.d/default.conf

最佳实践?不确定,因为这对我来说是新事物。它似乎运作良好。我想通过 kubernetes 部署来完成同样的任务,但我没有找到一种直接的方法来以声明方式执行此操作。我在ConfigMap上遇到了一点,但是当立即遇到以下情况时有点抗拒......

使用 kubectl create configmap 命令从目录、文件或文字值创建配置映射

我不希望在文本文件中散布大量的记住这些命令,而是更喜欢 compose 所示的文件方法。这是可以实现的吗?到目前为止,我的规格看起来是这样的......

spec:
  containers:
  - name: nginx
    image: nginx:alpine
    ports:
    - containerPort: 80
      name: http

帮我在这里获取配置?

标签: dockerkubernetescontainers

解决方案


ConfigMaps 绝对是要走的路。您可以使用如下规范创建配置映射:

apiVersion: v1
kind: ConfigMap
metadata:
  name: nginx
  namespace: default
data:
  nginx.conf: |-
     user www;
     worker_processes 5; 
     ...
     # all nginx.conf file contents goes here

使用 kubectl 应用配置映射后,您可以通过在 PodSpec 中指定以下内容将其挂载到容器中:

containers:
- name: ...
  ...
  volumeMounts:
  - name: nginx-volume
    mountPath: <path where you want to put nginx.conf>
volumes:
- name: nginx-volume
  configMap:
    name: nginx

请注意,您将选择作为 nginx.conf 文件的挂载点的目录将仅包含该文件(隐藏该目录中已经存在的所有其他文件),就像在 linux 中将设备挂载到非空目录时一样.

更多关于配置图的详细信息:https ://kubernetes.io/docs/tasks/configure-pod-container/configure-pod-configmap/


推荐阅读