在具有TLS加密的入口控制器后面的Kubernetes集群中运行Graylog

时间:2020-03-26 13:27:47

标签: ssl kubernetes nginx-ingress graylog

我目前正在here中所述在Kubernetes集群中设置Graylog。我还想使用NGINX反向代理作为入口控制器来加密到群集的数据流量,因此该控制器是群集中唯一需要关心https的部分,而我的实际应用不需要。这是我的ingress.yaml:

import numpy as np
p = np.array([1.0, 0.0, 1.0, 0.3])

q1 = p[:]

np.shares_memory(p, q1)
# returns:
True

当我尝试访问my-app.com/graylog/上的Graylog Web界面时,当浏览器尝试加载Graylog的index.html所需的脚本(似乎指示为http /)时,我收到很多混合内容警告https问题。我按照these的说明将我的自签名证书转换为所需的格式,将其添加到我的JVM信任库中,还在集群中创建了tls机密,但仍然无法正常工作。

页面上显示:

可以使用生成的graylog-certificate.pem和graylog-key.pem 在Graylog配置文件中。

但是我没有Graylog配置文件,只有.yaml文件,而且我不知道将新创建的证书/秘密放在哪里,以便Graylog识别它们。


更新

所以我想出了如何将NGINX配置文件引入Kubernetes。在这里:

p = np.array([1.0, 0.0, 1.0, 0.3])

q2 = p[1::2]
print(q2)
#prints:
[0.  0.3]

# setting a value of q2 changes p
q2[0] = 10.0
p
# returns:
array([ 1. , 10. ,  1. ,  0.3])

我再也没有收到任何混合内容警告,所以这似乎行得通,但是现在我收到了MIME类型的错误,表示浏览器得到的不是HTML所需的JavaScript文件。遵循到其中一个脚本的路由,返回到Graylogs index.html,因此我的假设是请求路径中存在错误,这导致将请求蜂定向到登录页面作为默认行为。

我graylog.yaml中的GREYLOG_HTTP_EXTERNAL_URI是:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: my-ingress
  namespace: my-namespace
  annotations:
    kubernetes.io/ingress.class: "nginx"
    nginx.ingress.kubernetes.io/use-regex: "true"
spec:
  tls:
  - hosts:
    - my-app.com
    secretName: my-certificat
  rules:
  - host: my-app.com
    http:
      paths:
      - backend:
          serviceName: some-service
          servicePort: 8092
        path: /api/v1.0/(.*)
      - backend:
          serviceName: graylog3
          servicePort: 9000
        path: /api/(.*)
      - backend:
          serviceName: graylog3
          servicePort: 9000
        path: /graylog/(.*)
      - backend:
          serviceName: some-other-service
          servicePort: 15672
        path: /something/(.*)
      - backend:
          serviceName: my-app
          servicePort: 80
        path: /(.*)

0 个答案:

没有答案