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

虎眼120

我想描述我Kubernetes集群内建立Graylog这里我遇到的问题是环境变量GREYLOG_HTTP_EXTERNAL_URI的定义。该文档告诉我输入“我的IP地址”,然后从我能发现的内容中得知该变量是告诉浏览器在哪里可以找到Graylog API的信息。

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

沃特尼

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

$ 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

如果我们将该服务和端口从另一个Pod中卷曲,则会得到以下输出:

$ 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-创建入口规则以公开Graylog:

这就是我的入口清单的样子

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: graylog
spec:
  backend:
    serviceName: graylog3
    servicePort: 9000
$ kubectl get ingresses 
NAME      HOSTS   ADDRESS          PORTS   AGE
graylog   *       34.107.139.231   80      56s

2 -我们的编辑GRAYLOG_HTTP_EXTERNAL_URI和替代http://your_ip_address:30003http://34.107.139.231:80

观察到这里我将port从更改为3000380因为我们的入口规则暴露在port上80

$ kubectl edit deployments graylog-deploy 

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

$ curl 34.107.139.231:80
<!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://34.107.139.231:80/assets/favicon.png">

  </head>
  <body>
    <script src="http://34.107.139.231:80/config.js"></script>

    <script src="http://34.107.139.231:80/assets/vendor.4024e2a8db732781a971.js"></script>

    <script src="http://34.107.139.231:80/assets/polyfill.a5e2fb591e8fd54ee4ef.js"></script>

    <script src="http://34.107.139.231:80/assets/builtins.a5e2fb591e8fd54ee4ef.js"></script>

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

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

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

    <script src="http://34.107.139.231:80/assets/app.a5e2fb591e8fd54ee4ef.js"></script>

  </body>
</html>

现在我们可以看到http://34.107.139.231:80/预期的结果,并且页面可以完美加载。

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何为Kubernetes集群部署入口控制器

Kubernetes:通过 traefik 入口控制器处理与集群中多个 LoadBalancer 的连接

Kubernetes入口控制器

UIPageViewController中的控制器后面的黑色背景

在 azure kubernetes 中设置入口控制器

在名称空间Kubernetes中创建入口控制器

在Kubernetes NGINX入口控制器后面托管具有相对URL的Webapp

在同一kubernetes集群上安装两个traefik入口控制器

与后面的视图控制器交互

Kubernetes入口控制器-错误:ImagePullBackOff

kubernetes入口控制器CrashLoopBackOff错误

Kubernetes - 入口控制器的 RBAC 问题

入口控制器和Google kubernetes

多个主机Kubernetes入口控制器

Kubernetes 中的复制控制器 V/S 入口控制器

nginx入口控制器种类之间的区别:服务与种类:入口与种类:Kubernetes中的configMap

在同一个 AKS 集群中安装多个 nginx 入口控制器实例

ISP 路由器后面的 Kubernetes 集群

在运行 nginx 入口控制器 kubernetes 时想要服务的(内部)名称

具有集群 ip 服务和默认 nginx 的 kubernetes 入口控制器无法按预期工作

Kubernetes (1.20) 集群中的 Graylog

如何在 kubernetes 中創建多個 nginx 入口控制器

在Kubernetes NGINX反向代理入口控制器中按路径重写

Kubernetes 中没有负载均衡器的 Nginx 入口控制器

kubernetes nginx入口控制器/缓存静态资产

kubernetes 入口控制器不转发请求标头

Kubernetes和Nginx入口控制器出现413错误

Nginx入口控制器如何在Kubernetes上工作?

Kubernetes NGINX入口控制器未获取TLS证书