如何在Kubernetes(GKE)上处理Nginx的配置?

时间:2016-05-18 14:56:05

标签: nginx kubernetes google-kubernetes-engine

由于ingress resources的限制(在我的情况下,我需要超过50条路由,Google容器引擎不支持)我考虑使用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配置文件。

1 个答案:

答案 0 :(得分:3)

包含文本文件的ConfigMaps应该没问题。请查看--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)