语境
我正在为涉及Citrix Netscaler的客户端开发 POC 。我的整个演示是一个docker-compose.yml
:
- 不同的数据库管理系统
- 一些网络服务
- 我的监控解决方案(grafana、prometheus、telegraf)
我想将此图像用作Web 服务的反向代理,并使用prometheus监视此服务。
需要
我想设置一些东西,以便运行演示不需要手动操作。在上下文中nginx
,我只需将相关的 conf 文件挂载在/etc/nginx/conf.d
. 使用 Citrix netscaler
,我不确定
- 是否有可能
- 如何继续(我能找到的唯一文档显示了一个非常图形化/复杂的过程)
简而言之,我希望能够通过覆盖一些配置文件将 http 请求路由到不同的 Web 服务,如下所示:
netscaler:
image: store/citrix/netscalercpx:12.0-56.20
container_name: ws-netscaler
ports:
- 444:443
- 81:80
expose:
- 161
volumes:
- ./netscaler/some.conf:/nsconfig/some.conf:ro # what I am trying to achieve
environment:
- EULA=yes
cap_add:
- NET_ADMIN
ulimits:
nproc: 1
关于此特定图像
似乎所有netscaler
相关文件都在这里
root@61baa67a839f:/# ls /netscaler
cli_script.sh nitro ns_service_stop nscli_linux nsconmsg nsnetsvc nssslgen pitboss
docker_startup.sh ns_reboot nsaggregatord nsconfigaudit nslinuxtimer nsppe nstraceaggregator showtechsupport.pl
netscaler.conf ns_service_start nsapimgr nsconfigd nslped nssetup_linux nstracemergenclean.sh snmpd
和这里
root@61baa67a839f:/# ls -R nsconfig
nsconfig:
dns monitors nsboot.conf snmpd.conf ssl
nsconfig/dns:
nsconfig/monitors:
nsconfig/ssl:
ns-root.cert ns-root.req ns-server.cert ns-server.req ns-sftrust-root.key ns-sftrust-root.srl ns-sftrust.der ns-sftrust.req
ns-root.key ns-root.srl ns-server.key ns-sftrust-root.cert ns-sftrust-root.req ns-sftrust.cert ns-sftrust.key ns-sftrust.sig
基于nsboot.conf
的内容
root@61baa67a839f:/# cat /nsconfig/nsboot.conf
add route 0 0 172.18.0.1
set rnat 192.0.0.0 255.255.255.0 -natip 172.18.0.2
add ssl certkey ns-server-certificate -cert ns-server.cert -key ns-server.key
set tcpprofile nstcp_default_profile mss 1460
set ns hostname 61baa67a839f
和这个文档,我假设这就是地方。我这样假设是对的吗?
编辑
覆盖nsboot.conf
没有按预期工作,因为这个文件很可能是由entrypoint.sh
. 我最终得到了多个定义。似乎正确的方法是注入/etc/cpx.conf
(source)。
# /etc/cpx.conf
WS_ADDRESS=$(getent hosts some_web_service | awk '{ print $1 }')
add cs vserver some_ws HTTP $WS_ADDRESS 5000
但是我无法通过netscaler
(主要是我还不懂NetScaler CLI)访问资源
$ curl http://localhost:5000/hello
Hello, World!%
$ curl http://localhost:81/some_ws/hello
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>404 Not Found</title>
</head><body>
<h1>Not Found</h1>
<p>The requested URL /some_ws/hello was not found on this server.</p>
</body></html>