nginx 配置到 kubernetes ingress-nginx

2024-03-19

我的 nginx pod 具有以下配置(此处部分显示):

        upstream something-1-8080 {
              server something-1.namespace:8080;
        }
        upstream something-2-8080 {
              server something-2.namespace:8080;
        }

        server {
              proxy_buffering off;
              proxy_redirect off;
              proxy_set_header X-Real-IP $remote_addr;
              access_log /dev/stdout timed_combined;

              listen 443 ssl http2;
              server_name some.server.net;
              location /api/v1/something1 {
                    rewrite ^/api/v1/something1/(.*)$ /$1  break;
                    rewrite ^/api/v1/something1(.*)$ /$1  break;
                    proxy_pass http://something-1-8080;
              }
              location /api/v1/something2 {
                    rewrite ^/api/v1/something2/(.*)$ /$1  break;
                    rewrite ^/api/v1/something2(.*)$ /$1  break;
                    proxy_pass http://something-2-8080;
              }
              location / {
                    proxy_pass  http://some.nice.server.com;

              }
              ssl_certificate     /etc/nginx/secret/tls.crt;
              ssl_certificate_key /etc/nginx/secret/tls.key;
        }

我想将我的 nginx 配置转换为 kubernetes ingress-nginx (入口资源)。 有没有办法使用 kubernetes Ingress 资源来实现此配置?阅读 ingress-nginx 文档我还没有找到如何将 proxy_pass 或多次重写映射到 Ingress 资源。我希望参考一些具有类似配置的详细文档或示例。


入口-nginxmandatory.yaml文件(文档指定用于部署 ingress-nginx 入口控制器)使用默认名称设置 k8s ConfigMapnginx-configuration在默认情况下ingress-nginx命名空间。请参阅强制文件的链接部署文档 https://kubernetes.github.io/ingress-nginx/deploy/.

然后,要配置您的 nginx conf 文件,您只需将键值对添加到nginx-configuration配置映射。可用的设置及其密钥位于 ingress-nginx 文档中配置映射 https://kubernetes.github.io/ingress-nginx/user-guide/nginx-configuration/configmap/。我发现它们与 nginx 配置名称(略有不同)。

下面是一个示例 ConfigMap.yaml 文件,其中包含我为控制器所做的一些设置。

kind: ConfigMap
apiVersion: v1
metadata:
  name: nginx-configuration
  namespace: ingress-nginx
  labels:
    app.kubernetes.io/name: ingress-nginx
    app.kubernetes.io/part-of: ingress-nginx
data:
  # This tells the nginx config to look at a different ConfigMap named custom-headers if you have a lot of headers you want to set
  proxy-set-headers: "ingress-nginx/custom-headers"

  # Suggested changes for interacting with Cloud service load balancing
  proxy-read-timeout: "660"  
  proxy-send-timeout: "660"

  # Custom code that can be referenced
  http-snippet: "map $http_upgrade $connection_upgrade {
                     default 'upgrade';
                     ''      close;
                }"
  proxy-body-size: "500m"

当您发布 ConfigMap 时,ingress-nginx 足够智能,可以即时更新自身,无需停机。您应该会看到日志中记录的更改。

最后,最好通过查看动态生成的 nginx.conf 文件来检查您的配置设置是否处于活动状态。我喜欢这样做文档中描述的 kubectl 插件 https://kubernetes.github.io/ingress-nginx/kubectl-plugin/.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

nginx 配置到 kubernetes ingress-nginx 的相关文章

随机推荐