Red Hat Training

A Red Hat training course is available for OpenShift Container Platform

3.3.4. 使用 ConfigMap 替换路由器配置模板

您可以使用 ConfigMap 来自定义路由器实例,而无需重新构建路由器镜像。可以修改 haproxy-config.templatereload-haproxy 和其他脚本,以及创建和修改路由器环境变量。

  1. 复制您要修改的 haproxy-config.template如上所述根据需要进行修改。
  2. 创建 ConfigMap:

    $ oc create configmap customrouter --from-file=haproxy-config.template

    customrouter ConfigMap 现在包含修改后的 haproxy-config.template 文件的副本。

  3. 修改路由器部署配置,将 ConfigMap 挂载为文件,并将 TEMPLATE_FILE 环境变量指向该文件。这可以通过 oc set envoc set volume 命令完成,或者通过编辑路由器部署配置来完成。

    使用 oc 命令
    $ oc set volume dc/router --add --overwrite \
        --name=config-volume \
        --mount-path=/var/lib/haproxy/conf/custom \
        --source='{"configMap": { "name": "customrouter"}}'
    $ oc set env dc/router \
        TEMPLATE_FILE=/var/lib/haproxy/conf/custom/haproxy-config.template
    编辑路由器部署配置

    使用 oc edit dc router,使用文本编辑器编辑路由器部署配置。

    ...
            - name: STATS_USERNAME
              value: admin
            - name: TEMPLATE_FILE  1
              value: /var/lib/haproxy/conf/custom/haproxy-config.template
            image: openshift/origin-haproxy-routerp
    ...
            terminationMessagePath: /dev/termination-log
            volumeMounts: 2
            - mountPath: /var/lib/haproxy/conf/custom
              name: config-volume
          dnsPolicy: ClusterFirst
    ...
          terminationGracePeriodSeconds: 30
          volumes: 3
          - configMap:
              name: customrouter
            name: config-volume
    ...
    1
    spec.container.env 字段中,添加 TEMPLATE_FILE 环境变量以指向挂载的 haproxy-config.template 文件。
    2
    添加 spec.container.volumeMounts 字段以创建挂载点。
    3
    添加新的 spec.volumes 字段来引用 ConfigMap。

    保存更改并退出编辑器。这将重新启动路由器。