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

标签 nginx kubernetes google-kubernetes-engine

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

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

    包含文本文件的 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)
    

    关于nginx - 如何在 Kubernetes (GKE) 上处理 Nginx 的配置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37303278/

    相关文章:

    带有 redis-server 和 nginx 的 Django channel

    docker - 如何使用dockerfile修改nginx访问和错误日​​志位置?

    docker - Nginx、Docker、Gunicorn 和 Flask 的代理重定向错误

    kubernetes - 标签部署 pod 模板

    bash - kubectl bash 完成在 ubuntu docker 容器中不起作用

    nginx如何重定向到本地主机中的不同路由

    java - 如何在 Kubernetes Java 应用程序中获取当前 Pod

    kubernetes - 错误 : failed to discover supported resources kubernetes google cloud platform

    kubernetes - 创建指向两个服务的 Kubernetes 入口

    https - HTTPS负载均衡器以在Google Kubernetes上公开工作负载