管理和使用配置项(K8s ConfigMap)

重要

本文中含有需要您注意的重要提示信息,忽略该信息可能对您的业务造成影响,请务必仔细阅读。

配置项(K8s ConfigMap)可以作为应用运行时的环境变量,也可以作为配置文件挂载到应用容器内的文件系统。使用配置项(K8s ConfigMap)的好处是可以在应用部署后灵活变更配置,而无需重新构建镜像。

如需从配置中心动态获取所需的配置信息,则不适用本文,请参见使用MSENacos注册中心管理分布式配置(ACM)

如需存储密钥、证书等敏感信息,请参见管理和使用保密字典(K8s Secret)

创建配置项(ConfigMap)

  1. SAE配置项(ConfigMap)中,在顶部选择目标地域和命名空间,点击创建注意需要选择目标应用所在的命名空间。

    1. 自定义配置项名称

    2. 配置映射,选择合适的编辑模式来配置变量名和变量值的映射:

      • 使用表单编辑添加变量,填写变量名和变量值。可以添加多个变量。对于较长的配置文件内容,可以点击变量值旁的image图标,粘贴并编辑内容。

      • 使用JSON格式编辑:在代码框中输入单个或多个变量名和变量值的映射,需要分别用""括起来。示例如下:

        {
            "nv_shell": "/bin/sh",
            "nginx_conf": "daemon            off;\nworker_processes  2;\nuser              www-data;\n\nevents {\n    use           epoll;\n    worker_connections  128;\n}\n\nerror_log         logs/error.log info;\n\nhttp {\n    server_tokens off;\n    include       mime.types;\n    charset       utf-8;\n\n    access_log    logs/access.log  combined;\n\n    server {\n        server_name   localhost;\n        listen        127.0.0.1:80;\n\n        error_page    500 502 503 504  /50x.html;\n\n        location      / {\n            root      html;\n        }\n\n    }"
        }
        
      • 使用YAML格式编辑:在代码框中输入单个或多个变量名和变量值的映射。示例如下:

        nv_shell: /bin/sh
        nginx_conf: |-
          daemon            off;
          worker_processes  2;
          user              www-data;
        
          events {
              use           epoll;
              worker_connections  128;
          }
        
          error_log         logs/error.log info;
        
          http {
              server_tokens off;
              include       mime.types;
              charset       utf-8;
        
              access_log    logs/access.log  combined;
        
              server {
                  server_name   localhost;
                  listen        127.0.0.1:80;
        
                  error_page    500 502 503 504  /50x.html;
        
                  location      / {
                      root      html;
                  }
        
              }
  2. 配置项(ConfigMap)列表中查看已创建的配置项,可以按需执行编辑复制查看历史删除操作。

    重要

将配置项(ConfigMap)用作应用的环境变量

  1. 创建应用

    SAE应用列表中,在顶部选择目标地域和命名空间,点击创建应用应用基本信息页面进行配置后,单击下一步:高级设置

    对正在运行的应用进行变更

    警告

    重新部署应用后,该应用将会被重启。为避免业务中断等不可预知的错误,请在业务低峰期执行部署操作。

    SAE应用列表中,在顶部选择目标地域和命名空间,点击目标应用ID跳转到应用详情页。在左侧导航栏点击基础信息,在右上角点击部署应用

    对已停止的应用进行变更

    SAE应用列表中,在顶部选择目标地域和命名空间,点击目标应用ID跳转到应用详情页。点击基础信息,点击修改应用配置

  1. 环境变量区域,选择类型引用配置项,自定义在当前应用中的变量名称(对于引用全部键,则无需指定变量名称,而是直接使用键名作为变量名称),然后选择引用已创建的配置项名称(配置项中的变量名,支持引用全部键)。可以添加多个配置项。

  2. 等待应用部署成功。验证配置是否生效:登录应用实例的Webshell,执行env | grep <变量名称>,注意将其中<变量名称>替换为之前配置的实际值。返回变量名和变量值的映射,表明配置生效。

将配置项(ConfigMap)作为配置文件挂载到应用的文件系统

将配置项(ConfigMap)挂载到应用容器内的文件系统,配置项的值作为文件内容,文件路径和文件名可自定义。如果文件路径下存在同名文件,则挂载的文件会替换原有文件。

挂载的文件常作为应用的配置文件,以实现灵活变更配置,而无需重新构建镜像。如需修改应用容器中原有的配置文件,请先将原配置文件内容复制到本地,修改后将其保存为配置项(ConfigMap)的值,再参考下文将其挂载到应用的文件系统。

  1. 创建应用

    SAE应用列表中,在顶部选择目标地域和命名空间,点击创建应用应用基本信息页面进行配置后,单击下一步:高级设置

    对正在运行的应用进行变更

    警告

    重新部署应用后,该应用将会被重启。为避免业务中断等不可预知的错误,请在业务低峰期执行部署操作。

    SAE应用列表中,在顶部选择目标地域和命名空间,点击目标应用ID跳转到应用详情页。在左侧导航栏点击基础信息,在右上角点击部署应用

    对已停止的应用进行变更

    SAE应用列表中,在顶部选择目标地域和命名空间,点击目标应用ID跳转到应用详情页。点击基础信息,点击修改应用配置

  1. 配置管理区域,单击+ 添加,选择引用已创建的配置项名称(配置项中的变量名,支持挂载全部键),然后自定义挂载路径(对于挂载单个键,填写包含文件名的绝对路径;对于挂载全部键,填写不包含文件名的绝对路径,SAE将各配置项的键名自动作为文件名)。可以添加多个配置项。

  2. 等待应用部署成功。验证配置是否生效:登录应用实例的Webshell,查看挂载路径下的文件内容。

场景示例

PHP应用配置php-fpm.conf

  1. 创建配置项(ConfigMap)。

    1. 配置项名称php-fpm

    2. 配置映射使用 YAML 编辑,在代码框中输入YAML格式的配置信息:

      www_conf: |
        [www]
        user = www-data
        group = www-data
        listen = 127.0.0.1:9000
        pm = dynamic
        pm.max_children = 5
        pm.start_servers = 2
        pm.min_spare_servers = 1
        pm.max_spare_servers = 3
  1. 将配置项(ConfigMap)作为配置文件挂载到已创建的PHP应用的文件系统。

    1. 配置项名称php-fpm

    2. www_conf

    3. 挂载路径为/usr/local/etc/php-fpm.d/www.conf

Nginx配置nginx.conf