Closed
Conversation
Contributor
|
Pinging @elastic/kibana-platform |
spacedragon
reviewed
Jun 4, 2019
toddself
commented
Jun 4, 2019
mshustov
reviewed
Jun 5, 2019
Contributor
mshustov
left a comment
There was a problem hiding this comment.
probably this PR is not finished yet, so I stop commenting 😅
2657123 to
2c7563f
Compare
Contributor
Author
|
@restrry @dover @spacedragon this is ready for a final review. i'm starting to write tests for it. |
spacedragon
reviewed
Jun 10, 2019
zfy0701
reviewed
Jun 11, 2019
Contributor
zfy0701
left a comment
There was a problem hiding this comment.
unless you plan to do it later, otherwise I think last week we agree on implement based on optimistic concurrent control, which means we need to take version query parameter to the request and properly handle it if the update fail
db7a87b to
7bd4d7c
Compare
33922df to
603889e
Compare
Contributor
💔 Build Failed |
Contributor
💔 Build Failed |
This was referenced Jul 25, 2019
Contributor
|
Closing this for now |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
This is an x-pack plugin to implement a request proxy system for kibana.
This allows parts of kibana to register as the responsible instance for a certain
resource and then allow other kibana instances to discover this information
and proxy requests for that resource back to the responsible instance.
This initial implementation is based around the needs for the code plugin, but
the idea is make this generic enough for use in other parts of the system.
There are a few pending issues:
Checklist
Use
strikethroughsto remove checklist items you don't feel are applicable to this PR.This was checked for cross-browser compatibility, including a check against IE11Any text added follows EUI's writing guidelines, uses sentence case text and includes i18n supportThis was checked for keyboard-only and screenreader accessibilityFor maintainers
DevDoc
This PR implements an internal proxy mechanism for a collection of Kibana nodes living behind the same load balancer, with a shared mapping for resources stored in the backing Elasticsearch store.
The proxy allows a plugin developer to register resources with specific nodes, and then forward requests for those resources to the responsible nodes, so that the data may be returned to the user requesting it.
The end-user must provide SSL certificates and keys for the server and client to communicate via Mutual TLS authorization, securing any internal data from easily leaking out. If the SSL certificates are self-signed, the signing certificate authority will also need to be provided. Information on generating the keys, certificates and authorities may be found in the Elasticsearch encrypted communications guide. The proxy will throw an error on start if the TLS configuration has not been provided.
This introduces several new configuration options under the
xpack.proxypath:updateInterval- the frequency (in ms) that the nodes should verify their availabilitytimeoutThreshold- the maximum length of time (in ms) that a node can go without checking inport- the port number that the proxy server should be listening onmaxRetry- the number of times the proxy should attempt to request the remote resource before giving uprequestBackoff- how long the proxy should wait before re-requesting an unavailable resourceThe following configuration options are the same as from
server.ssl:cert- the TLS certificate to usekey- the key for this TLS certificateca- the certificate authority used to generate this certificatecipherSuites- the cipher suites to usesupportedProtocols- the protocols supported by the proxyWhen instantiated,
proxy.setup()returns:And
proxy.start()returns: