在 kubernetes 部署中配置 Varnish 后端
Configure Varnish backend in kubernetes deployment
我正在尝试启动一个 Varnish 实例来加速一个缓慢但静态的服务端点。该服务已经 运行 在 Kubernetes 集群中,因此我将设置基于官方 docker 图像并遵循将 VCL 文件烘焙到图像中的建议:
FROM varnish:6.2
COPY default.vcl /etc/varnish/
我从 default.vcl
中的少量配置开始:
vcl 4.0;
backend default {
.host = "172.17.0.1:8018"; # IP for local experimentation
}
# only cache '/v1/xyz/...'
sub vcl_recv {
if (req.url ~ "^/v1/xyz/") {
return (hash);
}
return (pass);
}
我希望能够使用 env vars 或 cli args 在部署文件中声明目标后端。
-b
标志似乎非常适合这项工作,但因 Error: Only one of -b or -f can be specified
而失败。
并且在 backend
块中使用 std.getenv
也不起作用:
import std;
backend default {
.host = std.getenv("VARNISH_TAGET_HOST");
}
结果
Expected CSTR got 'std'
(program line 369), at
('/etc/varnish/default.vcl' Line 6 Pos 17)
.host = std.getenv("VARNISH_TAGET_HOST");
----------------###------------------------------
有什么方法(不包括 sed
之类的 hack)可以配置后端而不用硬编码到 VCL 中吗?
Varnish Enterprise 具有动态后端
Varnish Cache,Varnish 的开源版本,只允许静态后端定义。
您可以实时定义后端的唯一方法是使用 Varnish Enterprise,该软件的商业版本.
有关 动态后端 功能的详细信息,请参阅 https://docs.varnish-software.com/varnish-cache-plus/vmods/goto/。
为什么-b & -f不能组合
显然 -b
参数是以下命令的 shorthand:
varnishadm vcl.inline boot << EOF
vcl 4.1;
backend default {
.host = "<addr>";
}
EOF
所以实际上 -b
已经在后台创建并加载了 VCL,这使得这个选项与 -f
互斥
我正在尝试启动一个 Varnish 实例来加速一个缓慢但静态的服务端点。该服务已经 运行 在 Kubernetes 集群中,因此我将设置基于官方 docker 图像并遵循将 VCL 文件烘焙到图像中的建议:
FROM varnish:6.2
COPY default.vcl /etc/varnish/
我从 default.vcl
中的少量配置开始:
vcl 4.0;
backend default {
.host = "172.17.0.1:8018"; # IP for local experimentation
}
# only cache '/v1/xyz/...'
sub vcl_recv {
if (req.url ~ "^/v1/xyz/") {
return (hash);
}
return (pass);
}
我希望能够使用 env vars 或 cli args 在部署文件中声明目标后端。
-b
标志似乎非常适合这项工作,但因 Error: Only one of -b or -f can be specified
而失败。
并且在 backend
块中使用 std.getenv
也不起作用:
import std;
backend default {
.host = std.getenv("VARNISH_TAGET_HOST");
}
结果
Expected CSTR got 'std'
(program line 369), at
('/etc/varnish/default.vcl' Line 6 Pos 17)
.host = std.getenv("VARNISH_TAGET_HOST");
----------------###------------------------------
有什么方法(不包括 sed
之类的 hack)可以配置后端而不用硬编码到 VCL 中吗?
Varnish Enterprise 具有动态后端
Varnish Cache,Varnish 的开源版本,只允许静态后端定义。
您可以实时定义后端的唯一方法是使用 Varnish Enterprise,该软件的商业版本.
有关 动态后端 功能的详细信息,请参阅 https://docs.varnish-software.com/varnish-cache-plus/vmods/goto/。
为什么-b & -f不能组合
显然 -b
参数是以下命令的 shorthand:
varnishadm vcl.inline boot << EOF
vcl 4.1;
backend default {
.host = "<addr>";
}
EOF
所以实际上 -b
已经在后台创建并加载了 VCL,这使得这个选项与 -f