我的 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(使用前将#替换为@)