在入口控制器后面的Kubernetes集群中运行Graylog

问题描述 投票:0回答:1

我正在按照here的说明在Kubernetes集群中设置Graylog。我遇到的问题是环境变量GREYLOG_HTTP_EXTERNAL_URI的定义。该文档告诉我输入“我的IP地址”,然后从我能发现的内容中得知该变量是告诉浏览器在哪里可以找到Graylog API的信息。

但是,我的集群是通过充当入口控制器的NGINX反向代理访问的,这意味着浏览器无法直接访问Graylog吊舱,甚至无法通过http来访问它,因此它并不真正知道我应该在此赋什么值。我尝试了入口控制器的公共IP地址,但我得到的只是一个503。是否有一种方法可以允许访问Graylog API,同时仍将服务保护在入口控制器的后面?

kubernetes reverse-proxy graylog
1个回答
0
投票

这实际上取决于您如何公开它。默认情况下,它不暴露于外界。我们具有类型为graylog3NodePort服务,因此我们只有一个内部IP,该IP可从另一个Pod中访问或用于通过入口公开它。

$ kubectl get service -o wide
NAME         TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)                          AGE   SELECTOR
es6          NodePort    10.23.244.28    <none>        9200:30001/TCP,9300:30002/TCP    54m   service=es-deploy
graylog3     NodePort    10.23.242.128   <none>        9000:30003/TCP,12201:30004/TCP   54m   service=graylog-deploy
kubernetes   ClusterIP   10.23.240.1     <none>        443/TCP                          57m   <none>
mongo        ClusterIP   10.23.243.160   <none>        27017/TCP                        54m   service=mongo-deploy

如果我们卷曲此服务和端口从另一个容器,我们将获得以下输出:

$ kubectl exec -ti ubuntu -- curl 10.23.242.128:9000
<!DOCTYPE html>
<html>
  <head>
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="robots" content="noindex, nofollow">
    <meta charset="UTF-8">
    <title>Graylog Web Interface</title>
    <link rel="shortcut icon" href="http://your_ip_address:30003/assets/favicon.png">

  </head>
  <body>
    <script src="http://your_ip_address:30003/config.js"></script>

    <script src="http://your_ip_address:30003/assets/vendor.4024e2a8db732781a971.js"></script>

    <script src="http://your_ip_address:30003/assets/polyfill.a5e2fb591e8fd54ee4ef.js"></script>

    <script src="http://your_ip_address:30003/assets/builtins.a5e2fb591e8fd54ee4ef.js"></script>

    <script src="http://your_ip_address:30003/assets/plugin/org.graylog.plugins.threatintel.ThreatIntelPlugin/plugin.org.graylog.plugins.threatintel.ThreatIntelPlugin.b864ba54b438ac0bdc48.js"></script>

    <script src="http://your_ip_address:30003/assets/plugin/org.graylog.plugins.collector.CollectorPlugin/plugin.org.graylog.plugins.collector.CollectorPlugin.bcc87290018e859a8a9e.js"></script>

    <script src="http://your_ip_address:30003/assets/plugin/org.graylog.aws.AWSPlugin/plugin.org.graylog.aws.AWSPlugin.8ae7cb13983ce33eeb5b.js"></script>

    <script src="http://your_ip_address:30003/assets/app.a5e2fb591e8fd54ee4ef.js"></script>

  </body>
</html>

可以看出,http://your_ip_address:30003有一个参考。如果我们以这种方式保留它,则该应用程序将因引用不存在的内容而中断。

因此,我将更改2件事,使其在外界可见,并将GRAYLOG_HTTP_EXTERNAL_URI更改为我将获得的正确IP:

1-将graylog3服务类型从NodePort更改为LoadBalancer

编辑graylog3服务

$ kubectl edit service graylog3 

将类型更改为LoadBalancer

  type: LoadBalancer

由于我使用的是GKE,现在我有一个外部IP。

$ kubectl get service graylog3 
NAME       TYPE           CLUSTER-IP      EXTERNAL-IP       PORT(S)                          AGE
graylog3   LoadBalancer   10.23.242.128   104.197.191.236   9000:30003/TCP,12201:30004/TCP   63m

2-编辑我们的GRAYLOG_HTTP_EXTERNAL_URI,并用http://your_ip_address:30003代替http://104.197.191.236:9000

观察到这里我将端口从30003更改为9000,因为GKE始终公开原始端口,在您的情况下,它可能会有所不同。

$ kubectl edit deployments graylog-deploy 

所做的更改,现在让我们从任何控制台卷曲该端口(给它一些时间来重新创建Pod):

$ curl 104.197.191.236:9000
<!DOCTYPE html>
<html>
  <head>
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="robots" content="noindex, nofollow">
    <meta charset="UTF-8">
    <title>Graylog Web Interface</title>
    <link rel="shortcut icon" href="http://104.197.191.236:9000/assets/favicon.png">

  </head>
  <body>
    <script src="http://104.197.191.236:9000/config.js"></script>

    <script src="http://104.197.191.236:9000/assets/vendor.4024e2a8db732781a971.js"></script>

    <script src="http://104.197.191.236:9000/assets/polyfill.a5e2fb591e8fd54ee4ef.js"></script>

    <script src="http://104.197.191.236:9000/assets/builtins.a5e2fb591e8fd54ee4ef.js"></script>

    <script src="http://104.197.191.236:9000/assets/plugin/org.graylog.plugins.threatintel.ThreatIntelPlugin/plugin.org.graylog.plugins.threatintel.ThreatIntelPlugin.b864ba54b438ac0bdc48.js"></script>

    <script src="http://104.197.191.236:9000/assets/plugin/org.graylog.plugins.collector.CollectorPlugin/plugin.org.graylog.plugins.collector.CollectorPlugin.bcc87290018e859a8a9e.js"></script>

    <script src="http://104.197.191.236:9000/assets/plugin/org.graylog.aws.AWSPlugin/plugin.org.graylog.aws.AWSPlugin.8ae7cb13983ce33eeb5b.js"></script>

    <script src="http://104.197.191.236:9000/assets/app.a5e2fb591e8fd54ee4ef.js"></script>

  </body>
</html>

现在我们可以按预期看到http://104.197.191.236:9000,并且页面可以完美加载。

如果您的域名将重定向到您的应用程序IP,请将其放在此变量中。

© www.soinside.com 2019 - 2024. All rights reserved.