1

语境

我正在为涉及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.confsource)。

# /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>
4

0 回答 0