0

在 OpenDistro Helm README.md 中,使用自定义证书的示例安全 Kibana 配置定义:

elasticsearch.hosts: https://elasticsearch.example.com:443

这意味着 kubernetes 集群外部的 DNS 主机名。但是,使用默认值而不使用自定义证书时生成的名称会导致:

    # If no custom configuration provided, default to internal DNS
    - name: ELASTICSEARCH_HOSTS
      value: https://opendistro-es-client-service:9200

来自 kibana-deployment.yaml:value: https://{{ template "opendistro-es.fullname" . }}-client-service:9200

典型的 Kibana config.yml 不应该也使用内部 DNS,因此仍然是 opendistro-es-client-service:9200 或 opendistro-es-client-service.default.svc.cluster.local:9200,假设为例如,默认命名空间?为什么使用内部 DNS?

更新:对于 elasticsearch.config(复制到 elasticsearch.yml),opendistro_security.nodes_dn 有一个类似的问题:

   # See: https://github.com/opendistro-for-elasticsearch/security/blob/master/securityconfig/elasticsearch.yml.example#L17
opendistro_security.nodes_dn:
  - 'CN=nodes.example.com'

它没有在我能找到的任何地方拼出,但我假设elasticsearch.ssl.transport.existingCertSecret这是来自.定义的证书的主题的 CN 同样,如果有的话,这些不应该是内部 kubernetes dns 名称吗?

opendistro_security.ssl.transport.enforce_hostname_verification还是假的没关系”

  • 默认是true
  • 默认值elasticsearch.yml(根据 helm README.md)为 false。
  • 实际示例(在 README.md 中进一步向下)没有设置它,所以大概是true.
  • 但实际的 values.yaml 有一个注释掉的值设置为false. (我认为您应该在定义配置时取消注释,添加自己的证书时必须这样做)。
4

1 回答 1

0

您应该创建自己的证书(最佳实践是为 node/admin/rest 创建单独的证书)并将它们注入主 pod。使用 kibana.yaml 中的这些证书来建立与您的 ES 集群的连接。

主机的值是自动创建的,并且与集群上的 ES 客户端服务对象相同。这就是 Kibana 知道连接位置的方式,因为该服务正在将请求路由到您的主 pod。

于 2021-05-26T19:40:27.763 回答