Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Fleet] Support inaccessible Elastic Package Registry in air-gapped environments #125005

Closed
kpollich opened this issue Feb 8, 2022 · 3 comments
Closed
Labels
Feature:EPM Fleet team's Elastic Package Manager (aka Integrations) project Team:Fleet Team label for Observability Data Collection Fleet team

Comments

@kpollich
Copy link
Member

kpollich commented Feb 8, 2022

Fleet should be able to offer a limited experience around browsing and installing packages even if an instance of EPR isn't accessible on the network.

Context

Existing support for air-gapped environments

Fleet's documentation currently details two approaches to supporting air-gapped environments:

  • Using a proxy server to allow access to https://epr.elastic.co
  • Self-hosting an instance of the EPR service via Docker

Bundled packages support

In #122297 (parent issue: #112095), we added support for bundling packages along with Kibana to remove Fleet's dependency on EPR during its setup process. We no longer need to have an accessible instance of EPR in order to install packages so long as they are bundled with Kibana. This allows us to preconfigure things like APM and Fleet Server integrations and avoid costly or potentially brittle network calls during Kibana's boot process.

Now that this functionality is in place, we should do a pass of Fleet's logic to account for cases in which EPR is inaccessible, and serve up a limited Fleet/Integrations experience.

Goals

  • Fleet Setup should succeed without an accessible EPR instance
  • A user should be able to view the "browse integrations" and "installed integrations" screens without an accessible EPR instance
    • Note: These screens won't include bundled packages as "browse-able" resources, but they should be accessible without error even if an EPR service is not reachable
  • A user should be able to view the "details" page for their installed integrations without an accessible EPR instance

Current State

Fleet Setup

Currently, if the EPR is inaccessible, Fleet Setup will succeed with a non-fatal error and will not install a package even if it's bundled. e.g.

image

This should be a relatively quick fix to catch this error and allow bundled install to continue. I believe this error comes from Fleet attempting to query the Registry for the latest version here:

const packagesResults = await Promise.allSettled(
packagesToInstall.map((pkg) => {
if (typeof pkg === 'string') return Registry.fetchFindLatestPackage(pkg);
return Promise.resolve(pkg);
})
);

@kpollich kpollich added Feature:EPM Fleet team's Elastic Package Manager (aka Integrations) project Team:Fleet Team label for Observability Data Collection Fleet team labels Feb 8, 2022
@elasticmachine
Copy link
Contributor

Pinging @elastic/fleet (Feature:EPM)

@elasticmachine
Copy link
Contributor

Pinging @elastic/fleet (Team:Fleet)

@kpollich kpollich changed the title [Fleet] Support inaccessible Elastic Package Registry in airgapped environments [Fleet] Support inaccessible Elastic Package Registry in air-gapped environments Feb 9, 2022
@kpollich
Copy link
Member Author

kpollich commented Feb 9, 2022

Closing in favor of #74614

@kpollich kpollich closed this as completed Feb 9, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Feature:EPM Fleet team's Elastic Package Manager (aka Integrations) project Team:Fleet Team label for Observability Data Collection Fleet team
Projects
None yet
Development

No branches or pull requests

2 participants