【发布时间】:2020-11-30 21:38:25
【问题描述】:
我正在尝试启动 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-like hacks)我可以配置后端而不将其硬编码到 VCL 中?
【问题讨论】:
标签: kubernetes configuration varnish varnish-vcl varnish-4