【问题标题】:How to handle configuration for Nginx on Kubernetes (GKE)?如何在 Kubernetes (GKE) 上处理 Nginx 的配置?
【发布时间】:2016-09-15 03:45:26
【问题描述】:

由于ingress resources 的限制(在我的情况下,我需要超过 50 个路由,而 Google Container Engine 不支持)我正在考虑使用 Nginx 作为其他后端服务的反向代理。我想要做的与入口资源提供的基本相同,例如路由路径“/x”到服务 x 和“/y”到服务 y。我想为 HA 运行多个 Nginx 实例,可能在 service 后面。我的问题主要涉及配置,我有几个选择:

  1. 使用 nginx 作为基础镜像创建自定义 Docker 镜像,然后复制 我们的 nginx 配置到这个图像中。这会让它非常 很容易在 Kubernetes 上运行这个基于 nginx 的镜像。但是虽然这 工作它需要重建、发布和存储一个新的 每次配置更改时自定义 nginx 映像。我们已经 为此设置了管道,所以这不会是一个大问题 操作上。
  2. 使用 vanilla nginx docker 镜像,创建一个 GCE 永久磁盘(我们在 Google Container Engine 上运行),在只读模式下在所有 nginx pod 之间共享。我看到的问题是如何以简单的方式将配置更新复制到磁盘?
  3. 有更好的选择吗?我查看了配置映射和/或机密(这将解决配置更新问题),但我认为它们不能包含任意数据,例如 nginx 配置文件。

【问题讨论】:

    标签: nginx kubernetes google-kubernetes-engine


    【解决方案1】:

    包含文本文件的 ConfigMap 应该完全没有问题。看看--from-file 选项:http://kubernetes.io/docs/user-guide/configmap/

    我不确定 ConfigMap 中的二进制文件。我可以添加 JPEG,但尝试读取对象会导致错误,因此这可能不是故意的(需要额外的 base64 编码等)。

    $ kubectl create configmap test --from-file=foo1=/tmp/scudcloud_U0GQ27N0M.jpg
    configmap "test" created
    $ kubectl get configmap test -o yaml
    error: error converting JSON to YAML: %!(EXTRA *errors.errorString=yaml: control characters are not allowed)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-11-12
      • 2021-10-16
      • 1970-01-01
      • 2019-01-11
      • 2020-06-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多