我目前正在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: /(.*)